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_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.FREEZE_IMMUNE_WEARABLES).add(MItems.TRITANIUM_ARMOR)

View File

@ -1,34 +1,7 @@
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.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.MItemTags
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
import net.minecraft.client.model.HumanoidModel
import net.minecraft.resources.ResourceLocation
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.*
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 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.registry.ClientExtensionsListener
import ru.dbotthepony.mc.otm.registry.MArmorMaterials
import ru.dbotthepony.mc.otm.registry.MItems
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)) {
override fun initializeClient(consumer: Consumer<IClientItemExtensions>) {
super.initializeClient(consumer)
consumer.accept(TritaniumArmorRenderProperties)
class TritaniumArmorItem(slot: Type) : ArmorItem(MArmorMaterials.TRITANIUM, slot, Properties().stacksTo(1).rarity(Rarity.RARE)),
ClientExtensionsListener {
override fun registerClientExtensions(event: RegisterClientExtensionsEvent) {
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 {
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) {
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,
{ Ingredient.of(MItemTags.REINFORCED_TRITANIUM_PLATES) },
listOf(
ArmorMaterial.Layer(ResourceLocation(OverdriveThatMatters.MOD_ID, "textures/models/armor/tritanium_armor_base.png")),
ArmorMaterial.Layer(ResourceLocation(OverdriveThatMatters.MOD_ID, "textures/models/armor/tritanium_armor_overlay.png"), "", true),
),
ArmorMaterial.Layer(ResourceLocation(OverdriveThatMatters.MOD_ID, "tritanium"), "", true),
ArmorMaterial.Layer(ResourceLocation(OverdriveThatMatters.MOD_ID, "tritanium"), "", false),
), // ignored
1f,
0.08f
)
@ -48,10 +48,7 @@ object MArmorMaterials {
9,
SoundEvents.ARMOR_EQUIP_IRON,
{ Ingredient.of(MItemTags.TRITANIUM_INGOTS) },
listOf(
ArmorMaterial.Layer(ResourceLocation(OverdriveThatMatters.MOD_ID, "tritanium_simple"), "", true),
ArmorMaterial.Layer(ResourceLocation(OverdriveThatMatters.MOD_ID, "tritanium_simple"), "_overlay", false),
),
listOf(ArmorMaterial.Layer(ResourceLocation(OverdriveThatMatters.MOD_ID, "tritanium_simple"))),
0.3f,
0f
)
@ -65,7 +62,7 @@ object MArmorMaterials {
9,
SoundEvents.ARMOR_EQUIP_GENERIC,
{ Ingredient.EMPTY },
listOf(), // custom model
listOf(ArmorMaterial.Layer(ResourceLocation(OverdriveThatMatters.MOD_ID, "gravitation_stabilizer"), "", false)), // custom model
0f,
0f
)

View File

@ -1,21 +1,12 @@
package ru.dbotthepony.mc.otm.registry
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.core.BlockPos
import net.minecraft.core.Registry
import net.minecraft.core.cauldron.CauldronInteraction
import net.minecraft.core.component.DataComponents
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.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.Item
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.RegisterItemDecorationsEvent
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 ru.dbotthepony.kommons.math.RGBAColor
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.Decimal
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.registry.objects.ColoredDecorativeBlock
import ru.dbotthepony.mc.otm.registry.objects.DecorativeBlock
import ru.dbotthepony.mc.otm.registry.objects.IBlockItemRegistryAcceptor
import ru.dbotthepony.mc.otm.registry.objects.StripedColoredDecorativeBlock
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 {
private val features = RegistryDelegate<AndroidFeatureType<*>>("android_features") { sync(true) }
@ -288,6 +258,7 @@ object MRegistry : IBlockItemRegistryAcceptor {
bus.addListener(this::registerEvent)
if (isClient) bus.addListener(this::registerItemColorHandlers)
if (isClient) bus.addListener(this::registerItemDecorators)
bus.addListener(this::registerDefaultComponents)
// call static constructors
NanobotsArmorFeature.Companion
@ -349,7 +320,7 @@ object MRegistry : IBlockItemRegistryAcceptor {
private fun registerItemColorHandlers(event: RegisterColorHandlersEvent.Item) {
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()
)
@ -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))
}
}
}
}