mirror of
https://github.com/CitizensDev/Citizens2.git
synced 2025-02-20 14:21:20 +01:00
Fix an issue with /npc metadata and enum keys, set lookclose target to null if not enabled
This commit is contained in:
parent
7db27a3eee
commit
6a8300980d
@ -241,7 +241,7 @@ public class Settings {
|
|||||||
STORAGE_FILE("storage.file", "saves.yml"),
|
STORAGE_FILE("storage.file", "saves.yml"),
|
||||||
STORAGE_TYPE("Although technically Citizens can use NBT storage, it is not well tested and YAML is recommended",
|
STORAGE_TYPE("Although technically Citizens can use NBT storage, it is not well tested and YAML is recommended",
|
||||||
"storage.type", "yaml"),
|
"storage.type", "yaml"),
|
||||||
STUCK_ACTION(
|
DEFAULT_STUCK_ACTION(
|
||||||
"The default action to perform when NPCs are unable to find a path or are stuck in the same block for too long. Supported options are: 'teleport to destination' or 'none'",
|
"The default action to perform when NPCs are unable to find a path or are stuck in the same block for too long. Supported options are: 'teleport to destination' or 'none'",
|
||||||
"npc.pathfinding.default-stuck-action", "teleport to destination"),
|
"npc.pathfinding.default-stuck-action", "teleport to destination"),
|
||||||
TABLIST_REMOVE_PACKET_DELAY("How long to wait before sending the tablist remove packet",
|
TABLIST_REMOVE_PACKET_DELAY("How long to wait before sending the tablist remove packet",
|
||||||
|
@ -1566,12 +1566,16 @@ public class NPCCommands {
|
|||||||
npc.data().setPersistent(key, metadata);
|
npc.data().setPersistent(key, metadata);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Messaging.sendTr(sender, Messages.METADATA_SET, key, args.getString(3));
|
Messaging.sendTr(sender, Messages.METADATA_SET, enumKey != null ? enumKey : key, args.getString(3));
|
||||||
} else if (command.equals("get")) {
|
} else if (command.equals("get")) {
|
||||||
if (args.argsLength() != 3) {
|
if (args.argsLength() != 3) {
|
||||||
throw new CommandException();
|
throw new CommandException();
|
||||||
}
|
}
|
||||||
sender.sendMessage(enumKey != null ? npc.data().get(enumKey, "null") : npc.data().get(key, "null"));
|
Object data = enumKey != null ? npc.data().get(enumKey) : npc.data().get(key);
|
||||||
|
if (data == null) {
|
||||||
|
data = "null";
|
||||||
|
}
|
||||||
|
sender.sendMessage(data.toString());
|
||||||
} else if (command.equals("remove")) {
|
} else if (command.equals("remove")) {
|
||||||
if (args.argsLength() != 3) {
|
if (args.argsLength() != 3) {
|
||||||
throw new CommandException();
|
throw new CommandException();
|
||||||
@ -1581,7 +1585,7 @@ public class NPCCommands {
|
|||||||
} else {
|
} else {
|
||||||
npc.data().remove(key);
|
npc.data().remove(key);
|
||||||
}
|
}
|
||||||
Messaging.sendTr(sender, Messages.METADATA_UNSET, key, npc.getName());
|
Messaging.sendTr(sender, Messages.METADATA_UNSET, enumKey != null ? enumKey : key, npc.getName());
|
||||||
} else {
|
} else {
|
||||||
throw new CommandUsageException();
|
throw new CommandUsageException();
|
||||||
}
|
}
|
||||||
|
@ -66,9 +66,9 @@ public class WaypointCommands {
|
|||||||
permission = "citizens.waypoints.disableteleport")
|
permission = "citizens.waypoints.disableteleport")
|
||||||
public void disableTeleporting(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
|
public void disableTeleporting(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
|
||||||
npc.data().setPersistent(NPC.Metadata.DISABLE_DEFAULT_STUCK_ACTION, !npc.data()
|
npc.data().setPersistent(NPC.Metadata.DISABLE_DEFAULT_STUCK_ACTION, !npc.data()
|
||||||
.get(NPC.Metadata.DISABLE_DEFAULT_STUCK_ACTION, !Setting.STUCK_ACTION.asString().contains("teleport")));
|
.get(NPC.Metadata.DISABLE_DEFAULT_STUCK_ACTION, !Setting.DEFAULT_STUCK_ACTION.asString().contains("teleport")));
|
||||||
if (npc.data().get(NPC.Metadata.DISABLE_DEFAULT_STUCK_ACTION,
|
if (npc.data().get(NPC.Metadata.DISABLE_DEFAULT_STUCK_ACTION,
|
||||||
!Setting.STUCK_ACTION.asString().contains("teleport"))) {
|
!Setting.DEFAULT_STUCK_ACTION.asString().contains("teleport"))) {
|
||||||
npc.getNavigator().getDefaultParameters().stuckAction(null);
|
npc.getNavigator().getDefaultParameters().stuckAction(null);
|
||||||
Messaging.sendTr(sender, Messages.WAYPOINT_TELEPORTING_DISABLED, npc.getName());
|
Messaging.sendTr(sender, Messages.WAYPOINT_TELEPORTING_DISABLED, npc.getName());
|
||||||
} else {
|
} else {
|
||||||
|
@ -68,7 +68,7 @@ public class CitizensNavigator implements Navigator, Runnable {
|
|||||||
public CitizensNavigator(NPC npc) {
|
public CitizensNavigator(NPC npc) {
|
||||||
this.npc = npc;
|
this.npc = npc;
|
||||||
if (npc.data().get(NPC.Metadata.DISABLE_DEFAULT_STUCK_ACTION,
|
if (npc.data().get(NPC.Metadata.DISABLE_DEFAULT_STUCK_ACTION,
|
||||||
!Setting.STUCK_ACTION.asString().contains("teleport"))) {
|
!Setting.DEFAULT_STUCK_ACTION.asString().contains("teleport"))) {
|
||||||
defaultParams.stuckAction(null);
|
defaultParams.stuckAction(null);
|
||||||
}
|
}
|
||||||
defaultParams.examiner(new SwimmingExaminer(npc));
|
defaultParams.examiner(new SwimmingExaminer(npc));
|
||||||
|
@ -267,8 +267,10 @@ public class LookClose extends Trait implements Toggleable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if (!npc.isSpawned())
|
if (!npc.isSpawned()) {
|
||||||
|
lookingAt = null;
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (enableRandomLook) {
|
if (enableRandomLook) {
|
||||||
if (!npc.getNavigator().isNavigating() && lookingAt == null && t <= 0) {
|
if (!npc.getNavigator().isNavigating() && lookingAt == null && t <= 0) {
|
||||||
@ -278,11 +280,15 @@ public class LookClose extends Trait implements Toggleable {
|
|||||||
}
|
}
|
||||||
t--;
|
t--;
|
||||||
|
|
||||||
if (!enabled)
|
if (!enabled) {
|
||||||
|
lookingAt = null;
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (npc.getNavigator().isNavigating() && disableWhileNavigating())
|
if (npc.getNavigator().isNavigating() && disableWhileNavigating()) {
|
||||||
|
lookingAt = null;
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
npc.getEntity().getLocation(NPC_LOCATION);
|
npc.getEntity().getLocation(NPC_LOCATION);
|
||||||
findNewTarget();
|
findNewTarget();
|
||||||
|
Loading…
Reference in New Issue
Block a user