mirror of
https://github.com/alexcrea/CustomAnvil.git
synced 2026-06-23 16:16:17 +02:00
Start to create Enchantment sub setting gui & enchantment conflict gui
This commit is contained in:
parent
dc35d59077
commit
814a8a2c89
13 changed files with 297 additions and 65 deletions
|
|
@ -3,12 +3,18 @@ package xyz.alexcrea.cuanvil.group
|
|||
import org.bukkit.Material
|
||||
import org.bukkit.enchantments.Enchantment
|
||||
|
||||
class EnchantConflictGroup(private val cantConflict: AbstractMaterialGroup, private val minBeforeBlock: Int){
|
||||
class EnchantConflictGroup(
|
||||
val name: String,
|
||||
private val cantConflict: AbstractMaterialGroup,
|
||||
private val minBeforeBlock: Int){
|
||||
|
||||
private val enchantments = HashSet<Enchantment>()
|
||||
|
||||
fun addEnchantment(ench: Enchantment){
|
||||
enchantments.add(ench)
|
||||
fun addEnchantment(enchant: Enchantment){
|
||||
enchantments.add(enchant)
|
||||
}
|
||||
fun removeEnchantment(enchant: Enchantment){
|
||||
enchantments.remove(enchant)
|
||||
}
|
||||
fun allowed(enchants: Set<Enchantment>, mat: Material) : Boolean{
|
||||
if(enchantments.size < minBeforeBlock){
|
||||
|
|
|
|||
|
|
@ -10,11 +10,11 @@ class EnchantConflictManager {
|
|||
|
||||
companion object {
|
||||
// Path for the enchantments list
|
||||
private const val ENCH_LIST_PATH = "enchantments"
|
||||
const val ENCH_LIST_PATH = "enchantments"
|
||||
// Path for group list related to the conflict
|
||||
private const val CONFLICT_GROUP_PATH = "notAffectedGroups"
|
||||
const val CONFLICT_GROUP_PATH = "notAffectedGroups"
|
||||
// Path for the maximum number of enchantment before validating the conflict
|
||||
private const val ENCH_MAX_PATH = "maxEnchantmentBeforeConflict"
|
||||
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"
|
||||
|
|
@ -25,10 +25,12 @@ class EnchantConflictManager {
|
|||
}
|
||||
|
||||
private lateinit var conflictMap: HashMap<Enchantment, ArrayList<EnchantConflictGroup>>
|
||||
lateinit var conflictList: ArrayList<EnchantConflictGroup>
|
||||
|
||||
// Read and prepare all conflict
|
||||
fun prepareConflicts(config: ConfigurationSection, itemManager: ItemGroupManager){
|
||||
conflictMap = HashMap()
|
||||
conflictList = ArrayList()
|
||||
|
||||
val keys = config.getKeys(false)
|
||||
for (key in keys) {
|
||||
|
|
@ -36,6 +38,7 @@ class EnchantConflictManager {
|
|||
val conflict = createConflict(section,itemManager,key)
|
||||
if(conflict != null){
|
||||
addToMap(conflict)
|
||||
conflictList.add(conflict)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -45,13 +48,21 @@ class EnchantConflictManager {
|
|||
// Add the conflict to the map
|
||||
private fun addToMap(conflict: EnchantConflictGroup){
|
||||
conflict.getEnchants().forEach{ enchant ->
|
||||
if(!conflictMap.containsKey(enchant)){
|
||||
conflictMap[enchant] = ArrayList()
|
||||
}
|
||||
conflictMap[enchant]!!.add(conflict)
|
||||
addConflictToConflictMap(enchant, conflict);
|
||||
}
|
||||
}
|
||||
|
||||
fun addConflictToConflictMap(enchant: Enchantment, conflict: EnchantConflictGroup){
|
||||
if(!conflictMap.containsKey(enchant)){
|
||||
conflictMap[enchant] = ArrayList()
|
||||
}
|
||||
conflictMap[enchant]!!.add(conflict)
|
||||
}
|
||||
|
||||
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,
|
||||
|
|
@ -107,7 +118,7 @@ class EnchantConflictManager {
|
|||
}
|
||||
}
|
||||
// Return conflict
|
||||
return EnchantConflictGroup(finalGroup, minBeforeBlock)
|
||||
return EnchantConflictGroup(conflictName, finalGroup, minBeforeBlock)
|
||||
}
|
||||
|
||||
private fun findGroup(groupName: String, itemManager: ItemGroupManager, conflictName: String): AbstractMaterialGroup {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue