create negative material set for iterator

This commit is contained in:
alexcrea 2026-04-23 12:23:40 +02:00
parent 41a62d810a
commit 440b2b2741
Signed by: alexcrea
GPG key ID: E346CD16413450E3
3 changed files with 27 additions and 5 deletions

View file

@ -6,7 +6,7 @@ import java.util.*
class ExcludeGroup(name: String) : AbstractMaterialGroup(name) { class ExcludeGroup(name: String) : AbstractMaterialGroup(name) {
override fun createDefaultSet(): MutableSet<NamespacedKey> { override fun createDefaultSet(): MutableSet<NamespacedKey> {
return NegativeSet(HashSet()) return NegativeMaterialSet()
} }
private var includedGroup: MutableSet<AbstractMaterialGroup> = HashSet() private var includedGroup: MutableSet<AbstractMaterialGroup> = HashSet()

View file

@ -0,0 +1,22 @@
package xyz.alexcrea.cuanvil.group
import org.bukkit.NamespacedKey
import xyz.alexcrea.cuanvil.util.MaterialUtil
import xyz.alexcrea.cuanvil.util.NegativeSet
class NegativeMaterialSet: NegativeSet<NamespacedKey>() {
override fun iterator(): MutableIterator<NamespacedKey> {
val materials = MaterialUtil.getMaterials()
materials.removeIf { negate.contains(it) }
return materials.iterator()
}
override fun isEmpty(): Boolean {
return negate.size >= MaterialUtil.getMaterialCount()
}
override val size get() = MaterialUtil.getMaterialCount() - negate.size
}

View file

@ -1,6 +1,6 @@
package xyz.alexcrea.cuanvil.group package xyz.alexcrea.cuanvil.util
class NegativeSet<T>(val negate: MutableSet<T>) : MutableSet<T> { open class NegativeSet<T>(val negate: MutableSet<T> = HashSet()) : MutableSet<T> {
override fun iterator(): MutableIterator<T> { override fun iterator(): MutableIterator<T> {
TODO("Not yet implemented") // can't be implemented I guess TODO("Not yet implemented") // can't be implemented I guess
@ -15,7 +15,7 @@ class NegativeSet<T>(val negate: MutableSet<T>) : MutableSet<T> {
} }
override fun addAll(elements: Collection<T>): Boolean { override fun addAll(elements: Collection<T>): Boolean {
return negate.removeAll(elements) return negate.removeAll(elements.toSet())
} }
override fun removeAll(elements: Collection<T>): Boolean { override fun removeAll(elements: Collection<T>): Boolean {
@ -34,7 +34,7 @@ class NegativeSet<T>(val negate: MutableSet<T>) : MutableSet<T> {
TODO("Not yet implemented") TODO("Not yet implemented")
} }
override val size get() = TODO("Not yet implemented") override val size: Int get() = TODO("Not yet implemented")
override fun contains(element: T): Boolean { override fun contains(element: T): Boolean {
return !negate.contains(element) return !negate.contains(element)