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

This commit is contained in:
DBotThePony 2024-08-30 16:56:35 +07:00
commit 1d17e59131
Signed by: DBot
GPG Key ID: DCC23B5715498507
5 changed files with 39 additions and 72 deletions

View File

@ -126,6 +126,7 @@ fun addTags(tagsProvider: TagsProvider) {
.add(MItems.TRITANIUM_PANTS, MItems.SIMPLE_TRITANIUM_PANTS) .add(MItems.TRITANIUM_PANTS, MItems.SIMPLE_TRITANIUM_PANTS)
.add(MItems.TRITANIUM_BOOTS, MItems.SIMPLE_TRITANIUM_BOOTS) .add(MItems.TRITANIUM_BOOTS, MItems.SIMPLE_TRITANIUM_BOOTS)
tagsProvider.items.Appender(ItemTags.DYEABLE).add(MItems.TRITANIUM_ARMOR)
tagsProvider.items.Appender(ItemTags.TRIMMABLE_ARMOR).add(MItems.SIMPLE_TRITANIUM_ARMOR) tagsProvider.items.Appender(ItemTags.TRIMMABLE_ARMOR).add(MItems.SIMPLE_TRITANIUM_ARMOR)
tagsProvider.items.Appender(ItemTags.FREEZE_IMMUNE_WEARABLES).add(MItems.TRITANIUM_ARMOR) tagsProvider.items.Appender(ItemTags.FREEZE_IMMUNE_WEARABLES).add(MItems.TRITANIUM_ARMOR)

View File

@ -1,34 +1,7 @@
package ru.dbotthepony.mc.otm.item.armor package ru.dbotthepony.mc.otm.item.armor
import net.minecraft.resources.ResourceLocation
import net.minecraft.sounds.SoundEvent
import net.minecraft.sounds.SoundEvents
import net.minecraft.world.entity.Entity
import net.minecraft.world.entity.EquipmentSlot
import net.minecraft.world.item.ArmorItem import net.minecraft.world.item.ArmorItem
import net.minecraft.world.item.ArmorMaterial
import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.crafting.Ingredient
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.core.ResourceLocation
import ru.dbotthepony.mc.otm.registry.MArmorMaterials import ru.dbotthepony.mc.otm.registry.MArmorMaterials
import ru.dbotthepony.mc.otm.registry.MItemTags
class SimpleTritaniumArmorItem(slot: Type) : ArmorItem(MArmorMaterials.SIMPLE_TRITANIUM, slot, Properties().stacksTo(1)) { class SimpleTritaniumArmorItem(slot: Type) : ArmorItem(MArmorMaterials.SIMPLE_TRITANIUM, slot, Properties().stacksTo(1)) {
override fun getArmorTexture(
stack: ItemStack,
entity: Entity,
slot: EquipmentSlot,
layer: ArmorMaterial.Layer,
innerModel: Boolean
): ResourceLocation? {
if (!innerModel || slot == EquipmentSlot.FEET)
return when (slot) {
EquipmentSlot.LEGS -> ResourceLocation(OverdriveThatMatters.MOD_ID, "textures/models/armor/tritanium_simple_layer_2.png")
EquipmentSlot.FEET, EquipmentSlot.CHEST, EquipmentSlot.HEAD -> ResourceLocation(OverdriveThatMatters.MOD_ID, "textures/models/armor/tritanium_simple_layer_1.png")
else -> throw IllegalArgumentException("Invalid slot $slot")
}
return null
}
} }

View File

@ -1,14 +1,19 @@
package ru.dbotthepony.mc.otm.item.armor package ru.dbotthepony.mc.otm.item.armor
import net.minecraft.client.model.HumanoidModel import net.minecraft.client.model.HumanoidModel
import net.minecraft.resources.ResourceLocation
import net.minecraft.world.damagesource.DamageTypes import net.minecraft.world.damagesource.DamageTypes
import net.minecraft.world.entity.Entity
import net.minecraft.world.entity.EquipmentSlot import net.minecraft.world.entity.EquipmentSlot
import net.minecraft.world.entity.LivingEntity import net.minecraft.world.entity.LivingEntity
import net.minecraft.world.item.* import net.minecraft.world.item.*
import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions
import net.neoforged.neoforge.client.extensions.common.RegisterClientExtensionsEvent
import net.neoforged.neoforge.event.entity.living.LivingIncomingDamageEvent import net.neoforged.neoforge.event.entity.living.LivingIncomingDamageEvent
import ru.dbotthepony.kommons.math.RGBAColor import ru.dbotthepony.kommons.math.RGBAColor
import ru.dbotthepony.mc.otm.OverdriveThatMatters.loc
import ru.dbotthepony.mc.otm.client.model.TritaniumArmorModel import ru.dbotthepony.mc.otm.client.model.TritaniumArmorModel
import ru.dbotthepony.mc.otm.registry.ClientExtensionsListener
import ru.dbotthepony.mc.otm.registry.MArmorMaterials import ru.dbotthepony.mc.otm.registry.MArmorMaterials
import ru.dbotthepony.mc.otm.registry.MItems import ru.dbotthepony.mc.otm.registry.MItems
import java.util.function.Consumer import java.util.function.Consumer
@ -28,14 +33,26 @@ private object TritaniumArmorRenderProperties : IClientItemExtensions {
} }
} }
class TritaniumArmorItem(slot: Type) : ArmorItem(MArmorMaterials.TRITANIUM, slot, Properties().stacksTo(1).rarity(Rarity.RARE)) { class TritaniumArmorItem(slot: Type) : ArmorItem(MArmorMaterials.TRITANIUM, slot, Properties().stacksTo(1).rarity(Rarity.RARE)),
override fun initializeClient(consumer: Consumer<IClientItemExtensions>) { ClientExtensionsListener {
super.initializeClient(consumer) override fun registerClientExtensions(event: RegisterClientExtensionsEvent) {
consumer.accept(TritaniumArmorRenderProperties) event.registerItem(TritaniumArmorRenderProperties, this)
}
override fun getArmorTexture(
stack: ItemStack,
entity: Entity,
slot: EquipmentSlot,
layer: ArmorMaterial.Layer,
innerModel: Boolean
): ResourceLocation {
return if (layer.dyeable()) TEXTURE_LOCATION_BASE else TEXTURE_LOCATION_OVERLAY
} }
companion object { companion object {
val TRITANIUM_COLOR = RGBAColor(157, 187, 204).toBGRA() val TRITANIUM_COLOR = RGBAColor(157, 187, 204).toBGRA()
val TEXTURE_LOCATION_BASE = loc("textures/models/armor/tritanium_armor_base.png")
val TEXTURE_LOCATION_OVERLAY = loc("textures/models/armor/tritanium_armor_overlay.png")
fun onHurt(event: LivingIncomingDamageEvent) { fun onHurt(event: LivingIncomingDamageEvent) {
if (event.source.typeHolder().`is`(DamageTypes.SWEET_BERRY_BUSH) || event.source.msgId == "sweetBerryBush") { if (event.source.typeHolder().`is`(DamageTypes.SWEET_BERRY_BUSH) || event.source.msgId == "sweetBerryBush") {

View File

@ -29,9 +29,9 @@ object MArmorMaterials {
SoundEvents.ARMOR_EQUIP_IRON, SoundEvents.ARMOR_EQUIP_IRON,
{ Ingredient.of(MItemTags.REINFORCED_TRITANIUM_PLATES) }, { Ingredient.of(MItemTags.REINFORCED_TRITANIUM_PLATES) },
listOf( listOf(
ArmorMaterial.Layer(ResourceLocation(OverdriveThatMatters.MOD_ID, "textures/models/armor/tritanium_armor_base.png")), ArmorMaterial.Layer(ResourceLocation(OverdriveThatMatters.MOD_ID, "tritanium"), "", true),
ArmorMaterial.Layer(ResourceLocation(OverdriveThatMatters.MOD_ID, "textures/models/armor/tritanium_armor_overlay.png"), "", true), ArmorMaterial.Layer(ResourceLocation(OverdriveThatMatters.MOD_ID, "tritanium"), "", false),
), ), // ignored
1f, 1f,
0.08f 0.08f
) )
@ -48,10 +48,7 @@ object MArmorMaterials {
9, 9,
SoundEvents.ARMOR_EQUIP_IRON, SoundEvents.ARMOR_EQUIP_IRON,
{ Ingredient.of(MItemTags.TRITANIUM_INGOTS) }, { Ingredient.of(MItemTags.TRITANIUM_INGOTS) },
listOf( listOf(ArmorMaterial.Layer(ResourceLocation(OverdriveThatMatters.MOD_ID, "tritanium_simple"))),
ArmorMaterial.Layer(ResourceLocation(OverdriveThatMatters.MOD_ID, "tritanium_simple"), "", true),
ArmorMaterial.Layer(ResourceLocation(OverdriveThatMatters.MOD_ID, "tritanium_simple"), "_overlay", false),
),
0.3f, 0.3f,
0f 0f
) )
@ -65,7 +62,7 @@ object MArmorMaterials {
9, 9,
SoundEvents.ARMOR_EQUIP_GENERIC, SoundEvents.ARMOR_EQUIP_GENERIC,
{ Ingredient.EMPTY }, { Ingredient.EMPTY },
listOf(), // custom model listOf(ArmorMaterial.Layer(ResourceLocation(OverdriveThatMatters.MOD_ID, "gravitation_stabilizer"), "", false)), // custom model
0f, 0f,
0f 0f
) )

View File

@ -1,21 +1,12 @@
package ru.dbotthepony.mc.otm.registry package ru.dbotthepony.mc.otm.registry
import com.google.common.collect.ImmutableList import com.google.common.collect.ImmutableList
import com.google.common.collect.ImmutableSet
import com.google.common.collect.Streams
import net.minecraft.advancements.CriteriaTriggers
import net.minecraft.client.renderer.item.ItemProperties import net.minecraft.client.renderer.item.ItemProperties
import net.minecraft.core.BlockPos import net.minecraft.core.BlockPos
import net.minecraft.core.Registry
import net.minecraft.core.cauldron.CauldronInteraction import net.minecraft.core.cauldron.CauldronInteraction
import net.minecraft.core.component.DataComponents import net.minecraft.core.component.DataComponents
import net.minecraft.core.registries.BuiltInRegistries import net.minecraft.core.registries.BuiltInRegistries
import net.minecraft.core.registries.Registries
import net.minecraft.nbt.CompoundTag
import net.minecraft.world.entity.EntityType 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.BlockItem
import net.minecraft.world.item.DyeColor import net.minecraft.world.item.DyeColor
import net.minecraft.world.item.Item import net.minecraft.world.item.Item
import net.minecraft.world.item.ShieldItem import net.minecraft.world.item.ShieldItem
@ -33,7 +24,7 @@ import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent
import net.neoforged.neoforge.client.event.RegisterColorHandlersEvent import net.neoforged.neoforge.client.event.RegisterColorHandlersEvent
import net.neoforged.neoforge.client.event.RegisterItemDecorationsEvent import net.neoforged.neoforge.client.event.RegisterItemDecorationsEvent
import net.neoforged.neoforge.client.model.DynamicFluidContainerModel import net.neoforged.neoforge.client.model.DynamicFluidContainerModel
import net.neoforged.neoforge.registries.NewRegistryEvent import net.neoforged.neoforge.event.ModifyDefaultComponentsEvent
import net.neoforged.neoforge.registries.RegisterEvent import net.neoforged.neoforge.registries.RegisterEvent
import ru.dbotthepony.kommons.math.RGBAColor import ru.dbotthepony.kommons.math.RGBAColor
import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.OverdriveThatMatters
@ -48,34 +39,13 @@ import ru.dbotthepony.mc.otm.core.ResourceLocation
import ru.dbotthepony.mc.otm.core.math.BlockRotationFreedom import ru.dbotthepony.mc.otm.core.math.BlockRotationFreedom
import ru.dbotthepony.mc.otm.core.math.Decimal import ru.dbotthepony.mc.otm.core.math.Decimal
import ru.dbotthepony.mc.otm.isClient import ru.dbotthepony.mc.otm.isClient
import ru.dbotthepony.mc.otm.item.armor.TritaniumArmorItem
import ru.dbotthepony.mc.otm.item.weapon.EnergySwordItem import ru.dbotthepony.mc.otm.item.weapon.EnergySwordItem
import ru.dbotthepony.mc.otm.registry.objects.ColoredDecorativeBlock import ru.dbotthepony.mc.otm.registry.objects.ColoredDecorativeBlock
import ru.dbotthepony.mc.otm.registry.objects.DecorativeBlock import ru.dbotthepony.mc.otm.registry.objects.DecorativeBlock
import ru.dbotthepony.mc.otm.registry.objects.IBlockItemRegistryAcceptor import ru.dbotthepony.mc.otm.registry.objects.IBlockItemRegistryAcceptor
import ru.dbotthepony.mc.otm.registry.objects.StripedColoredDecorativeBlock import ru.dbotthepony.mc.otm.registry.objects.StripedColoredDecorativeBlock
import ru.dbotthepony.mc.otm.shapes.BlockShapes import ru.dbotthepony.mc.otm.shapes.BlockShapes
import ru.dbotthepony.mc.otm.triggers.AndroidBatteryTrigger
import ru.dbotthepony.mc.otm.triggers.AndroidResearchTrigger
import ru.dbotthepony.mc.otm.triggers.AndroidTravelUnderwater
import ru.dbotthepony.mc.otm.triggers.BecomeAndroidDeathTrigger
import ru.dbotthepony.mc.otm.triggers.BecomeAndroidSleepTrigger
import ru.dbotthepony.mc.otm.triggers.BecomeAndroidTrigger
import ru.dbotthepony.mc.otm.triggers.BecomeHumaneTrigger
import ru.dbotthepony.mc.otm.triggers.BlackHoleTrigger
import ru.dbotthepony.mc.otm.triggers.EnderTeleporterFallDeathTrigger
import ru.dbotthepony.mc.otm.triggers.ExopackBatterySlotTrigger
import ru.dbotthepony.mc.otm.triggers.ExopackGainedCraftingTrigger
import ru.dbotthepony.mc.otm.triggers.ExopackGainedEnderAccessTrigger
import ru.dbotthepony.mc.otm.triggers.ExopackGainedSmeltingTrigger
import ru.dbotthepony.mc.otm.triggers.ExopackObtainedTrigger
import ru.dbotthepony.mc.otm.triggers.ExopackSlotsExpandedTrigger
import ru.dbotthepony.mc.otm.triggers.FallDampenersSaveTrigger
import ru.dbotthepony.mc.otm.triggers.KillAsAndroidTrigger
import ru.dbotthepony.mc.otm.triggers.NailedEntityTrigger
import ru.dbotthepony.mc.otm.triggers.NanobotsArmorTrigger
import ru.dbotthepony.mc.otm.triggers.ShockwaveDamageMobTrigger
import ru.dbotthepony.mc.otm.triggers.ShockwaveTrigger
import ru.dbotthepony.mc.otm.triggers.TakeItemOutOfReplicatorTrigger
object MRegistry : IBlockItemRegistryAcceptor { object MRegistry : IBlockItemRegistryAcceptor {
private val features = RegistryDelegate<AndroidFeatureType<*>>("android_features") { sync(true) } private val features = RegistryDelegate<AndroidFeatureType<*>>("android_features") { sync(true) }
@ -288,6 +258,7 @@ object MRegistry : IBlockItemRegistryAcceptor {
bus.addListener(this::registerEvent) bus.addListener(this::registerEvent)
if (isClient) bus.addListener(this::registerItemColorHandlers) if (isClient) bus.addListener(this::registerItemColorHandlers)
if (isClient) bus.addListener(this::registerItemDecorators) if (isClient) bus.addListener(this::registerItemDecorators)
bus.addListener(this::registerDefaultComponents)
// call static constructors // call static constructors
NanobotsArmorFeature.Companion NanobotsArmorFeature.Companion
@ -349,7 +320,7 @@ object MRegistry : IBlockItemRegistryAcceptor {
private fun registerItemColorHandlers(event: RegisterColorHandlersEvent.Item) { private fun registerItemColorHandlers(event: RegisterColorHandlersEvent.Item) {
event.register(DynamicFluidContainerModel.Colors(), MItems.FLUID_CAPSULE) event.register(DynamicFluidContainerModel.Colors(), MItems.FLUID_CAPSULE)
event.register({ stack, layer -> if (layer == 0) DyedItemColor.getOrDefault(stack, -1) else -1 }, event.register({ stack, layer -> if (layer == 0) DyedItemColor.getOrDefault(stack, TritaniumArmorItem.TRITANIUM_COLOR) else -1 },
*MItems.TRITANIUM_ARMOR.toTypedArray() *MItems.TRITANIUM_ARMOR.toTypedArray()
) )
@ -364,4 +335,12 @@ object MRegistry : IBlockItemRegistryAcceptor {
} }
} }
} }
private fun registerDefaultComponents(event: ModifyDefaultComponentsEvent) {
MItems.TRITANIUM_ARMOR.forEach {
event.modify(it) {
it.set(DataComponents.DYED_COLOR, DyedItemColor(TritaniumArmorItem.TRITANIUM_COLOR, false))
}
}
}
} }