调整指示器的渲染位置

This commit is contained in:
17146 2025-07-12 20:33:46 +08:00 committed by Light_Quanta
parent e115a06969
commit 9a66a45981
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
3 changed files with 45 additions and 2 deletions

View file

@ -0,0 +1,42 @@
package com.atsuishio.superbwarfare.mixins;
import com.atsuishio.superbwarfare.init.ModItems;
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.model.ArmedModel;
import net.minecraft.client.model.EntityModel;
import net.minecraft.client.model.HeadedModel;
import net.minecraft.client.renderer.ItemInHandRenderer;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.entity.RenderLayerParent;
import net.minecraft.client.renderer.entity.layers.ItemInHandLayer;
import net.minecraft.client.renderer.entity.layers.PlayerItemInHandLayer;
import net.minecraft.world.entity.HumanoidArm;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(PlayerItemInHandLayer.class)
public abstract class PlayerItemInHandLayerMixin<T extends Player, M extends EntityModel<T> & ArmedModel & HeadedModel> extends ItemInHandLayer<T, M> {
@Shadow
protected abstract void renderArmWithSpyglass(LivingEntity pEntity, ItemStack pStack, HumanoidArm pArm, PoseStack pPoseStack, MultiBufferSource pBuffer, int pCombinedLight);
public PlayerItemInHandLayerMixin(RenderLayerParent<T, M> pRenderer, ItemInHandRenderer pItemInHandRenderer) {
super(pRenderer, pItemInHandRenderer);
}
@Inject(method = "renderArmWithItem", at = @At("HEAD"), cancellable = true)
public void renderArmWithItem(LivingEntity pLivingEntity, ItemStack pItemStack, ItemDisplayContext pDisplayContext,
HumanoidArm pArm, PoseStack pPoseStack, MultiBufferSource pBuffer, int pPackedLight, CallbackInfo ci) {
if (pItemStack.is(ModItems.ARTILLERY_INDICATOR.get()) && pLivingEntity.getUseItem() == pItemStack && pLivingEntity.swingTime == 0) {
ci.cancel();
this.renderArmWithSpyglass(pLivingEntity, pItemStack, pArm, pPoseStack, pBuffer, pPackedLight);
}
}
}

View file

@ -284,7 +284,7 @@
},
"head": {
"rotation": [90, 0, 0],
"translation": [0, -0.25, -13.25],
"translation": [-2, -0.25, -13.25],
"scale": [1.6, 1.6, 1.6]
},
"fixed": {

View file

@ -26,7 +26,8 @@
"KeymappingMixin",
"LivingEntityRendererMixin",
"MinecraftMixin",
"MouseHandlerMixin"
"MouseHandlerMixin",
"PlayerItemInHandLayerMixin"
],
"minVersion": "0.8",
"injectors": {