Check player world in lookclose

This commit is contained in:
fullwall 2024-03-25 00:39:47 +08:00
parent 8f538721cc
commit 321088784c
3 changed files with 9 additions and 6 deletions

View File

@ -704,8 +704,8 @@ public class CommandTrait extends Trait {
for (DataKey key : root.getRelative("itemCost").getIntegerSubKeys()) {
items.add(ItemStorage.loadItemStack(key));
}
double cost = root.keyExists("cost") ? root.getDouble("cost") : -1;
int exp = root.keyExists("experienceCost") ? root.getInt("experienceCost") : -1;
double cost = root.getDouble("cost", -1);
int exp = root.getInt("experienceCost", -1);
return new NPCCommand(Integer.parseInt(root.name()), root.getString("command"),
Hand.valueOf(root.getString("hand")), Boolean.parseBoolean(root.getString("player")),
Boolean.parseBoolean(root.getString("op")), root.getInt("cooldown"), perms, root.getInt("n"),

View File

@ -637,7 +637,7 @@ public class HologramTrait extends Trait {
public static class TabCompletions implements CompletionsProvider {
@Override
public Collection<String> getCompletions(CommandContext args, CommandSender sender, NPC npc) {
if (npc != null && LINE_ARGS.contains(args.getString(1).toLowerCase())) {
if (args.length() > 1 && npc != null && LINE_ARGS.contains(args.getString(1).toLowerCase())) {
HologramTrait ht = npc.getOrAddTrait(HologramTrait.class);
return IntStream.range(0, ht.getLines().size()).mapToObj(Integer::toString)
.collect(Collectors.toList());

View File

@ -147,9 +147,9 @@ public class LookClose extends Trait implements Toggleable {
Location npcLoc = npc.getStoredLocation();
for (Player player : getNearbyPlayers()) {
double dist = player.getLocation().distance(npcLoc);
if (dist > min) {
if (dist > min)
continue;
}
min = dist;
lookingAt = player;
}
@ -172,7 +172,10 @@ public class LookClose extends Trait implements Toggleable {
.map(e -> (Player) e).collect(Collectors.toList())
: CitizensAPI.getLocationLookup().getNearbyPlayers(npcLoc, range);
for (Player player : nearby) {
if (player == lookingAt || !targetNPCs && CitizensAPI.getNPCRegistry().getNPC(player) != null)
if (player == lookingAt || player.getWorld() != npc.getEntity().getWorld())
continue;
if (!targetNPCs && CitizensAPI.getNPCRegistry().getNPC(player) != null)
continue;
if (isInvisible(player))