From ed117eac960d9e64348d7ef42066ab57d20c4e65 Mon Sep 17 00:00:00 2001 From: fullwall Date: Sun, 3 Mar 2024 23:14:11 +0800 Subject: [PATCH] Try to detect sneaking state onAttach for SneakTrait --- .../main/java/net/citizensnpcs/trait/SneakTrait.java | 7 ++++++- .../net/citizensnpcs/nms/v1_10_R1/util/NMSImpl.java | 7 ------- .../net/citizensnpcs/nms/v1_11_R1/util/NMSImpl.java | 7 ------- .../net/citizensnpcs/nms/v1_12_R1/util/NMSImpl.java | 7 ------- .../net/citizensnpcs/nms/v1_13_R2/util/NMSImpl.java | 7 ------- .../net/citizensnpcs/nms/v1_14_R1/util/NMSImpl.java | 8 ++++++++ .../net/citizensnpcs/nms/v1_15_R1/util/NMSImpl.java | 8 ++++++++ .../net/citizensnpcs/nms/v1_16_R3/util/NMSImpl.java | 8 ++++++++ .../net/citizensnpcs/nms/v1_17_R1/util/NMSImpl.java | 10 +++++++++- .../net/citizensnpcs/nms/v1_18_R2/util/NMSImpl.java | 8 ++++++++ .../net/citizensnpcs/nms/v1_19_R3/util/NMSImpl.java | 8 ++++++++ .../net/citizensnpcs/nms/v1_20_R3/util/NMSImpl.java | 8 ++++++++ .../net/citizensnpcs/nms/v1_8_R3/util/NMSImpl.java | 7 ------- 13 files changed, 63 insertions(+), 37 deletions(-) diff --git a/main/src/main/java/net/citizensnpcs/trait/SneakTrait.java b/main/src/main/java/net/citizensnpcs/trait/SneakTrait.java index 05d53d9b8..2378c6f1b 100644 --- a/main/src/main/java/net/citizensnpcs/trait/SneakTrait.java +++ b/main/src/main/java/net/citizensnpcs/trait/SneakTrait.java @@ -8,7 +8,7 @@ import net.citizensnpcs.util.NMS; @TraitName("sneak") public class SneakTrait extends Trait { @Persist - private boolean sneaking = true; + private boolean sneaking; public SneakTrait() { super("sneak"); @@ -24,6 +24,11 @@ public class SneakTrait extends Trait { return sneaking; } + @Override + public void onAttach() { + sneaking = NMS.isSneaking(npc.getEntity()); + } + @Override public void onSpawn() { apply(); diff --git a/v1_10_R1/src/main/java/net/citizensnpcs/nms/v1_10_R1/util/NMSImpl.java b/v1_10_R1/src/main/java/net/citizensnpcs/nms/v1_10_R1/util/NMSImpl.java index 9bb7c8b0a..ff520a4bc 100644 --- a/v1_10_R1/src/main/java/net/citizensnpcs/nms/v1_10_R1/util/NMSImpl.java +++ b/v1_10_R1/src/main/java/net/citizensnpcs/nms/v1_10_R1/util/NMSImpl.java @@ -1318,13 +1318,6 @@ public class NMSImpl implements NMSBridge { ((EntityTameableAnimal) NMSImpl.getHandle((LivingEntity) tameable)).setSitting(sitting); } - @Override - public void setSneaking(org.bukkit.entity.Entity entity, boolean sneaking) { - if (entity instanceof Player) { - ((Player) entity).setSneaking(sneaking); - } - } - @Override public void setStepHeight(org.bukkit.entity.Entity entity, float height) { NMSImpl.getHandle(entity).P = height; diff --git a/v1_11_R1/src/main/java/net/citizensnpcs/nms/v1_11_R1/util/NMSImpl.java b/v1_11_R1/src/main/java/net/citizensnpcs/nms/v1_11_R1/util/NMSImpl.java index c45e86530..382805f46 100644 --- a/v1_11_R1/src/main/java/net/citizensnpcs/nms/v1_11_R1/util/NMSImpl.java +++ b/v1_11_R1/src/main/java/net/citizensnpcs/nms/v1_11_R1/util/NMSImpl.java @@ -1371,13 +1371,6 @@ public class NMSImpl implements NMSBridge { ((EntityTameableAnimal) NMSImpl.getHandle((LivingEntity) tameable)).setSitting(sitting); } - @Override - public void setSneaking(org.bukkit.entity.Entity entity, boolean sneaking) { - if (entity instanceof Player) { - ((Player) entity).setSneaking(sneaking); - } - } - @Override public void setStepHeight(org.bukkit.entity.Entity entity, float height) { NMSImpl.getHandle(entity).P = height; diff --git a/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/util/NMSImpl.java b/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/util/NMSImpl.java index e66a5c25f..df3833594 100644 --- a/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/util/NMSImpl.java +++ b/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/util/NMSImpl.java @@ -1378,13 +1378,6 @@ public class NMSImpl implements NMSBridge { ((EntityTameableAnimal) NMSImpl.getHandle((LivingEntity) tameable)).setSitting(sitting); } - @Override - public void setSneaking(org.bukkit.entity.Entity entity, boolean sneaking) { - if (entity instanceof Player) { - ((Player) entity).setSneaking(sneaking); - } - } - @Override public void setStepHeight(org.bukkit.entity.Entity entity, float height) { NMSImpl.getHandle(entity).P = height; diff --git a/v1_13_R2/src/main/java/net/citizensnpcs/nms/v1_13_R2/util/NMSImpl.java b/v1_13_R2/src/main/java/net/citizensnpcs/nms/v1_13_R2/util/NMSImpl.java index 3aab49425..169ad66b7 100644 --- a/v1_13_R2/src/main/java/net/citizensnpcs/nms/v1_13_R2/util/NMSImpl.java +++ b/v1_13_R2/src/main/java/net/citizensnpcs/nms/v1_13_R2/util/NMSImpl.java @@ -1415,13 +1415,6 @@ public class NMSImpl implements NMSBridge { ((EntityTameableAnimal) NMSImpl.getHandle((LivingEntity) tameable)).setSitting(sitting); } - @Override - public void setSneaking(org.bukkit.entity.Entity entity, boolean sneaking) { - if (entity instanceof Player) { - ((Player) entity).setSneaking(sneaking); - } - } - @Override public void setStepHeight(org.bukkit.entity.Entity entity, float height) { NMSImpl.getHandle(entity).Q = height; diff --git a/v1_14_R1/src/main/java/net/citizensnpcs/nms/v1_14_R1/util/NMSImpl.java b/v1_14_R1/src/main/java/net/citizensnpcs/nms/v1_14_R1/util/NMSImpl.java index a16219ba5..221ee7e1b 100644 --- a/v1_14_R1/src/main/java/net/citizensnpcs/nms/v1_14_R1/util/NMSImpl.java +++ b/v1_14_R1/src/main/java/net/citizensnpcs/nms/v1_14_R1/util/NMSImpl.java @@ -836,6 +836,14 @@ public class NMSImpl implements NMSBridge { return NMSImpl.getHandle(entity).onGround; } + @Override + public boolean isSneaking(org.bukkit.entity.Entity entity) { + if (entity instanceof Player) { + return ((Player) entity).isSneaking(); + } + return getHandle(entity).getPose() == EntityPose.SNEAKING; + } + @Override public boolean isSolid(org.bukkit.block.Block in) { IBlockData data = ((CraftBlock) in).getNMS(); diff --git a/v1_15_R1/src/main/java/net/citizensnpcs/nms/v1_15_R1/util/NMSImpl.java b/v1_15_R1/src/main/java/net/citizensnpcs/nms/v1_15_R1/util/NMSImpl.java index 3280f7cdf..328a43afb 100644 --- a/v1_15_R1/src/main/java/net/citizensnpcs/nms/v1_15_R1/util/NMSImpl.java +++ b/v1_15_R1/src/main/java/net/citizensnpcs/nms/v1_15_R1/util/NMSImpl.java @@ -851,6 +851,14 @@ public class NMSImpl implements NMSBridge { return NMSImpl.getHandle(entity).onGround; } + @Override + public boolean isSneaking(org.bukkit.entity.Entity entity) { + if (entity instanceof Player) { + return ((Player) entity).isSneaking(); + } + return getHandle(entity).getPose() == EntityPose.CROUCHING; + } + @Override public boolean isSolid(org.bukkit.block.Block in) { IBlockData data = ((CraftBlock) in).getNMS(); diff --git a/v1_16_R3/src/main/java/net/citizensnpcs/nms/v1_16_R3/util/NMSImpl.java b/v1_16_R3/src/main/java/net/citizensnpcs/nms/v1_16_R3/util/NMSImpl.java index 2c7e369c2..b41d26eea 100644 --- a/v1_16_R3/src/main/java/net/citizensnpcs/nms/v1_16_R3/util/NMSImpl.java +++ b/v1_16_R3/src/main/java/net/citizensnpcs/nms/v1_16_R3/util/NMSImpl.java @@ -875,6 +875,14 @@ public class NMSImpl implements NMSBridge { return NMSImpl.getHandle(entity).isOnGround(); } + @Override + public boolean isSneaking(org.bukkit.entity.Entity entity) { + if (entity instanceof Player) { + return ((Player) entity).isSneaking(); + } + return getHandle(entity).getPose() == EntityPose.CROUCHING; + } + @Override public boolean isSolid(org.bukkit.block.Block in) { IBlockData data = ((CraftBlock) in).getNMS(); diff --git a/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/util/NMSImpl.java b/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/util/NMSImpl.java index 3c4f4232c..3ac25ce1c 100644 --- a/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/util/NMSImpl.java +++ b/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/util/NMSImpl.java @@ -657,7 +657,7 @@ public class NMSImpl implements NMSBridge { entry.broadcastRemoved(); } }; - } + } @Override public List getPassengers(org.bukkit.entity.Entity entity) { @@ -877,6 +877,14 @@ public class NMSImpl implements NMSBridge { return NMSImpl.getHandle(entity).isOnGround(); } + @Override + public boolean isSneaking(org.bukkit.entity.Entity entity) { + if (entity instanceof Player) { + return ((Player) entity).isSneaking(); + } + return getHandle(entity).getPose() == Pose.CROUCHING; + } + @Override public boolean isSolid(org.bukkit.block.Block in) { BlockState data = ((CraftBlock) in).getNMS(); diff --git a/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/util/NMSImpl.java b/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/util/NMSImpl.java index 9ef348626..944d59d40 100644 --- a/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/util/NMSImpl.java +++ b/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/util/NMSImpl.java @@ -884,6 +884,14 @@ public class NMSImpl implements NMSBridge { return NMSImpl.getHandle(entity).isOnGround(); } + @Override + public boolean isSneaking(org.bukkit.entity.Entity entity) { + if (entity instanceof Player) { + return ((Player) entity).isSneaking(); + } + return getHandle(entity).getPose() == Pose.CROUCHING; + } + @Override public boolean isSolid(org.bukkit.block.Block in) { BlockState data = ((CraftBlock) in).getNMS(); diff --git a/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/util/NMSImpl.java b/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/util/NMSImpl.java index b13c361ae..b2af47e1d 100644 --- a/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/util/NMSImpl.java +++ b/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/util/NMSImpl.java @@ -925,6 +925,14 @@ public class NMSImpl implements NMSBridge { return getHandle(entity).isOnGround(); } + @Override + public boolean isSneaking(org.bukkit.entity.Entity entity) { + if (entity instanceof Player) { + return ((Player) entity).isSneaking(); + } + return getHandle(entity).getPose() == Pose.CROUCHING; + } + @Override public boolean isSolid(org.bukkit.block.Block in) { BlockState data = ((CraftBlock) in).getNMS(); diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/NMSImpl.java b/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/NMSImpl.java index c6885b805..65eb0806d 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/NMSImpl.java +++ b/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/NMSImpl.java @@ -895,6 +895,14 @@ public class NMSImpl implements NMSBridge { return getHandle(entity).onGround(); } + @Override + public boolean isSneaking(org.bukkit.entity.Entity entity) { + if (entity instanceof Player) { + return ((Player) entity).isSneaking(); + } + return getHandle(entity).getPose() == Pose.CROUCHING; + } + @Override public boolean isSolid(org.bukkit.block.Block in) { BlockState data = ((CraftBlock) in).getNMS(); diff --git a/v1_8_R3/src/main/java/net/citizensnpcs/nms/v1_8_R3/util/NMSImpl.java b/v1_8_R3/src/main/java/net/citizensnpcs/nms/v1_8_R3/util/NMSImpl.java index 3e7f5fbb7..690c1466b 100644 --- a/v1_8_R3/src/main/java/net/citizensnpcs/nms/v1_8_R3/util/NMSImpl.java +++ b/v1_8_R3/src/main/java/net/citizensnpcs/nms/v1_8_R3/util/NMSImpl.java @@ -1228,13 +1228,6 @@ public class NMSImpl implements NMSBridge { ((EntityTameableAnimal) NMSImpl.getHandle((LivingEntity) tameable)).setSitting(sitting); } - @Override - public void setSneaking(org.bukkit.entity.Entity entity, boolean sneaking) { - if (entity instanceof Player) { - ((Player) entity).setSneaking(sneaking); - } - } - @Override public void setStepHeight(org.bukkit.entity.Entity entity, float height) { NMSImpl.getHandle(entity).S = height;