From 9a69fa4e090810abb9feaa542f8b45b05206bc20 Mon Sep 17 00:00:00 2001 From: D3v1s0m <49519439+D3v1s0m@users.noreply.github.com> Date: Sun, 16 Jul 2023 02:27:54 +0530 Subject: [PATCH 1/5] API improvements --- .../api}/interaction/InteractionAction.java | 7 +------ .../main/java/lol/pyr/znpcsplus/api/npc/Npc.java | 12 ++++++++++++ .../commands/action/ActionEditCommand.java | 4 ++-- .../commands/action/ActionListCommand.java | 4 ++-- .../znpcsplus/conversion/znpcs/ZNpcImporter.java | 4 ++-- .../znpcsplus/interaction/ActionRegistry.java | 1 + .../interaction/InteractionActionImpl.java | 16 ++++++++++++++++ .../interaction/InteractionCommandHandler.java | 2 +- .../interaction/InteractionPacketListener.java | 1 + .../consolecommand/ConsoleCommandAction.java | 4 ++-- .../consolecommand/ConsoleCommandActionType.java | 4 ++-- .../interaction/message/MessageAction.java | 4 ++-- .../interaction/message/MessageActionType.java | 4 ++-- .../interaction/playerchat/PlayerChatAction.java | 4 ++-- .../playerchat/PlayerChatActionType.java | 4 ++-- .../playercommand/PlayerCommandAction.java | 4 ++-- .../playercommand/PlayerCommandActionType.java | 4 ++-- .../switchserver/SwitchServerAction.java | 4 ++-- .../switchserver/SwitchServerActionType.java | 4 ++-- .../main/java/lol/pyr/znpcsplus/npc/NpcImpl.java | 16 +++++++++++----- .../main/java/lol/pyr/znpcsplus/user/User.java | 2 +- 21 files changed, 70 insertions(+), 39 deletions(-) rename {plugin/src/main/java/lol/pyr/znpcsplus => api/src/main/java/lol/pyr/znpcsplus/api}/interaction/InteractionAction.java (69%) create mode 100644 plugin/src/main/java/lol/pyr/znpcsplus/interaction/InteractionActionImpl.java diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/InteractionAction.java b/api/src/main/java/lol/pyr/znpcsplus/api/interaction/InteractionAction.java similarity index 69% rename from plugin/src/main/java/lol/pyr/znpcsplus/interaction/InteractionAction.java rename to api/src/main/java/lol/pyr/znpcsplus/api/interaction/InteractionAction.java index 32eb958..87deb20 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/InteractionAction.java +++ b/api/src/main/java/lol/pyr/znpcsplus/api/interaction/InteractionAction.java @@ -1,8 +1,5 @@ -package lol.pyr.znpcsplus.interaction; +package lol.pyr.znpcsplus.api.interaction; -import lol.pyr.director.adventure.command.CommandContext; -import lol.pyr.znpcsplus.api.interaction.InteractionType; -import net.kyori.adventure.text.Component; import org.bukkit.entity.Player; import java.util.UUID; @@ -31,6 +28,4 @@ public abstract class InteractionAction { } public abstract void run(Player player); - - public abstract Component getInfo(String id, int index, CommandContext context); } diff --git a/api/src/main/java/lol/pyr/znpcsplus/api/npc/Npc.java b/api/src/main/java/lol/pyr/znpcsplus/api/npc/Npc.java index a5f8c40..02dc725 100644 --- a/api/src/main/java/lol/pyr/znpcsplus/api/npc/Npc.java +++ b/api/src/main/java/lol/pyr/znpcsplus/api/npc/Npc.java @@ -2,10 +2,22 @@ package lol.pyr.znpcsplus.api.npc; import lol.pyr.znpcsplus.api.entity.PropertyHolder; import lol.pyr.znpcsplus.api.hologram.Hologram; +import lol.pyr.znpcsplus.api.interaction.InteractionAction; +import lol.pyr.znpcsplus.util.NpcLocation; +import org.bukkit.World; +import java.util.List; import java.util.UUID; public interface Npc extends PropertyHolder { + void setType(NpcType type); + NpcType getType(); + NpcLocation getLocation(); + void setLocation(NpcLocation location); Hologram getHologram(); + void setEnabled(boolean enabled); + boolean isEnabled(); UUID getUuid(); + World getWorld(); + List getActions(); } diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/commands/action/ActionEditCommand.java b/plugin/src/main/java/lol/pyr/znpcsplus/commands/action/ActionEditCommand.java index 4a77c4f..6bf1e21 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/commands/action/ActionEditCommand.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/commands/action/ActionEditCommand.java @@ -4,7 +4,7 @@ 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.interaction.ActionRegistry; -import lol.pyr.znpcsplus.interaction.InteractionAction; +import lol.pyr.znpcsplus.interaction.InteractionActionImpl; import lol.pyr.znpcsplus.interaction.InteractionCommandHandler; import lol.pyr.znpcsplus.npc.NpcEntryImpl; import lol.pyr.znpcsplus.npc.NpcRegistryImpl; @@ -42,7 +42,7 @@ public class ActionEditCommand implements CommandHandler { context.send(Component.text("Invalid action type, available action types:\n" + commands.stream().map(InteractionCommandHandler::getSubcommandName).collect(Collectors.joining(", ")), NamedTextColor.RED)); } - InteractionAction newAction = this.commandHandler.parse(context); + InteractionActionImpl newAction = this.commandHandler.parse(context); entry.getNpc().editAction(index, newAction); context.send(Component.text("Edited action with index " + index + " of Npc " + entry.getId(), NamedTextColor.GREEN)); } diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/commands/action/ActionListCommand.java b/plugin/src/main/java/lol/pyr/znpcsplus/commands/action/ActionListCommand.java index ef4487c..c4e0170 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/commands/action/ActionListCommand.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/commands/action/ActionListCommand.java @@ -3,7 +3,7 @@ package lol.pyr.znpcsplus.commands.action; 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.interaction.InteractionAction; +import lol.pyr.znpcsplus.interaction.InteractionActionImpl; import lol.pyr.znpcsplus.npc.NpcEntryImpl; import lol.pyr.znpcsplus.npc.NpcRegistryImpl; @@ -21,7 +21,7 @@ public class ActionListCommand implements CommandHandler { public void run(CommandContext context) throws CommandExecutionException { context.setUsage(context.getLabel() + " action list "); NpcEntryImpl entry = context.parse(NpcEntryImpl.class); - List actions = entry.getNpc().getActions(); + List actions = entry.getNpc().getActions(); context.send("Actions of Npc " + entry.getId() + ":"); for (int i = 0; i < actions.size(); i++) { context.send(actions.get(i).getInfo(entry.getId(), i, context)); diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/conversion/znpcs/ZNpcImporter.java b/plugin/src/main/java/lol/pyr/znpcsplus/conversion/znpcs/ZNpcImporter.java index 9db8bc6..0acc01e 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/conversion/znpcs/ZNpcImporter.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/conversion/znpcs/ZNpcImporter.java @@ -16,7 +16,7 @@ import lol.pyr.znpcsplus.conversion.znpcs.model.ZNpcsModel; import lol.pyr.znpcsplus.entity.EntityPropertyImpl; import lol.pyr.znpcsplus.entity.EntityPropertyRegistryImpl; import lol.pyr.znpcsplus.hologram.HologramImpl; -import lol.pyr.znpcsplus.interaction.InteractionAction; +import lol.pyr.znpcsplus.interaction.InteractionActionImpl; import lol.pyr.znpcsplus.interaction.consolecommand.ConsoleCommandAction; import lol.pyr.znpcsplus.interaction.message.MessageAction; import lol.pyr.znpcsplus.interaction.playerchat.PlayerChatAction; @@ -148,7 +148,7 @@ public class ZNpcImporter implements DataImporter { throw new IllegalArgumentException("Couldn't adapt znpcs click type: " + clickType); } - private InteractionAction adaptAction(String type, InteractionType clickType, String parameter, int delay) { + private InteractionActionImpl adaptAction(String type, InteractionType clickType, String parameter, int delay) { switch (type.toLowerCase()) { case "cmd": return new PlayerCommandAction(taskScheduler, parameter, clickType, delay * 1000L); diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/ActionRegistry.java b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/ActionRegistry.java index 8f4a8c7..e04f605 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/ActionRegistry.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/ActionRegistry.java @@ -1,5 +1,6 @@ package lol.pyr.znpcsplus.interaction; +import lol.pyr.znpcsplus.api.interaction.InteractionAction; import lol.pyr.znpcsplus.interaction.consolecommand.ConsoleCommandActionType; import lol.pyr.znpcsplus.interaction.message.MessageActionType; import lol.pyr.znpcsplus.interaction.playerchat.PlayerChatActionType; diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/InteractionActionImpl.java b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/InteractionActionImpl.java new file mode 100644 index 0000000..9c2fb48 --- /dev/null +++ b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/InteractionActionImpl.java @@ -0,0 +1,16 @@ +package lol.pyr.znpcsplus.interaction; + +import lol.pyr.director.adventure.command.CommandContext; +import lol.pyr.znpcsplus.api.interaction.InteractionAction; +import lol.pyr.znpcsplus.api.interaction.InteractionType; +import net.kyori.adventure.text.Component; + +public abstract class InteractionActionImpl extends InteractionAction { + protected InteractionActionImpl(long delay, InteractionType interactionType) { + super(delay, interactionType); + } + + public Component getInfo(String id, int index, CommandContext context) { + return null; + } +} diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/InteractionCommandHandler.java b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/InteractionCommandHandler.java index e6367dc..b99b37d 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/InteractionCommandHandler.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/InteractionCommandHandler.java @@ -11,7 +11,7 @@ import net.kyori.adventure.text.format.NamedTextColor; public interface InteractionCommandHandler extends CommandHandler { String getSubcommandName(); - InteractionAction parse(CommandContext context) throws CommandExecutionException; + InteractionActionImpl parse(CommandContext context) throws CommandExecutionException; void appendUsage(CommandContext context); @Override diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/InteractionPacketListener.java b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/InteractionPacketListener.java index 513f566..6169b60 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/InteractionPacketListener.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/InteractionPacketListener.java @@ -5,6 +5,7 @@ import com.github.retrooper.packetevents.event.PacketReceiveEvent; import com.github.retrooper.packetevents.protocol.packettype.PacketType; import com.github.retrooper.packetevents.wrapper.play.client.WrapperPlayClientInteractEntity; import lol.pyr.znpcsplus.api.event.NpcInteractEvent; +import lol.pyr.znpcsplus.api.interaction.InteractionAction; import lol.pyr.znpcsplus.api.interaction.InteractionType; import lol.pyr.znpcsplus.npc.NpcEntryImpl; import lol.pyr.znpcsplus.npc.NpcImpl; diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/consolecommand/ConsoleCommandAction.java b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/consolecommand/ConsoleCommandAction.java index ed06e6d..ba8894f 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/consolecommand/ConsoleCommandAction.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/consolecommand/ConsoleCommandAction.java @@ -2,7 +2,7 @@ package lol.pyr.znpcsplus.interaction.consolecommand; import lol.pyr.director.adventure.command.CommandContext; import lol.pyr.znpcsplus.api.interaction.InteractionType; -import lol.pyr.znpcsplus.interaction.InteractionAction; +import lol.pyr.znpcsplus.interaction.InteractionActionImpl; import lol.pyr.znpcsplus.scheduling.TaskScheduler; import lol.pyr.znpcsplus.util.PapiUtil; import net.kyori.adventure.text.Component; @@ -12,7 +12,7 @@ import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.Bukkit; import org.bukkit.entity.Player; -public class ConsoleCommandAction extends InteractionAction { +public class ConsoleCommandAction extends InteractionActionImpl { private final TaskScheduler scheduler; private final String command; diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/consolecommand/ConsoleCommandActionType.java b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/consolecommand/ConsoleCommandActionType.java index 558c454..4f8c631 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/consolecommand/ConsoleCommandActionType.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/consolecommand/ConsoleCommandActionType.java @@ -3,7 +3,7 @@ package lol.pyr.znpcsplus.interaction.consolecommand; import lol.pyr.director.adventure.command.CommandContext; import lol.pyr.director.common.command.CommandExecutionException; import lol.pyr.znpcsplus.api.interaction.InteractionType; -import lol.pyr.znpcsplus.interaction.InteractionAction; +import lol.pyr.znpcsplus.interaction.InteractionActionImpl; import lol.pyr.znpcsplus.interaction.InteractionActionType; import lol.pyr.znpcsplus.interaction.InteractionCommandHandler; import lol.pyr.znpcsplus.scheduling.TaskScheduler; @@ -48,7 +48,7 @@ public class ConsoleCommandActionType implements InteractionActionType, } @Override - public InteractionAction parse(CommandContext context) throws CommandExecutionException { + public InteractionActionImpl parse(CommandContext context) throws CommandExecutionException { InteractionType type = context.parse(InteractionType.class); long cooldown = (long) (context.parse(Double.class) * 1000D); String message = context.dumpAllArgs(); diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/playerchat/PlayerChatAction.java b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/playerchat/PlayerChatAction.java index 7882646..8d3d05d 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/playerchat/PlayerChatAction.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/playerchat/PlayerChatAction.java @@ -2,7 +2,7 @@ package lol.pyr.znpcsplus.interaction.playerchat; import lol.pyr.director.adventure.command.CommandContext; import lol.pyr.znpcsplus.api.interaction.InteractionType; -import lol.pyr.znpcsplus.interaction.InteractionAction; +import lol.pyr.znpcsplus.interaction.InteractionActionImpl; import lol.pyr.znpcsplus.scheduling.TaskScheduler; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.event.ClickEvent; @@ -10,7 +10,7 @@ import net.kyori.adventure.text.event.HoverEvent; import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.entity.Player; -public class PlayerChatAction extends InteractionAction { +public class PlayerChatAction extends InteractionActionImpl { private final String message; private final TaskScheduler scheduler; diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/playerchat/PlayerChatActionType.java b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/playerchat/PlayerChatActionType.java index 5815ea2..069c2c2 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/playerchat/PlayerChatActionType.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/playerchat/PlayerChatActionType.java @@ -3,7 +3,7 @@ package lol.pyr.znpcsplus.interaction.playerchat; import lol.pyr.director.adventure.command.CommandContext; import lol.pyr.director.common.command.CommandExecutionException; import lol.pyr.znpcsplus.api.interaction.InteractionType; -import lol.pyr.znpcsplus.interaction.InteractionAction; +import lol.pyr.znpcsplus.interaction.InteractionActionImpl; import lol.pyr.znpcsplus.interaction.InteractionActionType; import lol.pyr.znpcsplus.interaction.InteractionCommandHandler; import lol.pyr.znpcsplus.scheduling.TaskScheduler; @@ -47,7 +47,7 @@ public class PlayerChatActionType implements InteractionActionType, Object> propertyMap = new HashMap<>(); - private final List actions = new ArrayList<>(); + private final List actions = new ArrayList<>(); protected NpcImpl(UUID uuid, ConfigManager configManager, LegacyComponentSerializer textSerializer, World world, NpcTypeImpl type, NpcLocation location, PacketFactory packetFactory) { this(uuid, configManager, packetFactory, textSerializer, world.getName(), type, location); @@ -53,6 +54,11 @@ public class NpcImpl extends Viewable implements Npc { UNSAFE_showAll(); } + public void setType(NpcType type) { + if (type == null) throw new IllegalArgumentException("Npc Type cannot be null"); + setType((NpcTypeImpl) type); + } + public NpcTypeImpl getType() { return type; } @@ -157,7 +163,7 @@ public class NpcImpl extends Viewable implements Npc { return Collections.unmodifiableSet(propertyMap.keySet()); } - public List getActions() { + public List getActions() { return Collections.unmodifiableList(actions); } @@ -165,11 +171,11 @@ public class NpcImpl extends Viewable implements Npc { actions.remove(index); } - public void addAction(InteractionAction action) { + public void addAction(InteractionActionImpl action) { actions.add(action); } - public void editAction(int index, InteractionAction action) { + public void editAction(int index, InteractionActionImpl action) { actions.set(index, action); } } diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/user/User.java b/plugin/src/main/java/lol/pyr/znpcsplus/user/User.java index f12ff61..2d9e45f 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/user/User.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/user/User.java @@ -1,6 +1,6 @@ package lol.pyr.znpcsplus.user; -import lol.pyr.znpcsplus.interaction.InteractionAction; +import lol.pyr.znpcsplus.api.interaction.InteractionAction; import org.bukkit.Bukkit; import org.bukkit.entity.Player; From 9cb580c85032659b892e53f0627d5023dfb684e9 Mon Sep 17 00:00:00 2001 From: D3v1s0m <49519439+D3v1s0m@users.noreply.github.com> Date: Sun, 16 Jul 2023 02:29:45 +0530 Subject: [PATCH 2/5] small fix for action edit button --- .../interaction/consolecommand/ConsoleCommandAction.java | 2 +- .../pyr/znpcsplus/interaction/playerchat/PlayerChatAction.java | 2 +- .../interaction/playercommand/PlayerCommandAction.java | 2 +- .../znpcsplus/interaction/switchserver/SwitchServerAction.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/consolecommand/ConsoleCommandAction.java b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/consolecommand/ConsoleCommandAction.java index ba8894f..83b6a1f 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/consolecommand/ConsoleCommandAction.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/consolecommand/ConsoleCommandAction.java @@ -35,7 +35,7 @@ public class ConsoleCommandAction extends InteractionActionImpl { .hoverEvent(HoverEvent.hoverEvent(HoverEvent.Action.SHOW_TEXT, Component.text("Click to edit this action", NamedTextColor.GRAY))) .clickEvent(ClickEvent.clickEvent(ClickEvent.Action.SUGGEST_COMMAND, - "/" + context.getLabel() + " action edit " + id + " " + index + " consolecommand " + " " + getInteractionType().name() + " " + getCooldown()/1000 + " " + command)) + "/" + context.getLabel() + " action edit " + id + " " + index + " consolecommand " + getInteractionType().name() + " " + getCooldown()/1000 + " " + command)) .append(Component.text(" | ", NamedTextColor.GRAY)) .append(Component.text("[DELETE]", NamedTextColor.RED) .hoverEvent(HoverEvent.hoverEvent(HoverEvent.Action.SHOW_TEXT, diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/playerchat/PlayerChatAction.java b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/playerchat/PlayerChatAction.java index 8d3d05d..0b30ae0 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/playerchat/PlayerChatAction.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/playerchat/PlayerChatAction.java @@ -33,7 +33,7 @@ public class PlayerChatAction extends InteractionActionImpl { .hoverEvent(HoverEvent.hoverEvent(HoverEvent.Action.SHOW_TEXT, Component.text("Click to edit this action", NamedTextColor.GRAY))) .clickEvent(ClickEvent.clickEvent(ClickEvent.Action.SUGGEST_COMMAND, - "/" + context.getLabel() + " action edit " + id + " " + index + " playerchat " + " " + getInteractionType().name() + " " + getCooldown()/1000 + " " + message)) + "/" + context.getLabel() + " action edit " + id + " " + index + " playerchat " + getInteractionType().name() + " " + getCooldown()/1000 + " " + message)) .append(Component.text(" | ", NamedTextColor.GRAY)) .append(Component.text("[DELETE]", NamedTextColor.RED) .hoverEvent(HoverEvent.hoverEvent(HoverEvent.Action.SHOW_TEXT, diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/playercommand/PlayerCommandAction.java b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/playercommand/PlayerCommandAction.java index e96c5d1..f94751b 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/playercommand/PlayerCommandAction.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/playercommand/PlayerCommandAction.java @@ -34,7 +34,7 @@ public class PlayerCommandAction extends InteractionActionImpl { .hoverEvent(HoverEvent.hoverEvent(HoverEvent.Action.SHOW_TEXT, Component.text("Click to edit this action", NamedTextColor.GRAY))) .clickEvent(ClickEvent.clickEvent(ClickEvent.Action.SUGGEST_COMMAND, - "/" + context.getLabel() + " action edit " + id + " " + index + " playercommand " + " " + getInteractionType().name() + " " + getCooldown()/1000 + " " + command)) + "/" + context.getLabel() + " action edit " + id + " " + index + " playercommand " + getInteractionType().name() + " " + getCooldown()/1000 + " " + command)) .append(Component.text(" | ", NamedTextColor.GRAY)) .append(Component.text("[DELETE]", NamedTextColor.RED) .hoverEvent(HoverEvent.hoverEvent(HoverEvent.Action.SHOW_TEXT, diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/switchserver/SwitchServerAction.java b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/switchserver/SwitchServerAction.java index 2cc5c3c..acc9c12 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/switchserver/SwitchServerAction.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/switchserver/SwitchServerAction.java @@ -32,7 +32,7 @@ public class SwitchServerAction extends InteractionActionImpl { .hoverEvent(HoverEvent.hoverEvent(HoverEvent.Action.SHOW_TEXT, Component.text("Click to edit this action", NamedTextColor.GRAY))) .clickEvent(ClickEvent.clickEvent(ClickEvent.Action.SUGGEST_COMMAND, - "/" + context.getLabel() + " action edit " + id + " " + index + " switcserver " + " " + getInteractionType().name() + " " + getCooldown()/1000 + " " + server)) + "/" + context.getLabel() + " action edit " + id + " " + index + " switcserver " + getInteractionType().name() + " " + getCooldown()/1000 + " " + server)) .append(Component.text(" | ", NamedTextColor.GRAY)) .append(Component.text("[DELETE]", NamedTextColor.RED) .hoverEvent(HoverEvent.hoverEvent(HoverEvent.Action.SHOW_TEXT, From 2dd75b4cda573e1641ea0c5901840d33a4f6b8d8 Mon Sep 17 00:00:00 2001 From: Pyrbu Date: Sun, 16 Jul 2023 01:09:57 +0200 Subject: [PATCH 3/5] make the method actually abstract instead of just returning null --- .../lol/pyr/znpcsplus/interaction/InteractionActionImpl.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/InteractionActionImpl.java b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/InteractionActionImpl.java index 9c2fb48..d59035a 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/InteractionActionImpl.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/InteractionActionImpl.java @@ -10,7 +10,5 @@ public abstract class InteractionActionImpl extends InteractionAction { super(delay, interactionType); } - public Component getInfo(String id, int index, CommandContext context) { - return null; - } + public abstract Component getInfo(String id, int index, CommandContext context); } From d344e02319085d463389bcee4c440fa2efcff172 Mon Sep 17 00:00:00 2001 From: Pyrbu Date: Mon, 17 Jul 2023 23:38:12 +0200 Subject: [PATCH 4/5] use a concurrent set to possibly prevent a ConcurrentModificationException --- plugin/src/main/java/lol/pyr/znpcsplus/util/Viewable.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/util/Viewable.java b/plugin/src/main/java/lol/pyr/znpcsplus/util/Viewable.java index 3b62050..8bd8f56 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/util/Viewable.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/util/Viewable.java @@ -3,11 +3,11 @@ package lol.pyr.znpcsplus.util; import org.bukkit.entity.Player; import java.util.Collections; -import java.util.HashSet; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; public abstract class Viewable { - private final Set viewers = new HashSet<>(); + private final Set viewers = ConcurrentHashMap.newKeySet(); public void delete() { UNSAFE_hideAll(); From 23ada2d52fd69721c7063502635064425966db13 Mon Sep 17 00:00:00 2001 From: Pyrbu Date: Mon, 17 Jul 2023 23:40:17 +0200 Subject: [PATCH 5/5] add visibility methods to api --- api/src/main/java/lol/pyr/znpcsplus/api/npc/Npc.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/api/src/main/java/lol/pyr/znpcsplus/api/npc/Npc.java b/api/src/main/java/lol/pyr/znpcsplus/api/npc/Npc.java index 02dc725..49a185d 100644 --- a/api/src/main/java/lol/pyr/znpcsplus/api/npc/Npc.java +++ b/api/src/main/java/lol/pyr/znpcsplus/api/npc/Npc.java @@ -5,6 +5,7 @@ import lol.pyr.znpcsplus.api.hologram.Hologram; import lol.pyr.znpcsplus.api.interaction.InteractionAction; import lol.pyr.znpcsplus.util.NpcLocation; import org.bukkit.World; +import org.bukkit.entity.Player; import java.util.List; import java.util.UUID; @@ -20,4 +21,8 @@ public interface Npc extends PropertyHolder { UUID getUuid(); World getWorld(); List getActions(); + boolean isVisibleTo(Player player); + void hide(Player player); + void show(Player player); + void respawn(Player player); }