API improvements
This commit is contained in:
parent
80683f81bc
commit
9a69fa4e09
21 changed files with 70 additions and 39 deletions
|
@ -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);
|
||||
}
|
|
@ -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<? extends InteractionAction> getActions();
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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 <id>");
|
||||
NpcEntryImpl entry = context.parse(NpcEntryImpl.class);
|
||||
List<InteractionAction> actions = entry.getNpc().getActions();
|
||||
List<InteractionActionImpl> 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));
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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<ConsoleCo
|
|||
}
|
||||
|
||||
@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 command = context.dumpAllArgs();
|
||||
|
|
|
@ -2,7 +2,7 @@ package lol.pyr.znpcsplus.interaction.message;
|
|||
|
||||
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.util.PapiUtil;
|
||||
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
|
||||
import net.kyori.adventure.text.Component;
|
||||
|
@ -12,7 +12,7 @@ import net.kyori.adventure.text.format.NamedTextColor;
|
|||
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class MessageAction extends InteractionAction {
|
||||
public class MessageAction extends InteractionActionImpl {
|
||||
private final BukkitAudiences adventure;
|
||||
private final String message;
|
||||
private final LegacyComponentSerializer textSerializer;
|
||||
|
|
|
@ -3,7 +3,7 @@ package lol.pyr.znpcsplus.interaction.message;
|
|||
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 net.kyori.adventure.platform.bukkit.BukkitAudiences;
|
||||
|
@ -51,7 +51,7 @@ public class MessageActionType implements InteractionActionType<MessageAction>,
|
|||
}
|
||||
|
||||
@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();
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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<PlayerChatAct
|
|||
}
|
||||
|
||||
@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();
|
||||
|
|
|
@ -2,7 +2,7 @@ package lol.pyr.znpcsplus.interaction.playercommand;
|
|||
|
||||
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;
|
||||
|
@ -11,7 +11,7 @@ import net.kyori.adventure.text.event.HoverEvent;
|
|||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class PlayerCommandAction extends InteractionAction {
|
||||
public class PlayerCommandAction extends InteractionActionImpl {
|
||||
private final TaskScheduler scheduler;
|
||||
private final String command;
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ package lol.pyr.znpcsplus.interaction.playercommand;
|
|||
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 PlayerCommandActionType implements InteractionActionType<PlayerComm
|
|||
}
|
||||
|
||||
@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 command = context.dumpAllArgs();
|
||||
|
|
|
@ -2,7 +2,7 @@ package lol.pyr.znpcsplus.interaction.switchserver;
|
|||
|
||||
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.util.BungeeConnector;
|
||||
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 SwitchServerAction extends InteractionAction {
|
||||
public class SwitchServerAction extends InteractionActionImpl {
|
||||
private final BungeeConnector bungeeConnector;
|
||||
private final String server;
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ package lol.pyr.znpcsplus.interaction.switchserver;
|
|||
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.util.BungeeConnector;
|
||||
|
@ -48,7 +48,7 @@ public class SwitchServerActionType implements InteractionActionType<SwitchServe
|
|||
}
|
||||
|
||||
@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 server = context.dumpAllArgs();
|
||||
|
|
|
@ -2,11 +2,12 @@ package lol.pyr.znpcsplus.npc;
|
|||
|
||||
import lol.pyr.znpcsplus.api.entity.EntityProperty;
|
||||
import lol.pyr.znpcsplus.api.npc.Npc;
|
||||
import lol.pyr.znpcsplus.api.npc.NpcType;
|
||||
import lol.pyr.znpcsplus.config.ConfigManager;
|
||||
import lol.pyr.znpcsplus.entity.EntityPropertyImpl;
|
||||
import lol.pyr.znpcsplus.entity.PacketEntity;
|
||||
import lol.pyr.znpcsplus.hologram.HologramImpl;
|
||||
import lol.pyr.znpcsplus.interaction.InteractionAction;
|
||||
import lol.pyr.znpcsplus.interaction.InteractionActionImpl;
|
||||
import lol.pyr.znpcsplus.packets.PacketFactory;
|
||||
import lol.pyr.znpcsplus.util.NpcLocation;
|
||||
import lol.pyr.znpcsplus.util.Viewable;
|
||||
|
@ -29,7 +30,7 @@ public class NpcImpl extends Viewable implements Npc {
|
|||
private final UUID uuid;
|
||||
|
||||
private final Map<EntityPropertyImpl<?>, Object> propertyMap = new HashMap<>();
|
||||
private final List<InteractionAction> actions = new ArrayList<>();
|
||||
private final List<InteractionActionImpl> 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<InteractionAction> getActions() {
|
||||
public List<InteractionActionImpl> 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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in a new issue