mirror of
https://github.com/CitizensDev/Citizens2.git
synced 2025-02-18 05:11:37 +01:00
Refactor getHeight for NMS
This commit is contained in:
parent
942b354967
commit
d333c98823
@ -9,6 +9,7 @@ import net.citizensnpcs.api.astar.pathfinder.BlockSource;
|
|||||||
import net.citizensnpcs.api.astar.pathfinder.MinecraftBlockExaminer;
|
import net.citizensnpcs.api.astar.pathfinder.MinecraftBlockExaminer;
|
||||||
import net.citizensnpcs.api.astar.pathfinder.PathPoint;
|
import net.citizensnpcs.api.astar.pathfinder.PathPoint;
|
||||||
import net.citizensnpcs.api.util.BoundingBox;
|
import net.citizensnpcs.api.util.BoundingBox;
|
||||||
|
import net.citizensnpcs.util.NMS;
|
||||||
|
|
||||||
public class BoundingBoxExaminer implements BlockExaminer {
|
public class BoundingBoxExaminer implements BlockExaminer {
|
||||||
private double height;
|
private double height;
|
||||||
@ -16,8 +17,8 @@ public class BoundingBoxExaminer implements BlockExaminer {
|
|||||||
|
|
||||||
public BoundingBoxExaminer(Entity entity) {
|
public BoundingBoxExaminer(Entity entity) {
|
||||||
if (entity != null) {
|
if (entity != null) {
|
||||||
this.height = entity.getHeight();
|
this.height = NMS.getHeight(entity);
|
||||||
this.width = entity.getWidth();
|
this.width = NMS.getWidth(entity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ import net.citizensnpcs.api.persistence.Persist;
|
|||||||
import net.citizensnpcs.api.trait.Trait;
|
import net.citizensnpcs.api.trait.Trait;
|
||||||
import net.citizensnpcs.api.trait.TraitName;
|
import net.citizensnpcs.api.trait.TraitName;
|
||||||
import net.citizensnpcs.api.util.Placeholders;
|
import net.citizensnpcs.api.util.Placeholders;
|
||||||
|
import net.citizensnpcs.util.NMS;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Persists a hologram attached to the NPC.
|
* Persists a hologram attached to the NPC.
|
||||||
@ -42,6 +43,17 @@ public class HologramTrait extends Trait {
|
|||||||
load();
|
load();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private double getEntityHeight() {
|
||||||
|
if (SUPPORT_GET_HEIGHT) {
|
||||||
|
try {
|
||||||
|
return npc.getEntity().getHeight();
|
||||||
|
} catch (NoSuchMethodError err) {
|
||||||
|
SUPPORT_GET_HEIGHT = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NMS.getHeight(npc.getEntity());
|
||||||
|
}
|
||||||
|
|
||||||
private double getHeight(int lineNumber) {
|
private double getHeight(int lineNumber) {
|
||||||
return (lineHeight == -1 ? Setting.DEFAULT_NPC_HOLOGRAM_LINE_HEIGHT.asDouble() : lineHeight) * (lineNumber + 1);
|
return (lineHeight == -1 ? Setting.DEFAULT_NPC_HOLOGRAM_LINE_HEIGHT.asDouble() : lineHeight) * (lineNumber + 1);
|
||||||
}
|
}
|
||||||
@ -62,7 +74,7 @@ public class HologramTrait extends Trait {
|
|||||||
trait.setGravity(false);
|
trait.setGravity(false);
|
||||||
trait.setHasArms(false);
|
trait.setHasArms(false);
|
||||||
trait.setHasBaseplate(false);
|
trait.setHasBaseplate(false);
|
||||||
hologramNPC.spawn(currentLoc.clone().add(0, npc.getEntity().getHeight() + getHeight(i), 0));
|
hologramNPC.spawn(currentLoc.clone().add(0, getEntityHeight() + getHeight(i), 0));
|
||||||
hologramNPC.getEntity().setInvulnerable(true);
|
hologramNPC.getEntity().setInvulnerable(true);
|
||||||
hologramNPCs.add(hologramNPC);
|
hologramNPCs.add(hologramNPC);
|
||||||
i++;
|
i++;
|
||||||
@ -106,7 +118,7 @@ public class HologramTrait extends Trait {
|
|||||||
if (hologram == null)
|
if (hologram == null)
|
||||||
continue;
|
continue;
|
||||||
if (update) {
|
if (update) {
|
||||||
hologramNPC.teleport(currentLoc.clone().add(0, npc.getEntity().getHeight() + getHeight(i), 0),
|
hologramNPC.teleport(currentLoc.clone().add(0, getEntityHeight() + getHeight(i), 0),
|
||||||
TeleportCause.PLUGIN);
|
TeleportCause.PLUGIN);
|
||||||
}
|
}
|
||||||
String text = lines.get(i);
|
String text = lines.get(i);
|
||||||
@ -133,4 +145,6 @@ public class HologramTrait extends Trait {
|
|||||||
}
|
}
|
||||||
hologramNPCs.clear();
|
hologramNPCs.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean SUPPORT_GET_HEIGHT = true;
|
||||||
}
|
}
|
||||||
|
@ -187,6 +187,10 @@ public class NMS {
|
|||||||
return BRIDGE.getHeadYaw(entity);
|
return BRIDGE.getHeadYaw(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static double getHeight(Entity entity) {
|
||||||
|
return BRIDGE.getHeight(entity);
|
||||||
|
}
|
||||||
|
|
||||||
public static float getHorizontalMovement(org.bukkit.entity.Entity bukkitEntity) {
|
public static float getHorizontalMovement(org.bukkit.entity.Entity bukkitEntity) {
|
||||||
return BRIDGE.getHorizontalMovement(bukkitEntity);
|
return BRIDGE.getHorizontalMovement(bukkitEntity);
|
||||||
}
|
}
|
||||||
@ -279,6 +283,10 @@ public class NMS {
|
|||||||
return BRIDGE.getVerticalMovement(bukkitEntity);
|
return BRIDGE.getVerticalMovement(bukkitEntity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static double getWidth(Entity entity) {
|
||||||
|
return BRIDGE.getWidth(entity);
|
||||||
|
}
|
||||||
|
|
||||||
public static float getYaw(Entity entity) {
|
public static float getYaw(Entity entity) {
|
||||||
return BRIDGE.getYaw(entity);
|
return BRIDGE.getYaw(entity);
|
||||||
}
|
}
|
||||||
|
@ -55,6 +55,8 @@ public interface NMSBridge {
|
|||||||
|
|
||||||
public float getHeadYaw(Entity entity);
|
public float getHeadYaw(Entity entity);
|
||||||
|
|
||||||
|
public double getHeight(Entity entity);
|
||||||
|
|
||||||
public float getHorizontalMovement(Entity entity);
|
public float getHorizontalMovement(Entity entity);
|
||||||
|
|
||||||
public NPC getNPC(Entity entity);
|
public NPC getNPC(Entity entity);
|
||||||
@ -79,6 +81,8 @@ public interface NMSBridge {
|
|||||||
|
|
||||||
public float getVerticalMovement(Entity entity);
|
public float getVerticalMovement(Entity entity);
|
||||||
|
|
||||||
|
public double getWidth(Entity entity);
|
||||||
|
|
||||||
public float getYaw(Entity entity);
|
public float getYaw(Entity entity);
|
||||||
|
|
||||||
public boolean isOnGround(Entity entity);
|
public boolean isOnGround(Entity entity);
|
||||||
|
@ -369,6 +369,11 @@ public class NMSImpl implements NMSBridge {
|
|||||||
return getHandle((LivingEntity) entity).aQ;
|
return getHandle((LivingEntity) entity).aQ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getHeight(org.bukkit.entity.Entity entity) {
|
||||||
|
return getHandle(entity).length;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float getHorizontalMovement(org.bukkit.entity.Entity entity) {
|
public float getHorizontalMovement(org.bukkit.entity.Entity entity) {
|
||||||
if (!entity.getType().isAlive())
|
if (!entity.getType().isAlive())
|
||||||
@ -564,6 +569,11 @@ public class NMSImpl implements NMSBridge {
|
|||||||
return handle.bf;
|
return handle.bf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getWidth(org.bukkit.entity.Entity entity) {
|
||||||
|
return getHandle(entity).width;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float getYaw(org.bukkit.entity.Entity entity) {
|
public float getYaw(org.bukkit.entity.Entity entity) {
|
||||||
return getHandle(entity).yaw;
|
return getHandle(entity).yaw;
|
||||||
|
@ -388,6 +388,11 @@ public class NMSImpl implements NMSBridge {
|
|||||||
return getHandle((LivingEntity) entity).aP;
|
return getHandle((LivingEntity) entity).aP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getHeight(org.bukkit.entity.Entity entity) {
|
||||||
|
return getHandle(entity).length;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float getHorizontalMovement(org.bukkit.entity.Entity entity) {
|
public float getHorizontalMovement(org.bukkit.entity.Entity entity) {
|
||||||
if (!entity.getType().isAlive())
|
if (!entity.getType().isAlive())
|
||||||
@ -602,6 +607,11 @@ public class NMSImpl implements NMSBridge {
|
|||||||
return handle.be;
|
return handle.be;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getWidth(org.bukkit.entity.Entity entity) {
|
||||||
|
return getHandle(entity).width;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float getYaw(org.bukkit.entity.Entity entity) {
|
public float getYaw(org.bukkit.entity.Entity entity) {
|
||||||
return getHandle(entity).yaw;
|
return getHandle(entity).yaw;
|
||||||
|
@ -392,6 +392,11 @@ public class NMSImpl implements NMSBridge {
|
|||||||
return getHandle((LivingEntity) entity).aP;
|
return getHandle((LivingEntity) entity).aP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getHeight(org.bukkit.entity.Entity entity) {
|
||||||
|
return entity.getHeight();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float getHorizontalMovement(org.bukkit.entity.Entity entity) {
|
public float getHorizontalMovement(org.bukkit.entity.Entity entity) {
|
||||||
if (!entity.getType().isAlive())
|
if (!entity.getType().isAlive())
|
||||||
@ -606,6 +611,11 @@ public class NMSImpl implements NMSBridge {
|
|||||||
return handle.be;
|
return handle.be;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getWidth(org.bukkit.entity.Entity entity) {
|
||||||
|
return entity.getWidth();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float getYaw(org.bukkit.entity.Entity entity) {
|
public float getYaw(org.bukkit.entity.Entity entity) {
|
||||||
return getHandle(entity).yaw;
|
return getHandle(entity).yaw;
|
||||||
|
@ -415,6 +415,11 @@ public class NMSImpl implements NMSBridge {
|
|||||||
return getHandle((LivingEntity) entity).aS;
|
return getHandle((LivingEntity) entity).aS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getHeight(org.bukkit.entity.Entity entity) {
|
||||||
|
return entity.getHeight();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float getHorizontalMovement(org.bukkit.entity.Entity entity) {
|
public float getHorizontalMovement(org.bukkit.entity.Entity entity) {
|
||||||
if (!entity.getType().isAlive())
|
if (!entity.getType().isAlive())
|
||||||
@ -629,6 +634,11 @@ public class NMSImpl implements NMSBridge {
|
|||||||
return handle.bh;
|
return handle.bh;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getWidth(org.bukkit.entity.Entity entity) {
|
||||||
|
return entity.getWidth();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float getYaw(org.bukkit.entity.Entity entity) {
|
public float getYaw(org.bukkit.entity.Entity entity) {
|
||||||
return getHandle(entity).yaw;
|
return getHandle(entity).yaw;
|
||||||
|
@ -451,6 +451,11 @@ public class NMSImpl implements NMSBridge {
|
|||||||
return getHandle((LivingEntity) entity).aM;
|
return getHandle((LivingEntity) entity).aM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getHeight(org.bukkit.entity.Entity entity) {
|
||||||
|
return entity.getHeight();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float getHorizontalMovement(org.bukkit.entity.Entity entity) {
|
public float getHorizontalMovement(org.bukkit.entity.Entity entity) {
|
||||||
if (!entity.getType().isAlive())
|
if (!entity.getType().isAlive())
|
||||||
@ -678,6 +683,11 @@ public class NMSImpl implements NMSBridge {
|
|||||||
return handle.bb;
|
return handle.bb;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getWidth(org.bukkit.entity.Entity entity) {
|
||||||
|
return entity.getWidth();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float getYaw(org.bukkit.entity.Entity entity) {
|
public float getYaw(org.bukkit.entity.Entity entity) {
|
||||||
return getHandle(entity).yaw;
|
return getHandle(entity).yaw;
|
||||||
|
@ -458,6 +458,11 @@ public class NMSImpl implements NMSBridge {
|
|||||||
return getHandle((LivingEntity) entity).aK;
|
return getHandle((LivingEntity) entity).aK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getHeight(org.bukkit.entity.Entity entity) {
|
||||||
|
return entity.getHeight();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float getHorizontalMovement(org.bukkit.entity.Entity entity) {
|
public float getHorizontalMovement(org.bukkit.entity.Entity entity) {
|
||||||
if (!entity.getType().isAlive())
|
if (!entity.getType().isAlive())
|
||||||
@ -686,6 +691,11 @@ public class NMSImpl implements NMSBridge {
|
|||||||
return handle.aZ;
|
return handle.aZ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getWidth(org.bukkit.entity.Entity entity) {
|
||||||
|
return entity.getWidth();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float getYaw(org.bukkit.entity.Entity entity) {
|
public float getYaw(org.bukkit.entity.Entity entity) {
|
||||||
return getHandle(entity).yaw;
|
return getHandle(entity).yaw;
|
||||||
|
@ -464,6 +464,11 @@ public class NMSImpl implements NMSBridge {
|
|||||||
return getHandle((LivingEntity) entity).getHeadRotation();
|
return getHandle((LivingEntity) entity).getHeadRotation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getHeight(org.bukkit.entity.Entity entity) {
|
||||||
|
return entity.getHeight();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float getHorizontalMovement(org.bukkit.entity.Entity entity) {
|
public float getHorizontalMovement(org.bukkit.entity.Entity entity) {
|
||||||
if (!entity.getType().isAlive())
|
if (!entity.getType().isAlive())
|
||||||
@ -692,6 +697,11 @@ public class NMSImpl implements NMSBridge {
|
|||||||
return handle.aY;
|
return handle.aY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getWidth(org.bukkit.entity.Entity entity) {
|
||||||
|
return entity.getWidth();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float getYaw(org.bukkit.entity.Entity entity) {
|
public float getYaw(org.bukkit.entity.Entity entity) {
|
||||||
return getHandle(entity).yaw;
|
return getHandle(entity).yaw;
|
||||||
|
@ -320,6 +320,11 @@ public class NMSImpl implements NMSBridge {
|
|||||||
return getHandle((LivingEntity) entity).aK;
|
return getHandle((LivingEntity) entity).aK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getHeight(org.bukkit.entity.Entity entity) {
|
||||||
|
return getHandle(entity).length;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float getHorizontalMovement(org.bukkit.entity.Entity entity) {
|
public float getHorizontalMovement(org.bukkit.entity.Entity entity) {
|
||||||
if (!entity.getType().isAlive())
|
if (!entity.getType().isAlive())
|
||||||
@ -501,6 +506,11 @@ public class NMSImpl implements NMSBridge {
|
|||||||
return handle.aZ;
|
return handle.aZ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getWidth(org.bukkit.entity.Entity entity) {
|
||||||
|
return getHandle(entity).width;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float getYaw(org.bukkit.entity.Entity entity) {
|
public float getYaw(org.bukkit.entity.Entity entity) {
|
||||||
return getHandle(entity).yaw;
|
return getHandle(entity).yaw;
|
||||||
|
Loading…
Reference in New Issue
Block a user