From 5853382fe3837542d1f6352b388937b41a813347 Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Tue, 16 Jul 2024 03:01:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=89=AF=E6=89=8B=E7=89=A9?= =?UTF-8?q?=E5=93=81=E6=B8=B2=E6=9F=93=E5=8F=96=E6=B6=88=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../target/event/ClientEventHandler.java | 22 ++++++++-- .../target/mixins/ItemInHandLayerMixin.java | 42 +++++-------------- 2 files changed, 30 insertions(+), 34 deletions(-) diff --git a/src/main/java/net/mcreator/target/event/ClientEventHandler.java b/src/main/java/net/mcreator/target/event/ClientEventHandler.java index b0ad1b860..8d624e588 100644 --- a/src/main/java/net/mcreator/target/event/ClientEventHandler.java +++ b/src/main/java/net/mcreator/target/event/ClientEventHandler.java @@ -11,7 +11,9 @@ import net.minecraft.client.player.LocalPlayer; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.Mth; import net.minecraft.util.RandomSource; +import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.HumanoidArm; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -58,6 +60,20 @@ public class ClientEventHandler { } } + @SubscribeEvent + public static void onRenderHand(RenderHandEvent event) { + Player player = Minecraft.getInstance().player; + if (player == null) return; + + InteractionHand hand = Minecraft.getInstance().options.mainHand().get() == HumanoidArm.RIGHT ? InteractionHand.OFF_HAND : InteractionHand.MAIN_HAND; + + if (event.getHand() == hand) { + if (player.getMainHandItem().is(TargetModTags.Items.GUN)) { + event.setCanceled(true); + } + } + } + private static void handleWeaponCrossHair(LivingEntity entity) { if (entity.getMainHandItem().is(TargetModTags.Items.GUN)) { float fps = Minecraft.getInstance().getFps(); @@ -113,7 +129,7 @@ public class ClientEventHandler { float times = 90f / fps; var data = entity.getPersistentData(); - double move_speed = (float) Mth.clamp(entity.getDeltaMovement().horizontalDistanceSqr(),0,0.02); + double move_speed = (float) Mth.clamp(entity.getDeltaMovement().horizontalDistanceSqr(), 0, 0.02); double on_ground; if (entity.onGround()) { if (entity.isSprinting()) { @@ -206,9 +222,9 @@ public class ClientEventHandler { if (-0.8 < velocity + 0.078 && velocity + 0.078 < 0.8) { if (data.getDouble("vy") < entity.getDeltaMovement().y() + 0.078) { - data.putDouble("vy",Mth.clamp(((data.getDouble("vy") + 0.35 * Math.pow((velocity + 0.078) - data.getDouble("vy"), 2)) * (1 - 0.8 * data.getDouble("zoom_time"))),-0.8,0.8)); + data.putDouble("vy", Mth.clamp(((data.getDouble("vy") + 0.35 * Math.pow((velocity + 0.078) - data.getDouble("vy"), 2)) * (1 - 0.8 * data.getDouble("zoom_time"))), -0.8, 0.8)); } else { - data.putDouble("vy",Mth.clamp(((data.getDouble("vy") - 0.35 * Math.pow((velocity + 0.078) - data.getDouble("vy"), 2)) * (1 - 0.8 * data.getDouble("zoom_time"))),-0.8,0.8)); + data.putDouble("vy", Mth.clamp(((data.getDouble("vy") - 0.35 * Math.pow((velocity + 0.078) - data.getDouble("vy"), 2)) * (1 - 0.8 * data.getDouble("zoom_time"))), -0.8, 0.8)); } } } diff --git a/src/main/java/net/mcreator/target/mixins/ItemInHandLayerMixin.java b/src/main/java/net/mcreator/target/mixins/ItemInHandLayerMixin.java index 13a0c1dd9..9ab6430ef 100644 --- a/src/main/java/net/mcreator/target/mixins/ItemInHandLayerMixin.java +++ b/src/main/java/net/mcreator/target/mixins/ItemInHandLayerMixin.java @@ -1,16 +1,12 @@ 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.mcreator.target.init.TargetModTags; 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; @@ -18,34 +14,18 @@ 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; - } +public class ItemInHandLayerMixin { + + @SuppressWarnings({"ConstantConditions"}) + @Inject(method = "renderArmWithItem(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/item/ItemDisplayContext;Lnet/minecraft/world/entity/HumanoidArm;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;I)V", + 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) { + if (arm == HumanoidArm.LEFT) { + ItemStack mainHand = entity.getMainHandItem(); + if (!mainHand.is(TargetModTags.Items.GUN)) return; - if(entity.getMainHandItem().getItem() instanceof GunItem) { - ci.cancel(); - return; - } - } - if(stack.getItem() instanceof GunItem) - { ci.cancel(); } }