mirror of
https://github.com/CitizensDev/Citizens2.git
synced 2024-11-23 02:55:45 +01:00
added mob type requirement to commands
This commit is contained in:
parent
e5994c562c
commit
2e24b5b60f
@ -15,6 +15,7 @@ import net.citizensnpcs.api.trait.DefaultInstanceFactory;
|
|||||||
import net.citizensnpcs.api.trait.InstanceFactory;
|
import net.citizensnpcs.api.trait.InstanceFactory;
|
||||||
import net.citizensnpcs.api.trait.Trait;
|
import net.citizensnpcs.api.trait.Trait;
|
||||||
import net.citizensnpcs.api.trait.trait.Inventory;
|
import net.citizensnpcs.api.trait.trait.Inventory;
|
||||||
|
import net.citizensnpcs.api.trait.trait.MobType;
|
||||||
import net.citizensnpcs.api.trait.trait.Owner;
|
import net.citizensnpcs.api.trait.trait.Owner;
|
||||||
import net.citizensnpcs.api.trait.trait.SpawnLocation;
|
import net.citizensnpcs.api.trait.trait.SpawnLocation;
|
||||||
import net.citizensnpcs.api.trait.trait.Spawned;
|
import net.citizensnpcs.api.trait.trait.Spawned;
|
||||||
@ -25,6 +26,7 @@ import net.citizensnpcs.api.util.YamlStorage;
|
|||||||
import net.citizensnpcs.command.CommandManager;
|
import net.citizensnpcs.command.CommandManager;
|
||||||
import net.citizensnpcs.command.Injector;
|
import net.citizensnpcs.command.Injector;
|
||||||
import net.citizensnpcs.command.command.AdminCommands;
|
import net.citizensnpcs.command.command.AdminCommands;
|
||||||
|
import net.citizensnpcs.command.command.EditorCommands;
|
||||||
import net.citizensnpcs.command.command.HelpCommands;
|
import net.citizensnpcs.command.command.HelpCommands;
|
||||||
import net.citizensnpcs.command.command.NPCCommands;
|
import net.citizensnpcs.command.command.NPCCommands;
|
||||||
import net.citizensnpcs.command.exception.CommandUsageException;
|
import net.citizensnpcs.command.exception.CommandUsageException;
|
||||||
@ -56,7 +58,7 @@ public class Citizens extends JavaPlugin {
|
|||||||
private volatile CitizensNPCManager npcManager;
|
private volatile CitizensNPCManager npcManager;
|
||||||
private final InstanceFactory<Character> characterManager = new DefaultInstanceFactory<Character>();
|
private final InstanceFactory<Character> characterManager = new DefaultInstanceFactory<Character>();
|
||||||
private final InstanceFactory<Trait> traitManager = DefaultInstanceFactory.create(Owner.class, Spawned.class,
|
private final InstanceFactory<Trait> traitManager = DefaultInstanceFactory.create(Owner.class, Spawned.class,
|
||||||
LookClose.class, SpawnLocation.class, Inventory.class);
|
LookClose.class, SpawnLocation.class, Inventory.class, MobType.class);
|
||||||
private final CommandManager commands = new CommandManager();
|
private final CommandManager commands = new CommandManager();
|
||||||
private Settings config;
|
private Settings config;
|
||||||
private Storage saves;
|
private Storage saves;
|
||||||
@ -249,8 +251,9 @@ public class Citizens extends JavaPlugin {
|
|||||||
|
|
||||||
// Register command classes
|
// Register command classes
|
||||||
commands.register(AdminCommands.class);
|
commands.register(AdminCommands.class);
|
||||||
commands.register(NPCCommands.class);
|
commands.register(EditorCommands.class);
|
||||||
commands.register(HelpCommands.class);
|
commands.register(HelpCommands.class);
|
||||||
|
commands.register(NPCCommands.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void saveNPCs() {
|
private void saveNPCs() {
|
||||||
|
@ -14,6 +14,7 @@ import java.util.logging.Level;
|
|||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
import net.citizensnpcs.api.npc.NPC;
|
import net.citizensnpcs.api.npc.NPC;
|
||||||
|
import net.citizensnpcs.api.trait.trait.MobType;
|
||||||
import net.citizensnpcs.api.trait.trait.Owner;
|
import net.citizensnpcs.api.trait.trait.Owner;
|
||||||
import net.citizensnpcs.command.exception.CommandException;
|
import net.citizensnpcs.command.exception.CommandException;
|
||||||
import net.citizensnpcs.command.exception.CommandUsageException;
|
import net.citizensnpcs.command.exception.CommandUsageException;
|
||||||
@ -24,6 +25,7 @@ import net.citizensnpcs.command.exception.UnhandledCommandException;
|
|||||||
import net.citizensnpcs.command.exception.WrappedCommandException;
|
import net.citizensnpcs.command.exception.WrappedCommandException;
|
||||||
|
|
||||||
import org.bukkit.command.ConsoleCommandSender;
|
import org.bukkit.command.ConsoleCommandSender;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
public class CommandManager {
|
public class CommandManager {
|
||||||
@ -99,6 +101,11 @@ public class CommandManager {
|
|||||||
&& !npc.getTrait(Owner.class).getOwner().equals(player.getName())
|
&& !npc.getTrait(Owner.class).getOwner().equals(player.getName())
|
||||||
&& !player.hasPermission("citizens.admin"))
|
&& !player.hasPermission("citizens.admin"))
|
||||||
throw new RequirementMissingException("You must be the owner of this NPC to execute that command.");
|
throw new RequirementMissingException("You must be the owner of this NPC to execute that command.");
|
||||||
|
if (cmdRequirements.type() != EntityType.UNKNOWN
|
||||||
|
&& !cmdRequirements.type().name().equals(npc.getTrait(MobType.class).getType()))
|
||||||
|
throw new RequirementMissingException("The NPC must be of the type '"
|
||||||
|
+ cmdRequirements.type().name().toLowerCase().replace('_', '-')
|
||||||
|
+ "' in order for you to use that command.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,10 +3,14 @@ package net.citizensnpcs.command;
|
|||||||
import java.lang.annotation.Retention;
|
import java.lang.annotation.Retention;
|
||||||
import java.lang.annotation.RetentionPolicy;
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
public @interface Requirements {
|
public @interface Requirements {
|
||||||
|
|
||||||
boolean ownership() default false;
|
boolean ownership() default false;
|
||||||
|
|
||||||
boolean selected() default false;
|
boolean selected() default false;
|
||||||
|
|
||||||
|
EntityType type() default EntityType.UNKNOWN;
|
||||||
}
|
}
|
@ -1,12 +1,15 @@
|
|||||||
package net.citizensnpcs.command.command;
|
package net.citizensnpcs.command.command;
|
||||||
|
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import net.citizensnpcs.Citizens;
|
import net.citizensnpcs.Citizens;
|
||||||
import net.citizensnpcs.api.npc.NPC;
|
import net.citizensnpcs.api.npc.NPC;
|
||||||
import net.citizensnpcs.command.Command;
|
import net.citizensnpcs.command.Command;
|
||||||
import net.citizensnpcs.command.CommandContext;
|
import net.citizensnpcs.command.CommandContext;
|
||||||
|
import net.citizensnpcs.command.Requirements;
|
||||||
|
|
||||||
|
@Requirements(selected = true, ownership = true)
|
||||||
public class EditorCommands {
|
public class EditorCommands {
|
||||||
|
|
||||||
public EditorCommands(Citizens plugin) {
|
public EditorCommands(Citizens plugin) {
|
||||||
@ -14,11 +17,35 @@ public class EditorCommands {
|
|||||||
|
|
||||||
@Command(
|
@Command(
|
||||||
aliases = { "npc" },
|
aliases = { "npc" },
|
||||||
usage = "edit (editor)",
|
usage = "equip",
|
||||||
desc = "Toggle an NPC editor",
|
desc = "Toggle the equipment editor",
|
||||||
modifiers = { "edit" },
|
modifiers = { "equip" },
|
||||||
min = 2,
|
min = 1,
|
||||||
max = 2)
|
max = 1,
|
||||||
public void toggleEquipEditor(CommandContext args, Player player, NPC npc) {
|
permission = "npc.edit.equip")
|
||||||
|
@Requirements(selected = true, ownership = true, type = EntityType.PLAYER)
|
||||||
|
public void equip(CommandContext args, Player player, NPC npc) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Command(
|
||||||
|
aliases = { "npc" },
|
||||||
|
usage = "path",
|
||||||
|
desc = "Toggle the waypoint editor",
|
||||||
|
modifiers = { "path", "waypoints" },
|
||||||
|
min = 1,
|
||||||
|
max = 1,
|
||||||
|
permission = "npc.edit.path")
|
||||||
|
public void path(CommandContext args, Player player, NPC npc) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Command(
|
||||||
|
aliases = { "npc" },
|
||||||
|
usage = "text",
|
||||||
|
desc = "Toggle the text editor",
|
||||||
|
modifiers = { "text" },
|
||||||
|
min = 1,
|
||||||
|
max = 1,
|
||||||
|
permission = "npc.edit.text")
|
||||||
|
public void text(CommandContext args, Player player, NPC npc) {
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user