Non reflective armorWithTrims

This commit is contained in:
DBotThePony 2023-08-23 15:26:14 +07:00
parent 6a06850f23
commit 8f983b73d6
Signed by: DBot
GPG Key ID: DCC23B5715498507

View File

@ -2,6 +2,7 @@ package ru.dbotthepony.mc.otm.datagen.items
import net.minecraft.data.models.ItemModelGenerators
import net.minecraft.resources.ResourceLocation
import net.minecraft.server.packs.PackType
import net.minecraft.world.item.ArmorItem
import net.minecraft.world.item.Item
import net.minecraftforge.client.model.generators.ItemModelProvider
@ -85,20 +86,13 @@ class MatteryItemModelProvider(event: GatherDataEvent) : ItemModelProvider(event
val mainModel = withExistingParent(item.registryName!!.path, GENERATED).texture("layer0", texture)
if (item is ArmorItem) {
for (i in 0 until ARMOR_TRIM_MATERIALS.size) {
val material = ARMOR_TRIM_MATERIALS[i]
for ((i, material) in ARMOR_TRIM_MATERIALS.withIndex()) {
val trimLocation = ResourceLocation("trims/items/${item.type.getName()}_trim_${material}")
existingFileHelper.trackGenerated(trimLocation, PackType.CLIENT_RESOURCES, ".png", "textures")
val overrideModel = withExistingParent("${item.registryName!!.path}_${material}_trim", GENERATED)
.texture("layer0", texture)
// .texture("layer1", mcLoc("trims/items/${item.type.getName()}_trim_${material}"))
// спасибо за проверку наличия файлов КОТОРЫЕ ГЕНЕРИРУЮТСЯ В РАНТАЙМЕ И В ДАТАГЕНЕ НЕ СУЩЕСТВУЮТ
val texturesField = ModelBuilder::class.java.getDeclaredField("textures")
texturesField.trySetAccessible()
// произошёл троллинг
val textures = texturesField.get(overrideModel) as LinkedHashMap<String, String>
textures["layer1"] = "minecraft:trims/items/${item.type.getName()}_trim_${material}"
.texture("layer1", trimLocation)
mainModel.override()
.predicate(ItemModelGenerators.TRIM_TYPE_PREDICATE_ID, (i + 1).toFloat() / ARMOR_TRIM_MATERIALS.size.toFloat())
@ -106,7 +100,6 @@ class MatteryItemModelProvider(event: GatherDataEvent) : ItemModelProvider(event
.end()
}
}
}
fun armorWithTrims(vararg items: Item) = items.forEach { armorWithTrims(it, modLocation("item/${it.registryName!!.path}")) }