Make SlottedContainerBuilder be embedded inside SlottedContainer
This commit is contained in:
parent
b39c82e79a
commit
fc1d9d6448
@ -17,7 +17,7 @@ import ru.dbotthepony.mc.otm.data.codec.minRange
|
|||||||
import java.util.function.Predicate
|
import java.util.function.Predicate
|
||||||
|
|
||||||
class SlottedContainer(
|
class SlottedContainer(
|
||||||
slots: Collection<SlottedContainerBuilder.SlotProvider>,
|
slots: Collection<SlotProvider>,
|
||||||
private val stillValid: Predicate<Player>,
|
private val stillValid: Predicate<Player>,
|
||||||
private val globalChangeListeners: Array<Runnable>
|
private val globalChangeListeners: Array<Runnable>
|
||||||
) : ISlottedContainer, INBTSerializable<Tag> {
|
) : ISlottedContainer, INBTSerializable<Tag> {
|
||||||
@ -171,6 +171,51 @@ class SlottedContainer(
|
|||||||
notifyChanged()
|
notifyChanged()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun interface SlotProvider {
|
||||||
|
fun create(container: SlottedContainer, index: Int): ContainerSlot
|
||||||
|
}
|
||||||
|
|
||||||
|
class Builder {
|
||||||
|
private val slots = ArrayList<SlotProvider>()
|
||||||
|
private var stillValid = Predicate<Player> { true }
|
||||||
|
private val globalChangeListeners = ArrayList<Runnable>()
|
||||||
|
|
||||||
|
fun add(slot: SlotProvider): Builder {
|
||||||
|
slots.add(slot)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun add(amount: Int, provider: SlotProvider): Builder {
|
||||||
|
for (i in 0 until amount)
|
||||||
|
slots.add(provider)
|
||||||
|
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun stillValid(predicate: Predicate<Player>): Builder {
|
||||||
|
this.stillValid = predicate
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun onChanged(listener: Runnable): Builder {
|
||||||
|
globalChangeListeners.add(listener)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun copy(): Builder {
|
||||||
|
val copy = Builder()
|
||||||
|
copy.slots.addAll(slots)
|
||||||
|
copy.globalChangeListeners.addAll(globalChangeListeners)
|
||||||
|
copy.stillValid = stillValid
|
||||||
|
return copy
|
||||||
|
}
|
||||||
|
|
||||||
|
fun build(): SlottedContainer {
|
||||||
|
return SlottedContainer(slots, stillValid, globalChangeListeners.toTypedArray())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private val LOGGER = LogManager.getLogger()
|
private val LOGGER = LogManager.getLogger()
|
||||||
}
|
}
|
||||||
|
@ -1,48 +0,0 @@
|
|||||||
package ru.dbotthepony.mc.otm.container
|
|
||||||
|
|
||||||
import net.minecraft.world.entity.player.Player
|
|
||||||
import java.util.function.Predicate
|
|
||||||
|
|
||||||
class SlottedContainerBuilder {
|
|
||||||
fun interface SlotProvider {
|
|
||||||
fun create(container: SlottedContainer, index: Int): ContainerSlot
|
|
||||||
}
|
|
||||||
|
|
||||||
private val slots = ArrayList<SlotProvider>()
|
|
||||||
private var stillValid = Predicate<Player> { true }
|
|
||||||
private val globalChangeListeners = ArrayList<Runnable>()
|
|
||||||
|
|
||||||
fun add(slot: SlotProvider): SlottedContainerBuilder {
|
|
||||||
slots.add(slot)
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
fun add(amount: Int, provider: SlotProvider): SlottedContainerBuilder {
|
|
||||||
for (i in 0 until amount)
|
|
||||||
slots.add(provider)
|
|
||||||
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
fun stillValid(predicate: Predicate<Player>): SlottedContainerBuilder {
|
|
||||||
this.stillValid = predicate
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
fun onChanged(listener: Runnable): SlottedContainerBuilder {
|
|
||||||
globalChangeListeners.add(listener)
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
fun copy(): SlottedContainerBuilder {
|
|
||||||
val copy = SlottedContainerBuilder()
|
|
||||||
copy.slots.addAll(slots)
|
|
||||||
copy.globalChangeListeners.addAll(globalChangeListeners)
|
|
||||||
copy.stillValid = stillValid
|
|
||||||
return copy
|
|
||||||
}
|
|
||||||
|
|
||||||
fun build(): SlottedContainer {
|
|
||||||
return SlottedContainer(slots, stillValid, globalChangeListeners.toTypedArray())
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user