diff --git a/src/main/java/net/mcreator/target/event/LivingEntityEventHandler.java b/src/main/java/net/mcreator/target/event/LivingEntityEventHandler.java index a9b86cd1b..3b3b2fe6a 100644 --- a/src/main/java/net/mcreator/target/event/LivingEntityEventHandler.java +++ b/src/main/java/net/mcreator/target/event/LivingEntityEventHandler.java @@ -121,16 +121,16 @@ public class LivingEntityEventHandler { private static void killIndication(Entity sourceEntity) { if (sourceEntity == null) return; - if (!sourceEntity.level().isClientSide() && sourceEntity.getServer() != null) { + if (!sourceEntity.level().isClientSide() && sourceEntity.getServer() != null) { - // TODO 修改为正确音效播放方法 - sourceEntity.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, sourceEntity.position(), sourceEntity.getRotationVector(), sourceEntity.level() instanceof ServerLevel ? (ServerLevel) sourceEntity.level() : null, 4, - sourceEntity.getName().getString(), sourceEntity.getDisplayName(), sourceEntity.level().getServer(), sourceEntity), "playsound target:targetdown player @s ~ ~ ~ 100 1"); - } - sourceEntity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { - capability.killIndicator = 40; - capability.syncPlayerVariables(sourceEntity); - }); + // TODO 修改为正确音效播放方法 + sourceEntity.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, sourceEntity.position(), sourceEntity.getRotationVector(), sourceEntity.level() instanceof ServerLevel ? (ServerLevel) sourceEntity.level() : null, 4, + sourceEntity.getName().getString(), sourceEntity.getDisplayName(), sourceEntity.level().getServer(), sourceEntity), "playsound target:targetdown player @s ~ ~ ~ 100 1"); + } + sourceEntity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.killIndicator = 40; + capability.syncPlayerVariables(sourceEntity); + }); } private static void arrowDamageImmuneForMine(Event event, DamageSource damageSource, Entity sourceEntity) { @@ -175,7 +175,7 @@ public class LivingEntityEventHandler { ItemStack oldStack = event.getFrom(); ItemStack newStack = event.getTo(); - if (oldStack.getItem() instanceof GunItem oldGun && player.level() instanceof ServerLevel serverLevel) { + if (player.level() instanceof ServerLevel serverLevel) { var newTag = newStack.getTag(); var oldTag = oldStack.getTag(); @@ -184,10 +184,12 @@ public class LivingEntityEventHandler { || !newTag.hasUUID("gun_uuid") || !oldTag.hasUUID("gun_uuid") || !newTag.getUUID("gun_uuid").equals(oldTag.getUUID("gun_uuid")) ) { - stopGunReloadSound(serverLevel, oldGun); - // TODO 添加一个原先物品不是枪也能触发切枪动画 if (newStack.getItem() instanceof GunItem) { - newStack.getOrCreateTag().putDouble("draw", 1); + newStack.getOrCreateTag().putBoolean("draw", true); + } + + if (oldStack.getItem() instanceof GunItem oldGun) { + stopGunReloadSound(serverLevel, oldGun); } player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { @@ -195,6 +197,7 @@ public class LivingEntityEventHandler { capability.zooming = false; capability.syncPlayerVariables(player); }); + player.getPersistentData().putDouble("zoompos", 0); player.getPersistentData().putDouble("zoom_time", 0); if (newStack.getOrCreateTag().getDouble("bolt_action_time") > 0) { diff --git a/src/main/java/net/mcreator/target/item/gun/GunItem.java b/src/main/java/net/mcreator/target/item/gun/GunItem.java index 2f92bff3c..39e3e4e81 100644 --- a/src/main/java/net/mcreator/target/item/gun/GunItem.java +++ b/src/main/java/net/mcreator/target/item/gun/GunItem.java @@ -45,21 +45,23 @@ public abstract class GunItem extends Item { } GunsTool.pvpModeCheck(itemstack, level); - if (tag.getDouble("draw") == 1) { - tag.putDouble("draw", 0); + if (tag.getBoolean("draw")) { + tag.putBoolean("draw", false); tag.putDouble("drawtime", 0); entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { capability.zooming = false; capability.syncPlayerVariables(entity); }); - if (entity instanceof Player _player) { - if (tag.getDouble("weight") == 0) { - _player.getCooldowns().addCooldown(itemstack.getItem(), 12); - } else if (tag.getDouble("weight") == 1) { - _player.getCooldowns().addCooldown(itemstack.getItem(), 17); - } else if (tag.getDouble("weight") == 2) { - _player.getCooldowns().addCooldown(itemstack.getItem(), 30); + if (entity instanceof Player player) { + double weight = tag.getDouble("weight"); + + if (weight == 0) { + player.getCooldowns().addCooldown(itemstack.getItem(), 12); + } else if (weight == 1) { + player.getCooldowns().addCooldown(itemstack.getItem(), 17); + } else if (weight == 2) { + player.getCooldowns().addCooldown(itemstack.getItem(), 30); } } @@ -99,7 +101,7 @@ public abstract class GunItem extends Item { @SubscribeEvent public static void onPickup(EntityItemPickupEvent event) { if (event.getItem().getItem().is(TargetModTags.Items.GUN)) { - event.getItem().getItem().getOrCreateTag().putDouble("draw", 1); + event.getItem().getItem().getOrCreateTag().putBoolean("draw", true); } } }