diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/commands/ListCommand.java b/plugin/src/main/java/lol/pyr/znpcsplus/commands/ListCommand.java index c0571da..09bff36 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/commands/ListCommand.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/commands/ListCommand.java @@ -7,7 +7,6 @@ import lol.pyr.znpcsplus.npc.NpcImpl; import lol.pyr.znpcsplus.npc.NpcRegistryImpl; import lol.pyr.znpcsplus.util.NpcLocation; import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.event.ClickEvent; import net.kyori.adventure.text.format.NamedTextColor; @@ -20,20 +19,20 @@ public class ListCommand implements CommandHandler { @Override public void run(CommandContext context) throws CommandExecutionException { - TextComponent.Builder component = Component.text("Npc List:\n").color(NamedTextColor.GOLD).toBuilder(); + Component component = Component.text("Npc List:", NamedTextColor.GOLD).appendNewline(); for (String id : npcRegistry.getModifiableIds()) { NpcImpl npc = npcRegistry.getById(id).getNpc(); NpcLocation location = npc.getLocation(); - component.append(Component.text("ID: " + id, npc.isEnabled() ? NamedTextColor.GREEN : NamedTextColor.RED)) + component = component.append(Component.text("ID: " + id, npc.isEnabled() ? NamedTextColor.GREEN : NamedTextColor.RED)) .append(Component.text(" | ", NamedTextColor.GRAY)) .append(Component.text("Type: ", NamedTextColor.GREEN)) .append(Component.text(npc.getType().getName(), NamedTextColor.GREEN)) .append(Component.text(" | ", NamedTextColor.GRAY)) .append(Component.text("Location: " + npc.getWorldName() + " X:" + location.getBlockX() + " Y:" + location.getBlockY() + " Z:" + location.getBlockZ(), NamedTextColor.GREEN)) .append(Component.text(" | ", NamedTextColor.GRAY)) - .append(Component.text("[TELEPORT]", NamedTextColor.DARK_GREEN).clickEvent(ClickEvent.runCommand("/znpcsplus:npc teleport " + id))) - .append(Component.text("\n", NamedTextColor.GRAY)); + .append(Component.text("[TELEPORT]", NamedTextColor.DARK_GREEN).clickEvent(ClickEvent.runCommand("/znpcs teleport " + id))) + .appendNewline(); } - context.send(component.build()); + context.send(component); } } diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/commands/NearCommand.java b/plugin/src/main/java/lol/pyr/znpcsplus/commands/NearCommand.java index 27d7f0a..f8fad20 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/commands/NearCommand.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/commands/NearCommand.java @@ -4,11 +4,15 @@ import lol.pyr.director.adventure.command.CommandContext; import lol.pyr.director.adventure.command.CommandHandler; import lol.pyr.director.common.command.CommandExecutionException; import lol.pyr.znpcsplus.npc.NpcEntryImpl; +import lol.pyr.znpcsplus.npc.NpcImpl; import lol.pyr.znpcsplus.npc.NpcRegistryImpl; +import lol.pyr.znpcsplus.util.NpcLocation; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.event.ClickEvent; import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.entity.Player; +import java.util.List; import java.util.stream.Collectors; public class NearCommand implements CommandHandler { @@ -25,14 +29,27 @@ public class NearCommand implements CommandHandler { int raw = context.parse(Integer.class); double radius = Math.pow(raw, 2); - String npcs = npcRegistry.getAllModifiable().stream() + List entries = npcRegistry.getAllModifiable().stream() .filter(entry -> entry.getNpc().getWorld().equals(player.getWorld())) .filter(entry -> entry.getNpc().getBukkitLocation().distanceSquared(player.getLocation()) < radius) - .map(NpcEntryImpl::getId) - .collect(Collectors.joining(", ")); + .collect(Collectors.toList()); - if (npcs.length() == 0) context.halt(Component.text("There are no npcs within " + raw + " blocks around you.", NamedTextColor.RED)); - context.send(Component.text("All NPCs that are within " + raw + " blocks from you:", NamedTextColor.GREEN).appendNewline() - .append(Component.text(npcs, NamedTextColor.GREEN))); + if (entries.isEmpty()) context.halt(Component.text("There are no npcs within " + raw + " blocks around you.", NamedTextColor.RED)); + + Component component = Component.text("All NPCs that are within " + raw + " blocks from you:", NamedTextColor.GOLD).appendNewline(); + for (NpcEntryImpl entry : entries) { + NpcImpl npc = entry.getNpc(); + NpcLocation location = npc.getLocation(); + component = component.append(Component.text("ID: " + entry.getId(), npc.isEnabled() ? NamedTextColor.GREEN : NamedTextColor.RED)) + .append(Component.text(" | ", NamedTextColor.GRAY)) + .append(Component.text("Type: ", NamedTextColor.GREEN)) + .append(Component.text(npc.getType().getName(), NamedTextColor.GREEN)) + .append(Component.text(" | ", NamedTextColor.GRAY)) + .append(Component.text("Location: " + npc.getWorldName() + " X:" + location.getBlockX() + " Y:" + location.getBlockY() + " Z:" + location.getBlockZ(), NamedTextColor.GREEN)) + .append(Component.text(" | ", NamedTextColor.GRAY)) + .append(Component.text("[TELEPORT]", NamedTextColor.DARK_GREEN).clickEvent(ClickEvent.runCommand("/znpcs teleport " + entry.getId()))) + .appendNewline(); + } + context.send(component); } }