From 4cb3acf126570bd460390f7656d8724cb89f6e17 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Tue, 13 Aug 2024 22:10:02 +0700 Subject: [PATCH] Update portable gravitation stabilizer --- .../PortableGravitationStabilizerItem.kt | 36 ++++++------------- .../otm/registry/ClientExtensionsListener.kt | 7 ++++ .../mc/otm/registry/MArmorMaterials.kt | 14 ++++++++ .../mc/otm/registry/MDeferredRegister.kt | 17 +++++++++ 4 files changed, 49 insertions(+), 25 deletions(-) create mode 100644 src/main/kotlin/ru/dbotthepony/mc/otm/registry/ClientExtensionsListener.kt diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/armor/PortableGravitationStabilizerItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/armor/PortableGravitationStabilizerItem.kt index 9df928cca..7ce55a869 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/armor/PortableGravitationStabilizerItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/armor/PortableGravitationStabilizerItem.kt @@ -3,31 +3,18 @@ package ru.dbotthepony.mc.otm.item.armor import net.minecraft.ChatFormatting import net.minecraft.client.model.HumanoidModel import net.minecraft.network.chat.Component -import net.minecraft.sounds.SoundEvent -import net.minecraft.sounds.SoundEvents import net.minecraft.world.entity.EquipmentSlot import net.minecraft.world.entity.LivingEntity -import net.minecraft.world.item.* -import net.minecraft.world.item.crafting.Ingredient +import net.minecraft.world.item.ArmorItem +import net.minecraft.world.item.ItemStack +import net.minecraft.world.item.Rarity +import net.minecraft.world.item.TooltipFlag import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions -import ru.dbotthepony.mc.otm.OverdriveThatMatters -import ru.dbotthepony.mc.otm.core.TranslatableComponent +import net.neoforged.neoforge.client.extensions.common.RegisterClientExtensionsEvent import ru.dbotthepony.mc.otm.client.model.GravitationStabilizerModel -import java.util.function.Consumer - -private object GravitationStabilizerArmorMaterial : ArmorMaterial { - override fun getDurabilityForType(p_40410_: ArmorItem.Type) = 0 - override fun getDefenseForType(p_40411_: ArmorItem.Type) = 3 - override fun getEnchantmentValue() = 0 - override fun getEquipSound(): SoundEvent = SoundEvents.ARMOR_EQUIP_GENERIC - override fun getRepairIngredient(): Ingredient = Ingredient.EMPTY - - const val ID = "${OverdriveThatMatters.MOD_ID}:gravitation_stabilizer" - - override fun getName(): String = ID - override fun getToughness() = 0f - override fun getKnockbackResistance() = 0f -} +import ru.dbotthepony.mc.otm.core.TranslatableComponent +import ru.dbotthepony.mc.otm.registry.ClientExtensionsListener +import ru.dbotthepony.mc.otm.registry.MArmorMaterials private object GravitationStabilizerArmorRenderProperties : IClientItemExtensions { override fun getHumanoidArmorModel( @@ -40,10 +27,9 @@ private object GravitationStabilizerArmorRenderProperties : IClientItemExtension } } -class PortableGravitationStabilizerItem : ArmorItem(GravitationStabilizerArmorMaterial, Type.CHESTPLATE, Properties().stacksTo(1).rarity(Rarity.RARE)) { - override fun initializeClient(consumer: Consumer) { - super.initializeClient(consumer) - consumer.accept(GravitationStabilizerArmorRenderProperties) +class PortableGravitationStabilizerItem : ArmorItem(MArmorMaterials.GRAVITATION_STABILIZIER, Type.CHESTPLATE, Properties().stacksTo(1).rarity(Rarity.RARE)), ClientExtensionsListener { + override fun registerClientExtensions(event: RegisterClientExtensionsEvent) { + event.registerItem(GravitationStabilizerArmorRenderProperties, this) } override fun appendHoverText( diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/ClientExtensionsListener.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/ClientExtensionsListener.kt new file mode 100644 index 000000000..6b7ce7ed3 --- /dev/null +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/ClientExtensionsListener.kt @@ -0,0 +1,7 @@ +package ru.dbotthepony.mc.otm.registry + +import net.neoforged.neoforge.client.extensions.common.RegisterClientExtensionsEvent + +interface ClientExtensionsListener { + fun registerClientExtensions(event: RegisterClientExtensionsEvent) +} diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MArmorMaterials.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MArmorMaterials.kt index 8a9916df7..aeb8735e9 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MArmorMaterials.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MArmorMaterials.kt @@ -56,4 +56,18 @@ object MArmorMaterials { 0f ) } + + val GRAVITATION_STABILIZIER = registrar.register("simple_tritanium") { + ArmorMaterial( + mapOf( + ArmorItem.Type.CHESTPLATE to 3, + ), + 9, + SoundEvents.ARMOR_EQUIP_GENERIC, + { Ingredient.EMPTY }, + listOf(), // custom model + 0f, + 0f + ) + } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MDeferredRegister.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MDeferredRegister.kt index 89c14cfd6..e0565ae55 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MDeferredRegister.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MDeferredRegister.kt @@ -10,8 +10,11 @@ import net.minecraft.resources.ResourceKey import net.minecraft.resources.ResourceLocation import net.minecraft.tags.TagKey import net.minecraft.world.item.DyeColor +import net.neoforged.api.distmarker.Dist import net.neoforged.bus.api.IEventBus +import net.neoforged.fml.loading.FMLEnvironment import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent +import net.neoforged.neoforge.client.extensions.common.RegisterClientExtensionsEvent import net.neoforged.neoforge.registries.RegisterEvent import org.apache.logging.log4j.LogManager import ru.dbotthepony.mc.otm.OverdriveThatMatters @@ -211,6 +214,10 @@ class MDeferredRegister(val registry: ResourceKey>, val eventRegistered = true bus.addListener(this::onRegisterEvent) bus.addListener(this::registerCapabilities) + + if (FMLEnvironment.dist == Dist.CLIENT) { + bus.addListener(this::registerClientExtensions) + } } private fun registerCapabilities(event: RegisterCapabilitiesEvent) { @@ -223,6 +230,16 @@ class MDeferredRegister(val registry: ResourceKey>, val } } + private fun registerClientExtensions(event: RegisterClientExtensionsEvent) { + entriesInternal.values.forEach { + val value = it.value + + if (value is ClientExtensionsListener) { + value.registerClientExtensions(event) + } + } + } + companion object { private val LOGGER = LogManager.getLogger() }