修改切换物品时的动画逻辑
This commit is contained in:
parent
05fe0af857
commit
b312465fdd
2 changed files with 28 additions and 23 deletions
|
@ -121,16 +121,16 @@ public class LivingEntityEventHandler {
|
||||||
|
|
||||||
private static void killIndication(Entity sourceEntity) {
|
private static void killIndication(Entity sourceEntity) {
|
||||||
if (sourceEntity == null) return;
|
if (sourceEntity == null) return;
|
||||||
if (!sourceEntity.level().isClientSide() && sourceEntity.getServer() != null) {
|
if (!sourceEntity.level().isClientSide() && sourceEntity.getServer() != null) {
|
||||||
|
|
||||||
// TODO 修改为正确音效播放方法
|
// TODO 修改为正确音效播放方法
|
||||||
sourceEntity.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, sourceEntity.position(), sourceEntity.getRotationVector(), sourceEntity.level() instanceof ServerLevel ? (ServerLevel) sourceEntity.level() : null, 4,
|
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.getName().getString(), sourceEntity.getDisplayName(), sourceEntity.level().getServer(), sourceEntity), "playsound target:targetdown player @s ~ ~ ~ 100 1");
|
||||||
}
|
}
|
||||||
sourceEntity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
|
sourceEntity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
|
||||||
capability.killIndicator = 40;
|
capability.killIndicator = 40;
|
||||||
capability.syncPlayerVariables(sourceEntity);
|
capability.syncPlayerVariables(sourceEntity);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void arrowDamageImmuneForMine(Event event, DamageSource damageSource, Entity sourceEntity) {
|
private static void arrowDamageImmuneForMine(Event event, DamageSource damageSource, Entity sourceEntity) {
|
||||||
|
@ -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) {
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue