mirror of
https://github.com/alexcrea/CustomAnvil.git
synced 2026-06-24 00:26:16 +02:00
alpha version up & cleanup code.
This commit is contained in:
parent
1b83c8db81
commit
00fba2f4b0
40 changed files with 893 additions and 718 deletions
|
|
@ -11,13 +11,17 @@ class EnchantConflictManager {
|
|||
companion object {
|
||||
// Path for the enchantments list
|
||||
const val ENCH_LIST_PATH = "enchantments"
|
||||
|
||||
// Path for group list related to the conflict
|
||||
const val CONFLICT_GROUP_PATH = "notAffectedGroups"
|
||||
|
||||
// Path for the maximum number of enchantment before validating the conflict
|
||||
const val ENCH_MAX_PATH = "maxEnchantmentBeforeConflict"
|
||||
|
||||
// Path for a flag: if the enchantment will be used in the last supported version
|
||||
// TODO maybe replace this system by a list of "future" enchantment.
|
||||
private const val FUTURE_USE_PATH = "useInFuture"
|
||||
|
||||
// Default name for a joining group
|
||||
private const val DEFAULT_GROUP_NAME = "joinedGroup"
|
||||
}
|
||||
|
|
@ -26,64 +30,64 @@ class EnchantConflictManager {
|
|||
lateinit var conflictList: ArrayList<EnchantConflictGroup>
|
||||
|
||||
// Read and prepare all conflict
|
||||
fun prepareConflicts(config: ConfigurationSection, itemManager: ItemGroupManager){
|
||||
fun prepareConflicts(config: ConfigurationSection, itemManager: ItemGroupManager) {
|
||||
conflictMap = HashMap()
|
||||
conflictList = ArrayList()
|
||||
|
||||
val keys = config.getKeys(false)
|
||||
for (key in keys) {
|
||||
val section = config.getConfigurationSection(key)!!
|
||||
val conflict = createConflict(section,itemManager,key)
|
||||
if(conflict != null){
|
||||
addToMap(conflict)
|
||||
conflictList.add(conflict)
|
||||
}
|
||||
val conflict = createConflict(section, itemManager, key)
|
||||
|
||||
addToMap(conflict)
|
||||
conflictList.add(conflict)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Add the conflict to the map
|
||||
private fun addToMap(conflict: EnchantConflictGroup){
|
||||
conflict.getEnchants().forEach{ enchant ->
|
||||
addConflictToConflictMap(enchant, conflict);
|
||||
private fun addToMap(conflict: EnchantConflictGroup) {
|
||||
conflict.getEnchants().forEach { enchant ->
|
||||
addConflictToConflictMap(enchant, conflict)
|
||||
}
|
||||
}
|
||||
|
||||
fun addConflictToConflictMap(enchant: Enchantment, conflict: EnchantConflictGroup){
|
||||
if(!conflictMap.containsKey(enchant)){
|
||||
fun addConflictToConflictMap(enchant: Enchantment, conflict: EnchantConflictGroup) {
|
||||
if (!conflictMap.containsKey(enchant)) {
|
||||
conflictMap[enchant] = ArrayList()
|
||||
}
|
||||
conflictMap[enchant]!!.add(conflict)
|
||||
}
|
||||
|
||||
fun removeConflictFromMap(enchant: Enchantment, conflict: EnchantConflictGroup): Boolean{
|
||||
fun removeConflictFromMap(enchant: Enchantment, conflict: EnchantConflictGroup): Boolean {
|
||||
return conflictMap[enchant]!!.remove(conflict)
|
||||
}
|
||||
|
||||
// create and read a conflict from a yaml section
|
||||
private fun createConflict(section: ConfigurationSection,
|
||||
itemManager: ItemGroupManager,
|
||||
conflictName: String): EnchantConflictGroup? {
|
||||
private fun createConflict(
|
||||
section: ConfigurationSection,
|
||||
itemManager: ItemGroupManager,
|
||||
conflictName: String
|
||||
): EnchantConflictGroup {
|
||||
// Is it planed for the future
|
||||
val futureUse = section.getBoolean(FUTURE_USE_PATH,false)
|
||||
val futureUse = section.getBoolean(FUTURE_USE_PATH, false)
|
||||
// Create conflict
|
||||
val conflict = createConflictObject(section,itemManager,conflictName)
|
||||
val conflict = createConflictObject(section, itemManager, conflictName)
|
||||
// Read and add enchantment to conflict
|
||||
val enchantList = section.getStringList(ENCH_LIST_PATH)
|
||||
for (enchantName in enchantList) {
|
||||
val enchantKey = NamespacedKey.minecraft(enchantName)
|
||||
val enchant = Enchantment.getByKey(enchantKey)
|
||||
if(enchant == null){
|
||||
if(!futureUse){
|
||||
if (enchant == null) {
|
||||
if (!futureUse) {
|
||||
CustomAnvil.instance.logger.warning("Enchantment $enchantName do not exist but was asked for conflict $conflictName")
|
||||
}
|
||||
continue
|
||||
}
|
||||
conflict.addEnchantment(enchant)
|
||||
}
|
||||
if(conflict.getEnchants().size == 0){
|
||||
if(!futureUse){
|
||||
if (conflict.getEnchants().size == 0) {
|
||||
if (!futureUse) {
|
||||
CustomAnvil.instance.logger.warning("Conflict $conflictName do not have valid enchantment, it will not do anything")
|
||||
}
|
||||
}
|
||||
|
|
@ -91,12 +95,14 @@ class EnchantConflictManager {
|
|||
return conflict
|
||||
}
|
||||
|
||||
private fun createConflictObject(section: ConfigurationSection,
|
||||
itemManager: ItemGroupManager,
|
||||
conflictName: String): EnchantConflictGroup {
|
||||
private fun createConflictObject(
|
||||
section: ConfigurationSection,
|
||||
itemManager: ItemGroupManager,
|
||||
conflictName: String
|
||||
): EnchantConflictGroup {
|
||||
// Get the maximum number of enchantment before validating the conflict
|
||||
var minBeforeBlock = section.getInt(ENCH_MAX_PATH,0)
|
||||
if(minBeforeBlock < 0){
|
||||
var minBeforeBlock = section.getInt(ENCH_MAX_PATH, 0)
|
||||
if (minBeforeBlock < 0) {
|
||||
minBeforeBlock = 0
|
||||
CustomAnvil.instance.logger.warning("Conflict $conflictName have an invalid value of $ENCH_MAX_PATH")
|
||||
CustomAnvil.instance.logger.warning("It should be more or equal to 0. default to 0")
|
||||
|
|
@ -112,9 +118,13 @@ class EnchantConflictManager {
|
|||
return EnchantConflictGroup(conflictName, finalGroup, minBeforeBlock)
|
||||
}
|
||||
|
||||
private fun findGroup(groupName: String, itemManager: ItemGroupManager, conflictName: String): AbstractMaterialGroup {
|
||||
private fun findGroup(
|
||||
groupName: String,
|
||||
itemManager: ItemGroupManager,
|
||||
conflictName: String
|
||||
): AbstractMaterialGroup {
|
||||
val group = itemManager.get(groupName)
|
||||
if(group == null){
|
||||
if (group == null) {
|
||||
CustomAnvil.instance.logger.warning("Group $groupName do not exist but is ask by conflict $conflictName")
|
||||
return IncludeGroup("error_placeholder")
|
||||
}
|
||||
|
|
@ -122,7 +132,7 @@ class EnchantConflictManager {
|
|||
return group
|
||||
}
|
||||
|
||||
fun isConflicting(base: Set<Enchantment>,mat: Material, newEnchant: Enchantment): ConflictType {
|
||||
fun isConflicting(base: Set<Enchantment>, mat: Material, newEnchant: Enchantment): ConflictType {
|
||||
CustomAnvil.verboseLog("Testing conflict for ${newEnchant.key} on ${mat.key}")
|
||||
val conflictList = conflictMap[newEnchant] ?: return ConflictType.NO_CONFLICT
|
||||
CustomAnvil.verboseLog("Did not get skipped")
|
||||
|
|
@ -130,13 +140,13 @@ class EnchantConflictManager {
|
|||
var result = ConflictType.NO_CONFLICT
|
||||
for (conflict in conflictList) {
|
||||
CustomAnvil.verboseLog("Is against ${conflict.name}")
|
||||
val conflicting = conflict.allowed(base,mat)
|
||||
val conflicting = conflict.allowed(base, mat)
|
||||
CustomAnvil.verboseLog("Was against ${conflict.name} and conflicting: $conflicting ")
|
||||
if(!conflicting) {
|
||||
if(conflict.getEnchants().size <= 1){
|
||||
if (!conflicting) {
|
||||
if (conflict.getEnchants().size <= 1) {
|
||||
result = ConflictType.SMALL_CONFLICT
|
||||
CustomAnvil.verboseLog("Small conflict, continuing")
|
||||
}else{
|
||||
} else {
|
||||
return ConflictType.BIG_CONFLICT
|
||||
}
|
||||
}
|
||||
|
|
@ -146,7 +156,7 @@ class EnchantConflictManager {
|
|||
|
||||
}
|
||||
|
||||
enum class ConflictType{
|
||||
enum class ConflictType {
|
||||
NO_CONFLICT,
|
||||
SMALL_CONFLICT,
|
||||
BIG_CONFLICT
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue