armor trims for simple tritanium armor
я хочу убивать
This commit is contained in:
parent
9bebe74282
commit
51f7fc264c
@ -88,7 +88,7 @@ fun addItemModels(provider: MatteryItemModelProvider) {
|
||||
|
||||
provider.handheld(MItems.TRITANIUM_TOOLS)
|
||||
provider.generated(MItems.TRITANIUM_ARMOR)
|
||||
provider.generated(MItems.SIMPLE_TRITANIUM_ARMOR)
|
||||
provider.armorWithTrims(MItems.SIMPLE_TRITANIUM_ARMOR)
|
||||
|
||||
provider.generatedTiered(MItems.BATTERIES, "battery_tier")
|
||||
provider.generated(MItems.BATTERY_CREATIVE)
|
||||
|
@ -1,12 +1,15 @@
|
||||
package ru.dbotthepony.mc.otm.datagen.items
|
||||
|
||||
import net.minecraft.data.models.ItemModelGenerators
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.world.item.ArmorItem
|
||||
import net.minecraft.world.item.Item
|
||||
import net.minecraftforge.client.model.generators.ItemModelProvider
|
||||
import net.minecraftforge.client.model.generators.ModelBuilder
|
||||
import net.minecraftforge.data.event.GatherDataEvent
|
||||
import org.apache.logging.log4j.LogManager
|
||||
import ru.dbotthepony.mc.otm.datagen.DataGen
|
||||
import ru.dbotthepony.mc.otm.core.registryName
|
||||
import ru.dbotthepony.mc.otm.datagen.DataGen
|
||||
import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import java.util.LinkedList
|
||||
|
||||
@ -78,7 +81,39 @@ class MatteryItemModelProvider(event: GatherDataEvent) : ItemModelProvider(event
|
||||
}
|
||||
}
|
||||
|
||||
fun armorWithTrims(item: Item, texture: ResourceLocation) = exec {
|
||||
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]
|
||||
|
||||
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}"
|
||||
|
||||
mainModel.override()
|
||||
.predicate(ItemModelGenerators.TRIM_TYPE_PREDICATE_ID, (i + 1).toFloat() / ARMOR_TRIM_MATERIALS.size.toFloat())
|
||||
.model(overrideModel)
|
||||
.end()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fun armorWithTrims(vararg items: Item) = items.forEach { armorWithTrims(it, modLocation("item/${it.registryName!!.path}")) }
|
||||
fun armorWithTrims(items: Collection<Item>) = items.forEach { armorWithTrims(it, modLocation("item/${it.registryName!!.path}")) }
|
||||
|
||||
companion object {
|
||||
val ARMOR_TRIM_MATERIALS = listOf("quartz", "iron", "netherite", "redstone", "copper", "gold", "emerald", "diamond", "lapis", "amethyst")
|
||||
val GENERATED = ResourceLocation("minecraft", "item/generated")
|
||||
val HANDHELD = ResourceLocation("minecraft", "item/handheld")
|
||||
private val LOGGER = LogManager.getLogger()
|
||||
|
@ -105,6 +105,8 @@ fun addTags(tagsProvider: TagsProvider) {
|
||||
.add("leggings", MItems.SIMPLE_TRITANIUM_PANTS)
|
||||
.add("boots", MItems.SIMPLE_TRITANIUM_BOOTS)
|
||||
|
||||
tagsProvider.items.minecraft("trimmable_armor").add(MItems.SIMPLE_TRITANIUM_ARMOR)
|
||||
|
||||
tagsProvider.items.minecraft("swords").add(MItems.TRITANIUM_SWORD)
|
||||
tagsProvider.items.minecraft("axes").add(MItems.TRITANIUM_AXE)
|
||||
tagsProvider.items.minecraft("pickaxes").add(MItems.TRITANIUM_PICKAXE)
|
||||
|
Loading…
Reference in New Issue
Block a user