Update tags datagen
This commit is contained in:
parent
3722d896f6
commit
e60dda4810
@ -47,10 +47,10 @@ fun addTags(tagsProvider: TagsProvider) {
|
|||||||
MBlocks.STORAGE_CABLE
|
MBlocks.STORAGE_CABLE
|
||||||
)
|
)
|
||||||
|
|
||||||
tagsProvider.items.appender(MItemTags.CRAFTING_TABLES).add(Items.CRAFTING_TABLE)
|
tagsProvider.items.Appender(MItemTags.CRAFTING_TABLES).add(Items.CRAFTING_TABLE)
|
||||||
tagsProvider.blocks.appender(MBlockTags.CRAFTING_TABLES).add(Blocks.CRAFTING_TABLE)
|
tagsProvider.blocks.Appender(MBlockTags.CRAFTING_TABLES).add(Blocks.CRAFTING_TABLE)
|
||||||
|
|
||||||
tagsProvider.items.appender(MItemTags.MINECART_CARGO_CRATES).add(MItems.CARGO_CRATE_MINECARTS.values)
|
tagsProvider.items.Appender(MItemTags.MINECART_CARGO_CRATES).add(MItems.CARGO_CRATE_MINECARTS.values)
|
||||||
|
|
||||||
tagsProvider.items.forge("hardened_glass").add(MRegistry.INDUSTRIAL_GLASS.allItems.values)
|
tagsProvider.items.forge("hardened_glass").add(MRegistry.INDUSTRIAL_GLASS.allItems.values)
|
||||||
tagsProvider.items.forge("hardened_glass/colorless").add(MRegistry.INDUSTRIAL_GLASS.item)
|
tagsProvider.items.forge("hardened_glass/colorless").add(MRegistry.INDUSTRIAL_GLASS.item)
|
||||||
@ -74,25 +74,25 @@ fun addTags(tagsProvider: TagsProvider) {
|
|||||||
MRegistry.INDUSTRIAL_GLASS.forEachBlock { s, _, block -> tagsProvider.blocks.forge("hardened_glass/$s").add(block) }
|
MRegistry.INDUSTRIAL_GLASS.forEachBlock { s, _, block -> tagsProvider.blocks.forge("hardened_glass/$s").add(block) }
|
||||||
MRegistry.INDUSTRIAL_GLASS_PANE.forEachBlock { s, _, block -> tagsProvider.blocks.forge("hardened_glass_panes/$s").add(block) }
|
MRegistry.INDUSTRIAL_GLASS_PANE.forEachBlock { s, _, block -> tagsProvider.blocks.forge("hardened_glass_panes/$s").add(block) }
|
||||||
|
|
||||||
tagsProvider.items.appender(MItemTags.INDUSTRIAL_GLASS).add(MRegistry.INDUSTRIAL_GLASS.allItems.values)
|
tagsProvider.items.Appender(MItemTags.INDUSTRIAL_GLASS).add(MRegistry.INDUSTRIAL_GLASS.allItems.values)
|
||||||
tagsProvider.blocks.appender(MBlockTags.INDUSTRIAL_GLASS).add(MRegistry.INDUSTRIAL_GLASS.allBlocks.values)
|
tagsProvider.blocks.Appender(MBlockTags.INDUSTRIAL_GLASS).add(MRegistry.INDUSTRIAL_GLASS.allBlocks.values)
|
||||||
tagsProvider.blocks.appender(MBlockTags.CARGO_CRATES).add(MRegistry.CARGO_CRATES.allBlocks.values)
|
tagsProvider.blocks.Appender(MBlockTags.CARGO_CRATES).add(MRegistry.CARGO_CRATES.allBlocks.values)
|
||||||
|
|
||||||
tagsProvider.items.appender(ItemTags.DOORS).add(MItems.TRITANIUM_DOOR.values)
|
tagsProvider.items.Appender(ItemTags.DOORS).add(MItems.TRITANIUM_DOOR.values)
|
||||||
tagsProvider.blocks.appender(BlockTags.DOORS).add(MBlocks.TRITANIUM_DOOR.values)
|
tagsProvider.blocks.Appender(BlockTags.DOORS).add(MBlocks.TRITANIUM_DOOR.values)
|
||||||
|
|
||||||
tagsProvider.items.appender(ItemTags.TRAPDOORS).add(MItems.TRITANIUM_TRAPDOOR.values)
|
tagsProvider.items.Appender(ItemTags.TRAPDOORS).add(MItems.TRITANIUM_TRAPDOOR.values)
|
||||||
tagsProvider.blocks.appender(BlockTags.TRAPDOORS).add(MBlocks.TRITANIUM_TRAPDOOR.values)
|
tagsProvider.blocks.Appender(BlockTags.TRAPDOORS).add(MBlocks.TRITANIUM_TRAPDOOR.values)
|
||||||
|
|
||||||
tagsProvider.blocks.appender(BlockTags.PRESSURE_PLATES).add(MRegistry.TRITANIUM_PRESSURE_PLATE.allBlocks.values)
|
tagsProvider.blocks.Appender(BlockTags.PRESSURE_PLATES).add(MRegistry.TRITANIUM_PRESSURE_PLATE.allBlocks.values)
|
||||||
|
|
||||||
tagsProvider.items.appender(MItemTags.MACHINES).add(MItems.MACHINES)
|
tagsProvider.items.Appender(MItemTags.MACHINES).add(MItems.MACHINES)
|
||||||
tagsProvider.blocks.appender(MBlockTags.MACHINES).add(MItems.MACHINES.stream().map { it!!.block })
|
tagsProvider.blocks.Appender(MBlockTags.MACHINES).add(MItems.MACHINES.stream().map { it!!.block })
|
||||||
|
|
||||||
tagsProvider.blocks.appender(BlockTags.ANVIL).add(MBlocks.TRITANIUM_ANVIL)
|
tagsProvider.blocks.Appender(BlockTags.ANVIL).add(MBlocks.TRITANIUM_ANVIL)
|
||||||
|
|
||||||
tagsProvider.items.appender(MItemTags.TRITANIUM_NUGGETS).add(MItems.TRITANIUM_NUGGET)
|
tagsProvider.items.Appender(MItemTags.TRITANIUM_NUGGETS).add(MItems.TRITANIUM_NUGGET)
|
||||||
tagsProvider.items.appender(MItemTags.NUGGETS).add(MItems.TRITANIUM_NUGGET)
|
tagsProvider.items.Appender(MItemTags.NUGGETS).add(MItems.TRITANIUM_NUGGET)
|
||||||
|
|
||||||
tagsProvider.items.forge("armors")
|
tagsProvider.items.forge("armors")
|
||||||
.add("helmets", MItems.TRITANIUM_HELMET)
|
.add("helmets", MItems.TRITANIUM_HELMET)
|
||||||
@ -113,30 +113,30 @@ fun addTags(tagsProvider: TagsProvider) {
|
|||||||
.add("shields", MItems.TRITANIUM_SHIELD)
|
.add("shields", MItems.TRITANIUM_SHIELD)
|
||||||
tagsProvider.items.forge("shears").add(MItems.TRITANIUM_SHEARS)
|
tagsProvider.items.forge("shears").add(MItems.TRITANIUM_SHEARS)
|
||||||
|
|
||||||
tagsProvider.blocks.appender(BlockTags.STAIRS)
|
tagsProvider.blocks.Appender(BlockTags.STAIRS)
|
||||||
.add(MRegistry.FLOOR_TILES_STAIRS.blocks.values)
|
.add(MRegistry.FLOOR_TILES_STAIRS.blocks.values)
|
||||||
.add(MRegistry.TRITANIUM_STAIRS.allBlocks.values)
|
.add(MRegistry.TRITANIUM_STAIRS.allBlocks.values)
|
||||||
.add(MRegistry.TRITANIUM_STRIPED_STAIRS.flatBlocks)
|
.add(MRegistry.TRITANIUM_STRIPED_STAIRS.flatBlocks)
|
||||||
.add(MBlocks.TRITANIUM_STRIPED_STAIRS)
|
.add(MBlocks.TRITANIUM_STRIPED_STAIRS)
|
||||||
|
|
||||||
tagsProvider.blocks.appender(BlockTags.SLABS)
|
tagsProvider.blocks.Appender(BlockTags.SLABS)
|
||||||
.add(MRegistry.TRITANIUM_SLAB.allBlocks.values)
|
.add(MRegistry.TRITANIUM_SLAB.allBlocks.values)
|
||||||
.add(MRegistry.TRITANIUM_STRIPED_SLAB.flatBlocks)
|
.add(MRegistry.TRITANIUM_STRIPED_SLAB.flatBlocks)
|
||||||
.add(MRegistry.FLOOR_TILES_SLAB.blocks.values)
|
.add(MRegistry.FLOOR_TILES_SLAB.blocks.values)
|
||||||
.add(MBlocks.TRITANIUM_STRIPED_SLAB)
|
.add(MBlocks.TRITANIUM_STRIPED_SLAB)
|
||||||
|
|
||||||
tagsProvider.blocks.appender(BlockTags.WALLS)
|
tagsProvider.blocks.Appender(BlockTags.WALLS)
|
||||||
.add(MRegistry.TRITANIUM_WALL.allBlocks.values)
|
.add(MRegistry.TRITANIUM_WALL.allBlocks.values)
|
||||||
.add(MRegistry.TRITANIUM_STRIPED_WALL.flatBlocks)
|
.add(MRegistry.TRITANIUM_STRIPED_WALL.flatBlocks)
|
||||||
.add(MBlocks.TRITANIUM_STRIPED_WALL)
|
.add(MBlocks.TRITANIUM_STRIPED_WALL)
|
||||||
|
|
||||||
tagsProvider.items.appender(ItemTags.SLABS)
|
tagsProvider.items.Appender(ItemTags.SLABS)
|
||||||
.add(MRegistry.TRITANIUM_SLAB.allItems.values)
|
.add(MRegistry.TRITANIUM_SLAB.allItems.values)
|
||||||
.add(MRegistry.TRITANIUM_STRIPED_SLAB.flatItems)
|
.add(MRegistry.TRITANIUM_STRIPED_SLAB.flatItems)
|
||||||
.add(MRegistry.FLOOR_TILES_SLAB.items.values)
|
.add(MRegistry.FLOOR_TILES_SLAB.items.values)
|
||||||
.add(MItems.TRITANIUM_STRIPED_SLAB)
|
.add(MItems.TRITANIUM_STRIPED_SLAB)
|
||||||
|
|
||||||
tagsProvider.items.appender(ItemTags.WALLS)
|
tagsProvider.items.Appender(ItemTags.WALLS)
|
||||||
.add(MRegistry.TRITANIUM_WALL.allItems.values)
|
.add(MRegistry.TRITANIUM_WALL.allItems.values)
|
||||||
.add(MRegistry.TRITANIUM_STRIPED_WALL.flatItems)
|
.add(MRegistry.TRITANIUM_STRIPED_WALL.flatItems)
|
||||||
.add(MItems.TRITANIUM_STRIPED_WALL)
|
.add(MItems.TRITANIUM_STRIPED_WALL)
|
||||||
|
@ -22,62 +22,110 @@ import ru.dbotthepony.mc.otm.datagen.DataGen
|
|||||||
import java.util.stream.Stream
|
import java.util.stream.Stream
|
||||||
import net.minecraft.data.tags.TagsProvider as MinecraftTagsProvider
|
import net.minecraft.data.tags.TagsProvider as MinecraftTagsProvider
|
||||||
|
|
||||||
interface MTagAppender<T> {
|
private fun <T : Any> vanillaLookup(key: ResourceKey<Registry<T>>): (T) -> ResourceLocation {
|
||||||
fun add(value: T): MTagAppender<T>
|
|
||||||
fun addSafe(value: T): Boolean
|
|
||||||
fun add(vararg values: T): MTagAppender<T>
|
|
||||||
fun addSafe(vararg values: T): Boolean {
|
|
||||||
var any = false
|
|
||||||
for (value in values) any = addSafe(value)
|
|
||||||
return any
|
|
||||||
}
|
|
||||||
|
|
||||||
fun add(values: Collection<T>): MTagAppender<T>
|
|
||||||
fun add(values: Stream<out T>): MTagAppender<T> = add(values.toList())
|
|
||||||
|
|
||||||
fun addSafe(values: Collection<T>): Boolean {
|
|
||||||
var any = false
|
|
||||||
for (value in values) any = addSafe(value)
|
|
||||||
return any
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
interface ForgeTagAppender<T> : MTagAppender<T> {
|
|
||||||
fun add(key: String, value: T): ForgeTagAppender<T>
|
|
||||||
fun addSafe(key: String, value: T): Boolean
|
|
||||||
fun add(key: String, vararg values: T): ForgeTagAppender<T>
|
|
||||||
fun addSafe(key: String, vararg values: T): Boolean {
|
|
||||||
var any = false
|
|
||||||
for (value in values) any = addSafe(key, value)
|
|
||||||
return any
|
|
||||||
}
|
|
||||||
|
|
||||||
fun add(key: String, values: Collection<T>): ForgeTagAppender<T>
|
|
||||||
|
|
||||||
fun addSafe(key: String, values: Collection<T>): Boolean {
|
|
||||||
var any = false
|
|
||||||
for (value in values) any = addSafe(key, value)
|
|
||||||
return any
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun <T> vanillaLookup(key: ResourceKey<Registry<T>>): (T) -> ResourceLocation? {
|
|
||||||
val registry by lazy { (BuiltInRegistries.REGISTRY.get(key.location()) ?: throw NoSuchElementException("No such registry $key")) as Registry<T> }
|
val registry by lazy { (BuiltInRegistries.REGISTRY.get(key.location()) ?: throw NoSuchElementException("No such registry $key")) as Registry<T> }
|
||||||
return { registry.getKey(it) }
|
return { registry.getKey(it) ?: throw NoSuchElementException("Registry $key does not contain $it") }
|
||||||
}
|
}
|
||||||
|
|
||||||
class TagsProvider(
|
class TagsProvider(private val event: GatherDataEvent) {
|
||||||
private val event: GatherDataEvent
|
inner class Delegate<T : Any> private constructor(key: ResourceKey<Registry<T>>, val lookup: (T) -> ResourceLocation) : MinecraftTagsProvider<T>(event.generator.packOutput, key, event.lookupProvider, DataGen.MOD_ID, event.existingFileHelper) {
|
||||||
) {
|
constructor(registry: IForgeRegistry<T>) : this(registry.registryKey, { registry.getKey(it) ?: throw NoSuchElementException("Registry $registry does not contain $it") })
|
||||||
inner class Delegate<T> private constructor(key: ResourceKey<Registry<T>>, val lookup: (T) -> ResourceLocation?) : MinecraftTagsProvider<T>(event.generator.packOutput, key, event.lookupProvider, DataGen.MOD_ID, event.existingFileHelper) {
|
|
||||||
constructor(registry: IForgeRegistry<T>) : this(registry.registryKey, registry::getKey)
|
|
||||||
constructor(key: ResourceKey<Registry<T>>) : this(key, vanillaLookup(key))
|
constructor(key: ResourceKey<Registry<T>>) : this(key, vanillaLookup(key))
|
||||||
|
|
||||||
init {
|
init {
|
||||||
event.generator.addProvider(true, this)
|
if (isRegistered)
|
||||||
|
event.generator.addProvider(event.includeServer(), this)
|
||||||
|
else
|
||||||
|
delegates.add(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
private val tags = HashMap<TagKey<T>, ObjectArraySet<T>>()
|
private val tags = HashMap<TagKey<T>, ObjectArraySet<ResourceLocation>>()
|
||||||
|
private val rigidTags = HashMap<TagKey<T>, ObjectArraySet<ResourceKey<T>>>()
|
||||||
|
private val tagInTag = HashMap<TagKey<T>, ObjectArraySet<TagKey<T>>>()
|
||||||
|
|
||||||
|
inner class Appender(val tag: TagKey<T>) {
|
||||||
|
constructor(tag: ResourceLocation) : this(TagKey.create(registryKey, tag))
|
||||||
|
|
||||||
|
private val locations by lazy { tags.computeIfAbsent(tag) { ObjectArraySet() } }
|
||||||
|
private val rigidLocations by lazy { rigidTags.computeIfAbsent(tag) { ObjectArraySet() } }
|
||||||
|
private val tagsInTags by lazy { tagInTag.computeIfAbsent(tag) { ObjectArraySet() } }
|
||||||
|
|
||||||
|
fun add(value: ResourceLocation): Appender {
|
||||||
|
if (!locations.add(value)) {
|
||||||
|
throw IllegalStateException("Tag $tag of registry $registryKey already contains $value")
|
||||||
|
}
|
||||||
|
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun add(value: ResourceKey<T>): Appender {
|
||||||
|
require(value.registry() == registryKey) { "Invalid registry in provided ResourceKey: ${value.registry()} (this tag appender is for $registryKey)" }
|
||||||
|
|
||||||
|
if (!rigidLocations.add(value)) {
|
||||||
|
throw IllegalStateException("Tag $tag of registry $registryKey already contains $value")
|
||||||
|
}
|
||||||
|
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun add(value: TagKey<T>): Appender {
|
||||||
|
require(value.registry() == registryKey) { "Invalid registry in provided ResourceKey: ${value.registry()} (this tag appender is for $registryKey)" }
|
||||||
|
|
||||||
|
if (!tagsInTags.add(value)) {
|
||||||
|
throw IllegalStateException("Tag $tag of registry $registryKey already contains $value")
|
||||||
|
}
|
||||||
|
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun add(value: T): Appender {
|
||||||
|
return add(ResourceKey.create(registryKey, lookup.invoke(value)))
|
||||||
|
}
|
||||||
|
|
||||||
|
fun add(values: Collection<T>): Appender {
|
||||||
|
for (value in values) add(value)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun add(vararg values: T): Appender {
|
||||||
|
for (value in values) add(value)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun add(vararg values: ResourceKey<T>): Appender {
|
||||||
|
for (value in values) add(value)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun add(vararg values: TagKey<T>): Appender {
|
||||||
|
for (value in values) add(value)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun add(vararg values: ResourceLocation): Appender {
|
||||||
|
for (value in values) add(value)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun add(values: Stream<T>): Appender {
|
||||||
|
values.forEach { add(it) }
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun leaf(name: String) = Appender(TagKey.create(tag.registry, ResourceLocation(tag.location.namespace, tag.location.path + "/$name")))
|
||||||
|
|
||||||
|
fun add(leaf: String, value: T) = also { leaf(leaf).add(value) }
|
||||||
|
fun add(leaf: String, value: TagKey<T>) = also { leaf(leaf).add(value) }
|
||||||
|
fun add(leaf: String, vararg value: T) = also { leaf(leaf).add(*value) }
|
||||||
|
fun add(leaf: String, vararg value: TagKey<T>) = also { leaf(leaf).add(*value) }
|
||||||
|
fun add(leaf: String, value: Stream<T>) = also { leaf(leaf).add(value) }
|
||||||
|
fun add(leaf: String, value: ResourceKey<T>) = also { leaf(leaf).add(value) }
|
||||||
|
fun add(leaf: String, vararg value: ResourceKey<T>) = also { leaf(leaf).add(*value) }
|
||||||
|
fun add(leaf: String, value: ResourceLocation) = also { leaf(leaf).add(value) }
|
||||||
|
fun add(leaf: String, vararg value: ResourceLocation) = also { leaf(leaf).add(*value) }
|
||||||
|
}
|
||||||
|
|
||||||
|
fun forge(path: String) = Appender(ResourceLocation("forge", path))
|
||||||
|
|
||||||
override fun addTags(provider: HolderLookup.Provider) {
|
override fun addTags(provider: HolderLookup.Provider) {
|
||||||
if (tags.isEmpty()) {
|
if (tags.isEmpty()) {
|
||||||
@ -85,121 +133,64 @@ class TagsProvider(
|
|||||||
}
|
}
|
||||||
|
|
||||||
for ((tag, values) in tags) {
|
for ((tag, values) in tags) {
|
||||||
tag(tag).also {
|
val appender = tag(tag)
|
||||||
|
|
||||||
for (value in values) {
|
for (value in values) {
|
||||||
it.add(ResourceKey.create(registryKey, lookup(value) ?: throw NoSuchElementException("$value is missing from $registryKey")))
|
appender.addOptional(value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for ((tag, values) in rigidTags) {
|
||||||
|
val appender = tag(tag)
|
||||||
|
|
||||||
|
for (value in values) {
|
||||||
|
appender.add(value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for ((tag, values) in tagInTag) {
|
||||||
|
val appender = tag(tag)
|
||||||
|
|
||||||
|
for (value in values) {
|
||||||
|
appender.addTag(value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getSet(tag: TagKey<T>): MutableSet<T> {
|
private val delegates = ArrayList<Delegate<*>>()
|
||||||
return tags.computeIfAbsent(tag) { ObjectArraySet() }
|
private var isRegistered = false
|
||||||
|
|
||||||
|
fun register() {
|
||||||
|
if (!isRegistered) {
|
||||||
|
isRegistered = true
|
||||||
|
|
||||||
|
for (value in delegates) {
|
||||||
|
event.generator.addProvider(event.includeServer(), value)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getSet(location: ResourceLocation) = getSet(TagKey.create(registryKey, location))
|
delegates.clear()
|
||||||
|
|
||||||
fun appender(tag: TagKey<T>, message: ((T) -> Any) = { "$it is already in $tag" }): MTagAppender<T> {
|
|
||||||
val list = getSet(tag)
|
|
||||||
|
|
||||||
return object : MTagAppender<T> {
|
|
||||||
override fun add(value: T): MTagAppender<T> {
|
|
||||||
if (!list.add(value)) {
|
|
||||||
throw IllegalStateException(message.invoke(value).toString())
|
|
||||||
}
|
|
||||||
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun add(values: Collection<T>): MTagAppender<T> {
|
|
||||||
for (value in values) add(value)
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun addSafe(value: T): Boolean {
|
|
||||||
return list.add(value)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun add(vararg values: T): MTagAppender<T> {
|
|
||||||
values.forEach(this::add)
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun forge(path: String): ForgeTagAppender<T> {
|
|
||||||
val parent by lazy { appender(ResourceLocation("forge", path)) }
|
|
||||||
|
|
||||||
return object : ForgeTagAppender<T> {
|
|
||||||
override fun add(key: String, value: T): ForgeTagAppender<T> {
|
|
||||||
val tag = TagKey.create(registryKey, ResourceLocation("forge", "$path/$key"))
|
|
||||||
|
|
||||||
if (!getSet(tag).add(value)) {
|
|
||||||
throw IllegalStateException("$value is already in $tag")
|
|
||||||
}
|
|
||||||
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun addSafe(key: String, value: T): Boolean {
|
|
||||||
val tag = TagKey.create(registryKey, ResourceLocation("forge", "$path/$key"))
|
|
||||||
return getSet(tag).add(value)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun add(key: String, vararg values: T): ForgeTagAppender<T> {
|
|
||||||
for (value in values) add(key, value)
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun add(key: String, values: Collection<T>): ForgeTagAppender<T> {
|
|
||||||
for (value in values) add(key, value)
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun add(value: T): MTagAppender<T> {
|
|
||||||
return parent.add(value)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun addSafe(value: T): Boolean {
|
|
||||||
return parent.addSafe(value)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun add(vararg values: T): MTagAppender<T> {
|
|
||||||
return parent.add(*values)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun add(values: Collection<T>): MTagAppender<T> {
|
|
||||||
return parent.add(values)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun appender(location: ResourceLocation): MTagAppender<T> {
|
|
||||||
return appender(TagKey.create(registryKey, location))
|
|
||||||
}
|
|
||||||
|
|
||||||
fun appender(location: ResourceLocation, message: (T) -> Any): MTagAppender<T> {
|
|
||||||
return appender(TagKey.create(registryKey, location), message)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val blocks = Delegate(ForgeRegistries.BLOCKS)
|
val blocks = Delegate(ForgeRegistries.BLOCKS)
|
||||||
val items = Delegate(ForgeRegistries.ITEMS)
|
val items = Delegate(ForgeRegistries.ITEMS)
|
||||||
val mobEffects = Delegate(ForgeRegistries.MOB_EFFECTS)
|
val mobEffects = Delegate(ForgeRegistries.MOB_EFFECTS)
|
||||||
|
val damageTypes = Delegate(Registries.DAMAGE_TYPE)
|
||||||
|
|
||||||
val androidImmuneEffects = mobEffects.appender(MatteryPlayerCapability.ANDROID_IMMUNE_EFFECTS)
|
val androidImmuneEffects = mobEffects.Appender(MatteryPlayerCapability.ANDROID_IMMUNE_EFFECTS)
|
||||||
|
|
||||||
val requiresShovel = blocks.appender(BlockTags.MINEABLE_WITH_SHOVEL)
|
val requiresShovel = blocks.Appender(BlockTags.MINEABLE_WITH_SHOVEL)
|
||||||
val requiresAxe = blocks.appender(BlockTags.MINEABLE_WITH_AXE)
|
val requiresAxe = blocks.Appender(BlockTags.MINEABLE_WITH_AXE)
|
||||||
val requiresHoe = blocks.appender(BlockTags.MINEABLE_WITH_HOE)
|
val requiresHoe = blocks.Appender(BlockTags.MINEABLE_WITH_HOE)
|
||||||
val requiresPickaxe = blocks.appender(BlockTags.MINEABLE_WITH_PICKAXE)
|
val requiresPickaxe = blocks.Appender(BlockTags.MINEABLE_WITH_PICKAXE)
|
||||||
|
|
||||||
val requiresStoneTool = blocks.appender(BlockTags.NEEDS_STONE_TOOL)
|
val requiresStoneTool = blocks.Appender(BlockTags.NEEDS_STONE_TOOL)
|
||||||
val requiresIronTool = blocks.appender(BlockTags.NEEDS_IRON_TOOL)
|
val requiresIronTool = blocks.Appender(BlockTags.NEEDS_IRON_TOOL)
|
||||||
val requiresDiamondTool = blocks.appender(BlockTags.NEEDS_DIAMOND_TOOL)
|
val requiresDiamondTool = blocks.Appender(BlockTags.NEEDS_DIAMOND_TOOL)
|
||||||
|
|
||||||
val witherImmune = blocks.appender(BlockTags.WITHER_IMMUNE)
|
val witherImmune = blocks.Appender(BlockTags.WITHER_IMMUNE)
|
||||||
val dragonImmune = blocks.appender(BlockTags.DRAGON_IMMUNE)
|
val dragonImmune = blocks.Appender(BlockTags.DRAGON_IMMUNE)
|
||||||
|
|
||||||
fun stoneOre(key: String, block: Block): TagsProvider {
|
fun stoneOre(key: String, block: Block): TagsProvider {
|
||||||
ore(key, block)
|
ore(key, block)
|
||||||
@ -233,9 +224,9 @@ class TagsProvider(
|
|||||||
val b = TagKey.create(Registries.BLOCK, forgeKey)
|
val b = TagKey.create(Registries.BLOCK, forgeKey)
|
||||||
val i = TagKey.create(Registries.ITEM, forgeKey)
|
val i = TagKey.create(Registries.ITEM, forgeKey)
|
||||||
|
|
||||||
items.getSet(i).add(block.asItem())
|
items.Appender(i).add(block.asItem())
|
||||||
itemOres.add(block.asItem())
|
itemOres.add(block.asItem())
|
||||||
blocks.getSet(b).add(block)
|
blocks.Appender(b).add(block)
|
||||||
blockOres.add(block)
|
blockOres.add(block)
|
||||||
|
|
||||||
return this
|
return this
|
||||||
@ -286,7 +277,7 @@ class TagsProvider(
|
|||||||
// val itemOreRatesDense = items.forge("ore_rates/dense")
|
// val itemOreRatesDense = items.forge("ore_rates/dense")
|
||||||
|
|
||||||
val gameEvents = Delegate(Registries.GAME_EVENT)
|
val gameEvents = Delegate(Registries.GAME_EVENT)
|
||||||
val vibrations = gameEvents.appender(GameEventTags.VIBRATIONS)
|
val vibrations = gameEvents.Appender(GameEventTags.VIBRATIONS)
|
||||||
|
|
||||||
fun requiresPickaxe(block: Block, tier: Tier? = null): TagsProvider {
|
fun requiresPickaxe(block: Block, tier: Tier? = null): TagsProvider {
|
||||||
requiresPickaxe.add(block)
|
requiresPickaxe.add(block)
|
||||||
|
Loading…
Reference in New Issue
Block a user