покраска тритановой брони

#178 :WiseTree:
This commit is contained in:
YuRaNnNzZZ 2023-10-30 12:41:25 +03:00
parent 9d882d2351
commit 6aaad2fe88
Signed by: YuRaNnNzZZ
GPG Key ID: 5F71738C85A6006D
15 changed files with 55 additions and 11 deletions

View File

@ -86,7 +86,7 @@ fun addItemModels(provider: MatteryItemModelProvider) {
provider.generated(MItems.EXOPACK_PROBE)
provider.handheld(MItems.TRITANIUM_TOOLS)
provider.generated(MItems.TRITANIUM_ARMOR)
provider.armorColored(MItems.TRITANIUM_ARMOR)
provider.armorWithTrims(MItems.SIMPLE_TRITANIUM_ARMOR)
provider.handheld(MItems.CHEST_UPGRADER)

View File

@ -105,6 +105,14 @@ class MatteryItemModelProvider(event: GatherDataEvent) : ItemModelProvider(event
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}")) }
fun armorColored(item: Item) = exec {
withExistingParent(item.registryName!!.path, GENERATED)
.texture("layer0", modLocation("item/${item.registryName!!.path}_base"))
.texture("layer1", modLocation("item/${item.registryName!!.path}_overlay"))
}
fun armorColored(vararg items: Item) = items.forEach { armorColored(it) }
fun armorColored(items: Collection<Item>) = items.forEach { armorColored(it) }
companion object {
val ARMOR_TRIM_MATERIALS = listOf("quartz", "iron", "netherite", "redstone", "copper", "gold", "emerald", "diamond", "lapis", "amethyst")
val GENERATED = ResourceLocation("minecraft", "item/generated")

View File

@ -208,12 +208,22 @@ fun addCraftingTableRecipes(consumer: RecipeOutput) {
// броня
MatteryRecipe(MItems.TRITANIUM_HELMET, category = RecipeCategory.COMBAT)
.setUpgradeSource(Items.LEATHER_HELMET)
.addUpgradeOps(
UpgradeRecipe.Direct("display"),
UpgradeRecipe.Direct("Enchantments"),
)
.row(MItemTags.REINFORCED_TRITANIUM_PLATES, MItemTags.REINFORCED_TRITANIUM_PLATES, MItemTags.REINFORCED_TRITANIUM_PLATES)
.row(MItemTags.REINFORCED_TRITANIUM_PLATES, Items.LEATHER_HELMET, MItemTags.REINFORCED_TRITANIUM_PLATES)
.unlockedBy(MItemTags.REINFORCED_TRITANIUM_PLATES)
.build(consumer)
MatteryRecipe(MItems.TRITANIUM_PANTS, category = RecipeCategory.COMBAT)
.setUpgradeSource(Items.LEATHER_LEGGINGS)
.addUpgradeOps(
UpgradeRecipe.Direct("display"),
UpgradeRecipe.Direct("Enchantments"),
)
.row(MItemTags.REINFORCED_TRITANIUM_PLATES, MItemTags.REINFORCED_TRITANIUM_PLATES, MItemTags.REINFORCED_TRITANIUM_PLATES)
.row(MItemTags.REINFORCED_TRITANIUM_PLATES, Items.LEATHER_LEGGINGS, MItemTags.REINFORCED_TRITANIUM_PLATES)
.rowAC(MItemTags.REINFORCED_TRITANIUM_PLATES, MItemTags.REINFORCED_TRITANIUM_PLATES)
@ -221,6 +231,11 @@ fun addCraftingTableRecipes(consumer: RecipeOutput) {
.build(consumer)
MatteryRecipe(MItems.TRITANIUM_CHESTPLATE, category = RecipeCategory.COMBAT)
.setUpgradeSource(Items.LEATHER_CHESTPLATE)
.addUpgradeOps(
UpgradeRecipe.Direct("display"),
UpgradeRecipe.Direct("Enchantments"),
)
.row(MItemTags.REINFORCED_TRITANIUM_PLATES, Items.LEATHER_CHESTPLATE, MItemTags.REINFORCED_TRITANIUM_PLATES)
.row(MItemTags.REINFORCED_TRITANIUM_PLATES, MItemTags.REINFORCED_TRITANIUM_PLATES, MItemTags.REINFORCED_TRITANIUM_PLATES)
.row(MItemTags.REINFORCED_TRITANIUM_PLATES, MItemTags.REINFORCED_TRITANIUM_PLATES, MItemTags.REINFORCED_TRITANIUM_PLATES)
@ -228,6 +243,11 @@ fun addCraftingTableRecipes(consumer: RecipeOutput) {
.build(consumer)
MatteryRecipe(MItems.TRITANIUM_BOOTS, category = RecipeCategory.COMBAT)
.setUpgradeSource(Items.LEATHER_BOOTS)
.addUpgradeOps(
UpgradeRecipe.Direct("display"),
UpgradeRecipe.Direct("Enchantments"),
)
.row(MItemTags.REINFORCED_TRITANIUM_PLATES, Items.LEATHER_BOOTS, MItemTags.REINFORCED_TRITANIUM_PLATES)
.rowAC(MItemTags.REINFORCED_TRITANIUM_PLATES, MItemTags.REINFORCED_TRITANIUM_PLATES)
.unlockedBy(MItemTags.REINFORCED_TRITANIUM_PLATES)

View File

@ -3,20 +3,17 @@ package ru.dbotthepony.mc.otm.item.armor
import net.minecraft.client.model.HumanoidModel
import net.minecraft.sounds.SoundEvent
import net.minecraft.sounds.SoundEvents
import net.minecraft.world.damagesource.DamageSource
import net.minecraft.world.damagesource.DamageTypes
import net.minecraft.world.entity.Entity
import net.minecraft.world.entity.EquipmentSlot
import net.minecraft.world.entity.LivingEntity
import net.minecraft.world.item.ArmorItem
import net.minecraft.world.item.ArmorMaterial
import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.Rarity
import net.minecraft.world.item.*
import net.minecraft.world.item.crafting.Ingredient
import net.minecraftforge.client.extensions.common.IClientItemExtensions
import net.minecraftforge.event.entity.living.LivingAttackEvent
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.client.model.TritaniumArmorModel
import ru.dbotthepony.mc.otm.core.math.RGBAColor
import ru.dbotthepony.mc.otm.registry.MItemTags
import ru.dbotthepony.mc.otm.registry.MItems
import java.util.function.Consumer
@ -66,18 +63,28 @@ private object TritaniumArmorRenderProperties : IClientItemExtensions {
}
}
class TritaniumArmorItem(slot: Type) : ArmorItem(TritaniumArmorMaterial, slot, Properties().stacksTo(1).rarity(Rarity.RARE)) {
class TritaniumArmorItem(slot: Type) : DyeableArmorItem(TritaniumArmorMaterial, slot, Properties().stacksTo(1).rarity(Rarity.RARE)) {
override fun initializeClient(consumer: Consumer<IClientItemExtensions>) {
super.initializeClient(consumer)
consumer.accept(TritaniumArmorRenderProperties)
}
override fun getArmorTexture(stack: ItemStack?, entity: Entity?, slot: EquipmentSlot?, type: String?): String {
return TEXTURE_LOCATION
override fun getArmorTexture(stack: ItemStack, entity: Entity, slot: EquipmentSlot, type: String?): String =
if (type.equals("overlay")) TEXTURE_LOCATION_OVERLAY else TEXTURE_LOCATION_BASE
override fun getColor(stack: ItemStack): Int {
val tag = stack.getTagElement("display")?: return TRITANIUM_COLOR
if (tag.contains("color", 99)) {
return tag.getInt("color")
}
return TRITANIUM_COLOR
}
companion object {
const val TEXTURE_LOCATION = "${OverdriveThatMatters.MOD_ID}:textures/models/armor/tritanium_armor.png"
val TRITANIUM_COLOR = RGBAColor(157, 187, 204).toARGB()
const val TEXTURE_LOCATION_BASE = "${OverdriveThatMatters.MOD_ID}:textures/models/armor/tritanium_armor_base.png"
const val TEXTURE_LOCATION_OVERLAY = "${OverdriveThatMatters.MOD_ID}:textures/models/armor/tritanium_armor_overlay.png"
fun onHurt(event: LivingAttackEvent) {
if (event.source.typeHolder().`is`(DamageTypes.SWEET_BERRY_BUSH) || event.source.msgId == "sweetBerryBush") {

View File

@ -5,11 +5,13 @@ import com.google.common.collect.Streams
import net.minecraft.advancements.CriteriaTriggers
import net.minecraft.client.renderer.item.ItemProperties
import net.minecraft.core.BlockPos
import net.minecraft.core.cauldron.CauldronInteraction
import net.minecraft.core.registries.Registries
import net.minecraft.resources.ResourceLocation
import net.minecraft.world.entity.EntityType
import net.minecraft.world.entity.ai.village.poi.PoiType
import net.minecraft.world.entity.ai.village.poi.PoiTypes
import net.minecraft.world.item.DyeableArmorItem
import net.minecraft.world.item.Items
import net.minecraft.world.level.BlockGetter
import net.minecraft.world.level.block.*
@ -318,7 +320,7 @@ object MRegistry {
}
private fun initializeCommon(event: FMLCommonSetupEvent) {
registerCauldronHandlers()
}
private fun initializeClient(event: FMLClientSetupEvent) {
@ -353,8 +355,15 @@ object MRegistry {
}
}
private fun registerCauldronHandlers() {
MItems.TRITANIUM_ARMOR.forEach { CauldronInteraction.WATER[it] = CauldronInteraction.DYED_ITEM }
}
private fun registerItemColorHandlers(event: RegisterColorHandlersEvent.Item) {
event.register(DynamicFluidContainerModel.Colors(), MItems.FLUID_CAPSULE)
event.register({ stack, layer -> if (layer == 0) (stack.item as DyeableArmorItem).getColor(stack) else -1 },
*MItems.TRITANIUM_ARMOR.toTypedArray()
)
}
private fun registerItemDecorators(event: RegisterItemDecorationsEvent) {

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB