From 2736f4ab530c010e483a653ed2459b95d1d037a8 Mon Sep 17 00:00:00 2001 From: fullwall Date: Wed, 1 Nov 2023 01:24:23 +0800 Subject: [PATCH] Add sitting height offset correction check --- .../java/net/citizensnpcs/trait/SitTrait.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/main/src/main/java/net/citizensnpcs/trait/SitTrait.java b/main/src/main/java/net/citizensnpcs/trait/SitTrait.java index 0d4fe4d07..e23b55f25 100644 --- a/main/src/main/java/net/citizensnpcs/trait/SitTrait.java +++ b/main/src/main/java/net/citizensnpcs/trait/SitTrait.java @@ -12,6 +12,7 @@ import net.citizensnpcs.api.npc.NPCRegistry; import net.citizensnpcs.api.persistence.Persist; import net.citizensnpcs.api.trait.Trait; import net.citizensnpcs.api.trait.TraitName; +import net.citizensnpcs.api.util.SpigotUtil; import net.citizensnpcs.util.NMS; @TraitName("sittrait") @@ -38,7 +39,11 @@ public class SitTrait extends Trait { if (chair != null) { if (chair.getEntity() != null) { chair.getEntity().eject(); - npc.getEntity().teleport(npc.getEntity().getLocation().clone().add(0, 0.3, 0)); + Location npcLoc = npc.getEntity().getLocation().clone(); + if (requiresPassengerOffsetCorrection()) { + npcLoc = npcLoc.add(0, 0.3, 0); + } + npc.getEntity().teleport(npcLoc); } chair.destroy(); chair = null; @@ -50,6 +55,11 @@ public class SitTrait extends Trait { onDespawn(); } + private boolean requiresPassengerOffsetCorrection() { + return SpigotUtil.getVersion() != null && SpigotUtil.getVersion().length >= 2 + && SpigotUtil.getVersion()[1] <= 19; + } + @Override public void run() { if (!npc.isSpawned() || !isSitting()) @@ -86,7 +96,11 @@ public class SitTrait extends Trait { } public void setSitting(Location at) { - this.sittingAt = at != null ? at.clone().add(0, -0.3, 0) : null; + this.sittingAt = at != null ? at.clone() : null; + if (requiresPassengerOffsetCorrection()) { + sittingAt = sittingAt.add(0, 0.3, 0); + } + if (at == null) { onDespawn(); }