add npc toggle command
This commit is contained in:
parent
78fbb13348
commit
60b5ac9683
7 changed files with 53 additions and 1 deletions
|
@ -233,6 +233,7 @@ public class ZNpcsPlus extends JavaPlugin {
|
|||
|
||||
manager.registerCommand("npc", new MultiCommand(loadHelpMessage("root"))
|
||||
.addSubcommand("create", new CreateCommand(npcRegistry, typeRegistry))
|
||||
.addSubcommand("toggle", new ToggleCommand(npcRegistry))
|
||||
.addSubcommand("skin", new SkinCommand(skinCache, npcRegistry, typeRegistry, propertyRegistry))
|
||||
.addSubcommand("delete", new DeleteCommand(npcRegistry, adventure))
|
||||
.addSubcommand("move", new MoveCommand(npcRegistry))
|
||||
|
|
|
@ -24,7 +24,7 @@ public class ListCommand implements CommandHandler {
|
|||
for (String id : npcRegistry.getModifiableIds()) {
|
||||
NpcImpl npc = npcRegistry.getById(id).getNpc();
|
||||
NpcLocation location = npc.getLocation();
|
||||
component.append(Component.text("ID: " + id, NamedTextColor.GREEN))
|
||||
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))
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
package lol.pyr.znpcsplus.commands;
|
||||
|
||||
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 net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class ToggleCommand implements CommandHandler {
|
||||
private final NpcRegistryImpl npcRegistry;
|
||||
|
||||
public ToggleCommand(NpcRegistryImpl npcRegistry) {
|
||||
this.npcRegistry = npcRegistry;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(CommandContext context) throws CommandExecutionException {
|
||||
context.setUsage(context.getLabel() + " toggle <id>");
|
||||
NpcImpl npc = context.parse(NpcEntryImpl.class).getNpc();
|
||||
boolean enabled = !npc.isEnabled();
|
||||
npc.setEnabled(enabled);
|
||||
context.send(Component.text("NPC has been " + (enabled ? "enabled" : "disabled"), NamedTextColor.GREEN));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> suggest(CommandContext context) throws CommandExecutionException {
|
||||
if (context.argSize() == 1) return context.suggestCollection(npcRegistry.getModifiableIds());
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
|
@ -24,6 +24,7 @@ public class NpcImpl extends Viewable implements Npc {
|
|||
private PacketEntity entity;
|
||||
private NpcLocation location;
|
||||
private NpcTypeImpl type;
|
||||
private boolean enabled = true;
|
||||
private final HologramImpl hologram;
|
||||
private final UUID uuid;
|
||||
|
||||
|
@ -78,6 +79,15 @@ public class NpcImpl extends Viewable implements Npc {
|
|||
return hologram;
|
||||
}
|
||||
|
||||
public void setEnabled(boolean enabled) {
|
||||
this.enabled = enabled;
|
||||
if (!enabled) delete();
|
||||
}
|
||||
|
||||
public boolean isEnabled() {
|
||||
return enabled;
|
||||
}
|
||||
|
||||
public UUID getUuid() {
|
||||
return uuid;
|
||||
}
|
||||
|
|
|
@ -52,6 +52,8 @@ public class YamlStorage implements NpcStorage {
|
|||
NpcImpl npc = new NpcImpl(uuid, configManager, packetFactory, textSerializer, config.getString("world"),
|
||||
typeRegistry.getByName(config.getString("type")), deserializeLocation(config.getConfigurationSection("location")));
|
||||
|
||||
if (config.isBoolean("enabled")) npc.setEnabled(config.getBoolean("enabled"));
|
||||
|
||||
ConfigurationSection properties = config.getConfigurationSection("properties");
|
||||
if (properties != null) {
|
||||
for (String key : properties.getKeys(false)) {
|
||||
|
@ -84,6 +86,7 @@ public class YamlStorage implements NpcStorage {
|
|||
config.set("allow-commands", entry.isAllowCommandModification());
|
||||
|
||||
NpcImpl npc = entry.getNpc();
|
||||
config.set("enabled", npc.isEnabled());
|
||||
config.set("uuid", npc.getUuid().toString());
|
||||
config.set("world", npc.getWorldName());
|
||||
config.set("location", serializeLocation(npc.getLocation()));
|
||||
|
|
|
@ -31,6 +31,7 @@ public class NpcProcessorTask extends BukkitRunnable {
|
|||
EntityPropertyImpl<Boolean> lookProperty = propertyRegistry.getByName("look", Boolean.class);
|
||||
for (NpcEntryImpl entry : npcRegistry.getProcessable()) {
|
||||
NpcImpl npc = entry.getNpc();
|
||||
if (!npc.isEnabled()) continue;
|
||||
|
||||
double closestDist = Double.MAX_VALUE;
|
||||
Player closest = null;
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
<gold>* <yellow>/npc create <id> <type>
|
||||
<gold>* <yellow>/npc delete <id>
|
||||
<gold>* <yellow>/npc toggle <id>
|
||||
<gold>* <yellow>/npc list
|
||||
<gold>* <yellow>/npc type <id> <type>
|
||||
|
||||
|
|
Loading…
Reference in a new issue