修改切换物品时的动画逻辑

This commit is contained in:
17146 2024-05-18 01:33:54 +08:00
parent 05fe0af857
commit b312465fdd
2 changed files with 28 additions and 23 deletions

View file

@ -175,7 +175,7 @@ public class LivingEntityEventHandler {
ItemStack oldStack = event.getFrom(); ItemStack oldStack = event.getFrom();
ItemStack newStack = event.getTo(); 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 newTag = newStack.getTag();
var oldTag = oldStack.getTag(); var oldTag = oldStack.getTag();
@ -184,10 +184,12 @@ public class LivingEntityEventHandler {
|| !newTag.hasUUID("gun_uuid") || !oldTag.hasUUID("gun_uuid") || !newTag.hasUUID("gun_uuid") || !oldTag.hasUUID("gun_uuid")
|| !newTag.getUUID("gun_uuid").equals(oldTag.getUUID("gun_uuid")) || !newTag.getUUID("gun_uuid").equals(oldTag.getUUID("gun_uuid"))
) { ) {
stopGunReloadSound(serverLevel, oldGun);
// TODO 添加一个原先物品不是枪也能触发切枪动画
if (newStack.getItem() instanceof GunItem) { 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 -> { player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
@ -195,6 +197,7 @@ public class LivingEntityEventHandler {
capability.zooming = false; capability.zooming = false;
capability.syncPlayerVariables(player); capability.syncPlayerVariables(player);
}); });
player.getPersistentData().putDouble("zoompos", 0); player.getPersistentData().putDouble("zoompos", 0);
player.getPersistentData().putDouble("zoom_time", 0); player.getPersistentData().putDouble("zoom_time", 0);
if (newStack.getOrCreateTag().getDouble("bolt_action_time") > 0) { if (newStack.getOrCreateTag().getDouble("bolt_action_time") > 0) {

View file

@ -45,21 +45,23 @@ public abstract class GunItem extends Item {
} }
GunsTool.pvpModeCheck(itemstack, level); GunsTool.pvpModeCheck(itemstack, level);
if (tag.getDouble("draw") == 1) { if (tag.getBoolean("draw")) {
tag.putDouble("draw", 0); tag.putBoolean("draw", false);
tag.putDouble("drawtime", 0); tag.putDouble("drawtime", 0);
entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
capability.zooming = false; capability.zooming = false;
capability.syncPlayerVariables(entity); capability.syncPlayerVariables(entity);
}); });
if (entity instanceof Player _player) { if (entity instanceof Player player) {
if (tag.getDouble("weight") == 0) { double weight = tag.getDouble("weight");
_player.getCooldowns().addCooldown(itemstack.getItem(), 12);
} else if (tag.getDouble("weight") == 1) { if (weight == 0) {
_player.getCooldowns().addCooldown(itemstack.getItem(), 17); player.getCooldowns().addCooldown(itemstack.getItem(), 12);
} else if (tag.getDouble("weight") == 2) { } else if (weight == 1) {
_player.getCooldowns().addCooldown(itemstack.getItem(), 30); 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 @SubscribeEvent
public static void onPickup(EntityItemPickupEvent event) { public static void onPickup(EntityItemPickupEvent event) {
if (event.getItem().getItem().is(TargetModTags.Items.GUN)) { if (event.getItem().getItem().is(TargetModTags.Items.GUN)) {
event.getItem().getItem().getOrCreateTag().putDouble("draw", 1); event.getItem().getItem().getOrCreateTag().putBoolean("draw", true);
} }
} }
} }