diff --git a/main/src/main/java/net/citizensnpcs/Metrics.java b/main/src/main/java/net/citizensnpcs/Metrics.java
index fc52c1d08..cb5091f08 100644
--- a/main/src/main/java/net/citizensnpcs/Metrics.java
+++ b/main/src/main/java/net/citizensnpcs/Metrics.java
@@ -40,7 +40,6 @@ import org.bukkit.plugin.java.JavaPlugin;
*
* Check out https://bStats.org/ to learn more about bStats!
*/
-@SuppressWarnings({ "WeakerAccess", "unused" })
public class Metrics {
diff --git a/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java b/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java
index cb7c84206..2ce35d26f 100644
--- a/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java
+++ b/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java
@@ -2519,7 +2519,7 @@ public class NPCCommands {
@Command(
aliases = { "npc" },
- usage = "rotate (--body [yaw]) (--head [yaw]) (--pitch [pitch]) (-s(mooth))",
+ usage = "rotate (--towards [x,y,z]) (--body [yaw]) (--head [yaw]) (--pitch [pitch]) (-s(mooth))",
desc = "Rotate NPC",
flags = "s",
modifiers = { "rotate" },
@@ -2527,7 +2527,7 @@ public class NPCCommands {
max = 1,
permission = "citizens.npc.rotate")
public void rotate(CommandContext args, CommandSender sender, NPC npc, @Flag("body") Float yaw,
- @Flag("head") Float head, @Flag("pitch") Float pitch) {
+ @Flag("head") Float head, @Flag("pitch") Float pitch, @Flag("towards") Location towards) {
if (args.hasFlag('s')) {
if (pitch == null) {
pitch = npc.getStoredLocation().getPitch();
@@ -2542,6 +2542,10 @@ public class NPCCommands {
npc.getOrAddTrait(RotationTrait.class).getPhysicalSession().rotateToHave(yaw, pitch);
return;
}
+ if (towards != null) {
+ npc.getOrAddTrait(RotationTrait.class).getPhysicalSession().rotateToFace(towards);
+ return;
+ }
if (yaw != null) {
NMS.setBodyYaw(npc.getEntity(), yaw);
if (npc.getEntity().getType() == EntityType.PLAYER) {
diff --git a/main/src/main/java/net/citizensnpcs/npc/CitizensNPC.java b/main/src/main/java/net/citizensnpcs/npc/CitizensNPC.java
index 6a8b84d1f..dc874ba7b 100644
--- a/main/src/main/java/net/citizensnpcs/npc/CitizensNPC.java
+++ b/main/src/main/java/net/citizensnpcs/npc/CitizensNPC.java
@@ -196,8 +196,7 @@ public class CitizensNPC extends AbstractNPC {
@Override
public boolean requiresNameHologram() {
- return super.requiresNameHologram()
- || Setting.ALWAYS_USE_NAME_HOLOGRAM.asBoolean() && !data().has(NPC.Metadata.HOLOGRAM_FOR);
+ return super.requiresNameHologram() || Setting.ALWAYS_USE_NAME_HOLOGRAM.asBoolean();
}
private void resetCachedCoord() {
diff --git a/main/src/main/java/net/citizensnpcs/trait/HologramTrait.java b/main/src/main/java/net/citizensnpcs/trait/HologramTrait.java
index d8db1ac01..4ae8ac1c3 100644
--- a/main/src/main/java/net/citizensnpcs/trait/HologramTrait.java
+++ b/main/src/main/java/net/citizensnpcs/trait/HologramTrait.java
@@ -110,10 +110,10 @@ public class HologramTrait extends Trait {
hologramNPC = registry.createNPC(EntityType.ARMOR_STAND, line);
hologramNPC.getOrAddTrait(ArmorStandTrait.class).setAsHelperEntityWithName(npc);
}
+ hologramNPC.data().set(NPC.Metadata.HOLOGRAM_FOR, npc.getUniqueId().toString());
if (Setting.PACKET_HOLOGRAMS.asBoolean()) {
hologramNPC.addTrait(PacketNPC.class);
}
- hologramNPC.data().set(NPC.Metadata.HOLOGRAM_FOR, npc.getUniqueId().toString());
if (viewRange != -1) {
hologramNPC.data().set(NPC.Metadata.TRACKING_RANGE, viewRange);
}
diff --git a/main/src/main/java/net/citizensnpcs/trait/text/TextBasePrompt.java b/main/src/main/java/net/citizensnpcs/trait/text/TextBasePrompt.java
index bbe26b2d9..c358faa00 100644
--- a/main/src/main/java/net/citizensnpcs/trait/text/TextBasePrompt.java
+++ b/main/src/main/java/net/citizensnpcs/trait/text/TextBasePrompt.java
@@ -28,6 +28,7 @@ public class TextBasePrompt extends StringPrompt {
String input = parts[0];
CommandSender sender = (CommandSender) context.getForWhom();
+ Messaging.send(sender, getPromptText(context));
if (input.equalsIgnoreCase("add")) {
text.add(Joiner.on(' ').join(Arrays.copyOfRange(parts, 1, parts.length)));
return this;
@@ -59,10 +60,7 @@ public class TextBasePrompt extends StringPrompt {
} catch (NumberFormatException e) {
Messaging.sendErrorTr(sender, Messages.TEXT_EDITOR_INVALID_PAGE);
}
- }
- Messaging.send(sender, getPromptText(context));
-
- if (input.equalsIgnoreCase("delay")) {
+ } else if (input.equalsIgnoreCase("delay")) {
try {
int delay = Integer.parseInt(parts[1]);
text.setDelay(delay);
diff --git a/main/src/main/java/net/citizensnpcs/trait/versioned/BossBarTrait.java b/main/src/main/java/net/citizensnpcs/trait/versioned/BossBarTrait.java
index 70b930fbc..b1afe13d3 100644
--- a/main/src/main/java/net/citizensnpcs/trait/versioned/BossBarTrait.java
+++ b/main/src/main/java/net/citizensnpcs/trait/versioned/BossBarTrait.java
@@ -38,7 +38,7 @@ import net.citizensnpcs.util.Util;
@TraitName("bossbar")
public class BossBarTrait extends Trait {
- private BossBar barCache;
+ private BossBar activeBar;
@Persist
private BarColor color = BarColor.PURPLE;
@Persist
@@ -65,11 +65,11 @@ public class BossBarTrait extends Trait {
if (npc.isSpawned() && isBoss(npc.getEntity()) && NMS.getBossBar(npc.getEntity()) != null)
return (BossBar) NMS.getBossBar(npc.getEntity());
- if (barCache == null) {
- barCache = Bukkit.getServer().createBossBar(npc.getFullName(), color, style,
+ if (activeBar == null) {
+ activeBar = Bukkit.getServer().createBossBar(npc.getFullName(), color, style,
flags.toArray(new BarFlag[flags.size()]));
}
- return barCache;
+ return activeBar;
}
public BarColor getColor() {
@@ -114,12 +114,12 @@ public class BossBarTrait extends Trait {
@Override
public void onDespawn() {
- if (barCache == null)
+ if (activeBar == null)
return;
- barCache.removeAll();
- barCache.hide();
- barCache = null;
+ activeBar.removeAll();
+ activeBar.hide();
+ activeBar = null;
}
@Override
diff --git a/main/src/main/java/net/citizensnpcs/trait/versioned/CamelTrait.java b/main/src/main/java/net/citizensnpcs/trait/versioned/CamelTrait.java
index da56e85f2..365ff1ff7 100644
--- a/main/src/main/java/net/citizensnpcs/trait/versioned/CamelTrait.java
+++ b/main/src/main/java/net/citizensnpcs/trait/versioned/CamelTrait.java
@@ -26,6 +26,10 @@ public class CamelTrait extends Trait {
super("cameltrait");
}
+ public CamelPose getPose() {
+ return pose;
+ }
+
@Override
public void run() {
if (npc.isSpawned() && npc.getEntity() instanceof Camel) {
diff --git a/main/src/main/java/net/citizensnpcs/util/NMS.java b/main/src/main/java/net/citizensnpcs/util/NMS.java
index 1d9b6fe6d..082eecb19 100644
--- a/main/src/main/java/net/citizensnpcs/util/NMS.java
+++ b/main/src/main/java/net/citizensnpcs/util/NMS.java
@@ -145,15 +145,15 @@ public class NMS {
BRIDGE.cancelMoveDestination(entity);
}
+ public static Iterable