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",