Try to detect sneaking state onAttach for SneakTrait

This commit is contained in:
fullwall 2024-03-03 23:14:11 +08:00
parent b6f5184192
commit ed117eac96
13 changed files with 63 additions and 37 deletions

View File

@ -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();

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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();

View File

@ -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();

View File

@ -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();

View File

@ -657,7 +657,7 @@ public class NMSImpl implements NMSBridge {
entry.broadcastRemoved();
}
};
}
}
@Override
public List<org.bukkit.entity.Entity> 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();

View File

@ -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();

View File

@ -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();

View File

@ -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();

View File

@ -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;