Update portable gravitation stabilizer

This commit is contained in:
DBotThePony 2024-08-13 22:10:02 +07:00
parent e513bb8a8f
commit 4cb3acf126
Signed by: DBot
GPG Key ID: DCC23B5715498507
4 changed files with 49 additions and 25 deletions

View File

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

View File

@ -0,0 +1,7 @@
package ru.dbotthepony.mc.otm.registry
import net.neoforged.neoforge.client.extensions.common.RegisterClientExtensionsEvent
interface ClientExtensionsListener {
fun registerClientExtensions(event: RegisterClientExtensionsEvent)
}

View File

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

View File

@ -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<R : Any>(val registry: ResourceKey<out Registry<R>>, 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<R : Any>(val registry: ResourceKey<out Registry<R>>, 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()
}