From d5b7559ebb830ba2ffa1c941ede4bb178393d510 Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Tue, 16 Jul 2024 02:40:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=9D=E8=AF=95=E5=8A=A0=E5=85=A5=E5=8F=96?= =?UTF-8?q?=E6=B6=88=E5=89=AF=E6=89=8B=E6=B8=B2=E6=9F=93=E7=9A=84mixin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../target/mixins/ItemInHandLayerMixin.java | 54 +++++++++++++++++++ src/main/resources/mixins.target.json | 1 + 2 files changed, 55 insertions(+) create mode 100644 src/main/java/net/mcreator/target/mixins/ItemInHandLayerMixin.java diff --git a/src/main/java/net/mcreator/target/mixins/ItemInHandLayerMixin.java b/src/main/java/net/mcreator/target/mixins/ItemInHandLayerMixin.java new file mode 100644 index 000000000..13a0c1dd9 --- /dev/null +++ b/src/main/java/net/mcreator/target/mixins/ItemInHandLayerMixin.java @@ -0,0 +1,54 @@ +package net.mcreator.target.mixins; + +import com.mojang.blaze3d.vertex.PoseStack; +import net.mcreator.target.item.gun.GunItem; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.layers.ItemInHandLayer; +import net.minecraft.client.renderer.entity.layers.PlayerItemInHandLayer; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.EntityType; +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.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +/** + * Author: MrCrayfish + */ +@Mixin(ItemInHandLayer.class) +public class ItemInHandLayerMixin +{ + @SuppressWarnings({"ConstantConditions"}) + @Inject(method = "renderArmWithItem", at = @At(value = "HEAD"), cancellable = true) + private void renderArmWithItemHead(LivingEntity entity, ItemStack stack, ItemDisplayContext display, HumanoidArm arm, PoseStack poseStack, MultiBufferSource source, int light, CallbackInfo ci) + { + if(entity.getType() == EntityType.PLAYER) + { + InteractionHand hand = Minecraft.getInstance().options.mainHand().get() == arm ? InteractionHand.MAIN_HAND : InteractionHand.OFF_HAND; + if(hand == InteractionHand.OFF_HAND) + { + if(stack.getItem() instanceof GunItem) + { + ci.cancel(); + return; + } + + if(entity.getMainHandItem().getItem() instanceof GunItem) { + ci.cancel(); + return; + } + } + if(stack.getItem() instanceof GunItem) + { + ci.cancel(); + } + } + } + +} diff --git a/src/main/resources/mixins.target.json b/src/main/resources/mixins.target.json index 89afdec5f..a9252db14 100644 --- a/src/main/resources/mixins.target.json +++ b/src/main/resources/mixins.target.json @@ -8,6 +8,7 @@ "ClientboundSetEntityMotionPacketMixin" ], "client": [ + "ItemInHandLayerMixin", "MixinCamera", "KeyMappingMixin", "GameRendererMixin",