mirror of
https://github.com/alexcrea/CustomAnvil.git
synced 2026-06-23 16:16:17 +02:00
code cleanup
This commit is contained in:
parent
39db70d7ad
commit
5ff096190f
2 changed files with 46 additions and 57 deletions
|
|
@ -11,8 +11,8 @@ class EnchantConflictGroup(
|
|||
) {
|
||||
|
||||
private val enchantments = HashSet<CAEnchantment>()
|
||||
private val conflictAfterLevel = HashMap<CAEnchantment, Int>()
|
||||
private val conflictBeforeLevel = HashMap<CAEnchantment, Int>()
|
||||
private val conflictsAfterLevel = HashMap<CAEnchantment, Int>()
|
||||
private val conflictsBeforeLevel = HashMap<CAEnchantment, Int>()
|
||||
|
||||
fun addEnchantment(enchant: CAEnchantment) {
|
||||
enchantments.add(enchant)
|
||||
|
|
@ -23,10 +23,10 @@ class EnchantConflictGroup(
|
|||
|
||||
private fun canBypassByBeforeLevel(enchants: Map<CAEnchantment, Int>): Boolean {
|
||||
// Either there no "conflict after"
|
||||
if(conflictAfterLevel.isEmpty()) return false
|
||||
if(conflictsAfterLevel.isEmpty()) return false
|
||||
|
||||
// Or we check if any conflict after enchantment is true
|
||||
for (entry in conflictAfterLevel) {
|
||||
for (entry in conflictsAfterLevel) {
|
||||
val current = enchants.getOrDefault(entry.key, 0)
|
||||
if(current > entry.value)
|
||||
return false
|
||||
|
|
@ -37,10 +37,10 @@ class EnchantConflictGroup(
|
|||
|
||||
private fun canBypassByAfterLevel(enchants: Map<CAEnchantment, Int>): Boolean {
|
||||
// Either there no "conflict after"
|
||||
if(conflictBeforeLevel.isEmpty()) return false
|
||||
if(conflictsBeforeLevel.isEmpty()) return false
|
||||
|
||||
// Or we check if any conflict after enchantment is true
|
||||
for (entry in conflictBeforeLevel) {
|
||||
for (entry in conflictsBeforeLevel) {
|
||||
val current = enchants.getOrDefault(entry.key, 0)
|
||||
if(current < entry.value)
|
||||
return false
|
||||
|
|
@ -96,33 +96,33 @@ class EnchantConflictGroup(
|
|||
}
|
||||
|
||||
fun getConflictAfters(): HashMap<CAEnchantment, Int> {
|
||||
return conflictAfterLevel
|
||||
return conflictsAfterLevel
|
||||
}
|
||||
|
||||
fun putConflictAfterLevel(enchantment: CAEnchantment, level: Int): Boolean {
|
||||
return null != (
|
||||
if(level < 0) conflictAfterLevel.remove(enchantment)
|
||||
else conflictAfterLevel.put(enchantment, level))
|
||||
if(level < 0) conflictsAfterLevel.remove(enchantment)
|
||||
else conflictsAfterLevel.put(enchantment, level))
|
||||
}
|
||||
|
||||
fun setConflictAfterLevel(conflictAfterLevel: HashMap<CAEnchantment, Int>) {
|
||||
this.conflictAfterLevel.clear()
|
||||
this.conflictAfterLevel.putAll(conflictAfterLevel)
|
||||
fun setConflictsAfterLevel(conflictAfterLevel: HashMap<CAEnchantment, Int>) {
|
||||
this.conflictsAfterLevel.clear()
|
||||
this.conflictsAfterLevel.putAll(conflictAfterLevel)
|
||||
}
|
||||
|
||||
fun getConflictBefores(): HashMap<CAEnchantment, Int> {
|
||||
return conflictBeforeLevel
|
||||
fun getConflictsBefore(): HashMap<CAEnchantment, Int> {
|
||||
return conflictsBeforeLevel
|
||||
}
|
||||
|
||||
fun putConflictBeforeLevel(enchantment: CAEnchantment, level: Int): Boolean {
|
||||
fun putConflictsBeforeLevel(enchantment: CAEnchantment, level: Int): Boolean {
|
||||
return null != (
|
||||
if(level < 0) conflictBeforeLevel.remove(enchantment)
|
||||
else conflictBeforeLevel.put(enchantment, level))
|
||||
if(level < 0) conflictsBeforeLevel.remove(enchantment)
|
||||
else conflictsBeforeLevel.put(enchantment, level))
|
||||
}
|
||||
|
||||
fun setConflictBeforeLevel(conflictBeforeLevel: HashMap<CAEnchantment, Int>) {
|
||||
this.conflictBeforeLevel.clear()
|
||||
this.conflictBeforeLevel.putAll(conflictBeforeLevel)
|
||||
fun setConflictsBeforeLevel(conflictBeforeLevel: HashMap<CAEnchantment, Int>) {
|
||||
this.conflictsBeforeLevel.clear()
|
||||
this.conflictsBeforeLevel.putAll(conflictBeforeLevel)
|
||||
}
|
||||
|
||||
fun getRepresentativeMaterial(): Material {
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import xyz.alexcrea.cuanvil.enchant.AdditionalTestEnchantment
|
|||
import xyz.alexcrea.cuanvil.enchant.CAEnchantment
|
||||
import xyz.alexcrea.cuanvil.enchant.CAEnchantmentRegistry
|
||||
import java.util.*
|
||||
import kotlin.collections.set
|
||||
|
||||
class EnchantConflictManager {
|
||||
|
||||
|
|
@ -118,48 +119,36 @@ class EnchantConflictManager {
|
|||
}
|
||||
}
|
||||
|
||||
//TODO find a way to dry this two ?
|
||||
val conflictAfterLevels = section.getConfigurationSection(CONFLICT_AFTER_LEVEL_LIST_PATH)
|
||||
if(conflictAfterLevels != null) {
|
||||
for (enchantName in conflictAfterLevels.getKeys(false)) {
|
||||
val enchants = getEnchantByIdentifier(enchantName)
|
||||
if (enchants.isEmpty()) {
|
||||
CustomAnvil.instance.logger.warning("Enchantment $enchantName do not exist but was asked for conflict after level for conflict $conflictName")
|
||||
continue
|
||||
}
|
||||
val conflictsAfterLevel = section.getConfigurationSection(CONFLICT_AFTER_LEVEL_LIST_PATH)
|
||||
val conflictsAfterMap = conflict.getConflictAfters()
|
||||
fetchConditionalRestriction(conflictsAfterMap, conflictsAfterLevel, conflictName)
|
||||
|
||||
val value = conflictAfterLevels.getInt(enchantName, -1)
|
||||
if(value < 0) continue
|
||||
|
||||
for (enchant in enchants) {
|
||||
val previous = conflict.getConflictAfters().getOrDefault(enchant, value)
|
||||
conflict.putConflictAfterLevel(enchant, value.coerceAtMost(previous))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val conflictBeforeLevels = section.getConfigurationSection(CONFLICT_BEFORE_LEVEL_LIST_PATH)
|
||||
if(conflictBeforeLevels != null) {
|
||||
for (enchantName in conflictBeforeLevels.getKeys(false)) {
|
||||
val enchants = getEnchantByIdentifier(enchantName)
|
||||
if (enchants.isEmpty()) {
|
||||
CustomAnvil.instance.logger.warning("Enchantment $enchantName do not exist but was asked for conflict after level for conflict $conflictName")
|
||||
continue
|
||||
}
|
||||
|
||||
val value = conflictBeforeLevels.getInt(enchantName, -1)
|
||||
if(value < 0) continue
|
||||
|
||||
for (enchant in enchants) {
|
||||
val previous = conflict.getConflictBefores().getOrDefault(enchant, value)
|
||||
conflict.putConflictBeforeLevel(enchant, value.coerceAtMost(previous))
|
||||
}
|
||||
}
|
||||
}
|
||||
val conflictsBeforeLevel = section.getConfigurationSection(CONFLICT_BEFORE_LEVEL_LIST_PATH)
|
||||
val conflictsBeforeMap = conflict.getConflictsBefore()
|
||||
fetchConditionalRestriction(conflictsBeforeMap, conflictsBeforeLevel, conflictName)
|
||||
|
||||
return conflict
|
||||
}
|
||||
|
||||
private fun fetchConditionalRestriction(restrictions: MutableMap<CAEnchantment, Int>, section: ConfigurationSection?, conflictName: String) {
|
||||
if(section == null) return
|
||||
for (enchantName in section.getKeys(false)) {
|
||||
val enchants = getEnchantByIdentifier(enchantName)
|
||||
if (enchants.isEmpty()) {
|
||||
CustomAnvil.instance.logger.warning("Enchantment $enchantName do not exist but was asked for conditional restriction for conflict $conflictName")
|
||||
continue
|
||||
}
|
||||
|
||||
val value = section.getInt(enchantName, -1)
|
||||
if(value < 0) continue
|
||||
|
||||
for (enchant in enchants) {
|
||||
val previous = restrictions.getOrDefault(enchant, value)
|
||||
restrictions[enchant] = value.coerceAtMost(previous)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun getEnchantByIdentifier(enchantName: String): List<CAEnchantment> {
|
||||
val key = NamespacedKey.fromString(enchantName)
|
||||
if (key != null) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue