diff --git a/src/main/kotlin/de/bixilon/pixlyzer/PixLyzer.kt b/src/main/kotlin/de/bixilon/pixlyzer/PixLyzer.kt index 9833488..c78b075 100644 --- a/src/main/kotlin/de/bixilon/pixlyzer/PixLyzer.kt +++ b/src/main/kotlin/de/bixilon/pixlyzer/PixLyzer.kt @@ -14,9 +14,10 @@ import de.bixilon.pixlyzer.util.ReflectionUtil.invoke import de.bixilon.pixlyzer.util.ReflectionUtil.variable import de.bixilon.pixlyzer.util.Util import net.minecraft.Bootstrap -import net.minecraft.tag.ItemTags +import net.minecraft.tag.* import net.minecraft.util.registry.Registry import java.io.* +import java.lang.reflect.Field import java.util.* import java.util.zip.GZIPOutputStream @@ -29,6 +30,13 @@ object PixLyzer { lateinit var outputDirectory: File + private fun initializeTags(tags: Field) { + val list = tags.get(null)?.variable>("tags") ?: return + for (tag in list) { + getField(tag::class.java, "delegate")!!.set(tag, TAG_CLASS!!.invoke("of", arrayOf(Set::class.java), arrayOf(setOf()))) + } + } + @JvmStatic fun main(args: Array) { println("Starting PixLyzer") @@ -69,11 +77,11 @@ object PixLyzer { Util.forceClassInit(Registry::class.java) - getField(ItemTags::class.java, "REQUIRED_TAGS")?.get(null)?.variable>("tags")?.let { - for (tag in it) { - getField(tag::class.java, "delegate")!!.set(tag, TAG_CLASS!!.invoke("of", arrayOf(Set::class.java), arrayOf(setOf()))) - } - } + getField(FluidTags::class.java, "REQUIRED_TAGS")?.let { initializeTags(it) } + getField(ItemTags::class.java, "REQUIRED_TAGS")?.let { initializeTags(it) } + getField(BlockTags::class.java, "REQUIRED_TAGS")?.let { initializeTags(it) } + getField(GameEventTags::class.java, "REQUIRED_TAGS")?.let { initializeTags(it) } + getField(EntityTypeTags::class.java, "REQUIRED_TAGS")?.let { initializeTags(it) } println("Class loading done in ${System.currentTimeMillis() - classesLoadStartTime}ms")