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;