mirror of
https://github.com/alexcrea/CustomAnvil.git
synced 2026-06-23 16:16:17 +02:00
Add group select gui and edit group logic to be able to handle group set.
This commit is contained in:
parent
b4cb6c2848
commit
41235d3024
8 changed files with 216 additions and 19 deletions
|
|
@ -5,6 +5,7 @@ import java.util.*
|
|||
|
||||
abstract class AbstractMaterialGroup(private val name: String) {
|
||||
protected val includedMaterial by lazy {createDefaultSet()}
|
||||
protected var groupChangeNotified = false
|
||||
|
||||
/**
|
||||
* Get the group default set
|
||||
|
|
@ -33,6 +34,11 @@ abstract class AbstractMaterialGroup(private val name: String) {
|
|||
*/
|
||||
abstract fun addToPolicy(other : AbstractMaterialGroup)
|
||||
|
||||
/**
|
||||
* Get the group as a set
|
||||
*/
|
||||
abstract fun getMaterials(): MutableSet<Material>
|
||||
|
||||
/**
|
||||
* Get the group name in case something is wrong
|
||||
*/
|
||||
|
|
@ -41,10 +47,13 @@ abstract class AbstractMaterialGroup(private val name: String) {
|
|||
}
|
||||
|
||||
/**
|
||||
* Get the group as a set
|
||||
* Update the contained groups of this group
|
||||
*/
|
||||
fun getSet(): Set<Material> {
|
||||
return includedMaterial
|
||||
}
|
||||
abstract fun setGroups(groups: MutableSet<AbstractMaterialGroup>)
|
||||
|
||||
/**
|
||||
* Get the contained group of this material group
|
||||
*/
|
||||
abstract fun getGroups(): MutableSet<AbstractMaterialGroup>
|
||||
|
||||
}
|
||||
|
|
@ -8,7 +8,8 @@ class ExcludeGroup(name: String): AbstractMaterialGroup(name) {
|
|||
return EnumSet.allOf(Material::class.java)
|
||||
}
|
||||
|
||||
private val includedGroup = HashSet<AbstractMaterialGroup>()
|
||||
private var includedGroup: MutableSet<AbstractMaterialGroup> = HashSet()
|
||||
private val groupItems: MutableSet<Material> by lazy {createDefaultSet()}
|
||||
|
||||
override fun isReferencing(other: AbstractMaterialGroup): Boolean {
|
||||
for (materialGroup in includedGroup.iterator()) {
|
||||
|
|
@ -21,11 +22,33 @@ class ExcludeGroup(name: String): AbstractMaterialGroup(name) {
|
|||
|
||||
override fun addToPolicy(mat: Material) {
|
||||
includedMaterial.remove(mat)
|
||||
groupItems.remove(mat)
|
||||
}
|
||||
|
||||
override fun addToPolicy(other: AbstractMaterialGroup) {
|
||||
includedGroup.add(other)
|
||||
includedMaterial.removeAll(other.getSet())
|
||||
groupItems.removeAll(other.getMaterials());
|
||||
}
|
||||
|
||||
override fun setGroups(groups: MutableSet<AbstractMaterialGroup>) {
|
||||
groupItems.clear()
|
||||
groupItems.addAll(includedMaterial)
|
||||
|
||||
includedGroup.clear();
|
||||
groups.forEach { group ->
|
||||
if(!group.isReferencing(this)) {
|
||||
includedGroup.add(group);
|
||||
groupItems.removeAll(group.getMaterials())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun getGroups(): MutableSet<AbstractMaterialGroup> {
|
||||
return includedGroup;
|
||||
}
|
||||
|
||||
override fun getMaterials(): MutableSet<Material> {
|
||||
return groupItems;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,8 @@ class IncludeGroup(name: String): AbstractMaterialGroup(name) {
|
|||
return EnumSet.noneOf(Material::class.java)
|
||||
}
|
||||
|
||||
private val includedGroup = HashSet<AbstractMaterialGroup>()
|
||||
private var includedGroup: MutableSet<AbstractMaterialGroup> = HashSet()
|
||||
private val groupItems: MutableSet<Material> by lazy {createDefaultSet()}
|
||||
|
||||
override fun isReferencing(other: AbstractMaterialGroup): Boolean {
|
||||
for (materialGroup in includedGroup.iterator()) {
|
||||
|
|
@ -21,11 +22,34 @@ class IncludeGroup(name: String): AbstractMaterialGroup(name) {
|
|||
|
||||
override fun addToPolicy(mat: Material) {
|
||||
includedMaterial.add(mat)
|
||||
groupItems.add(mat)
|
||||
}
|
||||
|
||||
override fun addToPolicy(other: AbstractMaterialGroup) {
|
||||
includedGroup.add(other)
|
||||
includedMaterial.addAll(other.getSet())
|
||||
groupItems.addAll(other.getMaterials());
|
||||
}
|
||||
|
||||
override fun setGroups(groups: MutableSet<AbstractMaterialGroup>) {
|
||||
groupItems.clear();
|
||||
groupItems.addAll(includedMaterial)
|
||||
|
||||
includedGroup.clear();
|
||||
groups.forEach { group ->
|
||||
if(!group.isReferencing(this)){
|
||||
includedGroup.add(group);
|
||||
groupItems.addAll(group.getMaterials())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun getGroups(): MutableSet<AbstractMaterialGroup> {
|
||||
return includedGroup
|
||||
}
|
||||
|
||||
override fun getMaterials(): MutableSet<Material> {
|
||||
return groupItems
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -18,7 +18,7 @@ class ItemGroupManager {
|
|||
private val FUTURE_MATERIAL = setOf("PIGLIN_HEAD","BRUSH")
|
||||
}
|
||||
|
||||
private lateinit var groupMap : HashMap<String, AbstractMaterialGroup>
|
||||
lateinit var groupMap : HashMap<String, AbstractMaterialGroup>
|
||||
|
||||
// Read and create material groups
|
||||
fun prepareGroups(config: ConfigurationSection){
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue