Merge remote-tracking branch 'origin/master' into master

This commit is contained in:
DBotThePony 2023-08-23 15:16:10 +07:00
commit 6a06850f23
Signed by: DBot
GPG Key ID: DCC23B5715498507
3 changed files with 39 additions and 2 deletions

View File

@ -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)

View File

@ -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()

View File

@ -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)