mirror of
https://github.com/CitizensDev/Citizens2.git
synced 2024-09-28 07:07:39 +02:00
Restore PR, add --n to /npc command to allow a maximum number of uses per command
This commit is contained in:
parent
9f3841c3ec
commit
f345ef3f16
@ -277,7 +277,7 @@ public class NPCCommands {
|
|||||||
|
|
||||||
@Command(
|
@Command(
|
||||||
aliases = { "npc" },
|
aliases = { "npc" },
|
||||||
usage = "command|cmd (add [command] | remove [id]) (-l[eft]/-r[ight]) (-p[layer] -o[p]), --cooldown [seconds] --permissions [perms]",
|
usage = "command|cmd (add [command] | remove [id]) (-l[eft]/-r[ight]) (-p[layer] -o[p]), --cooldown [seconds] --permissions [perms] --n [max # of uses]",
|
||||||
desc = "Controls commands which will be run when clicking on an NPC",
|
desc = "Controls commands which will be run when clicking on an NPC",
|
||||||
modifiers = { "command", "cmd" },
|
modifiers = { "command", "cmd" },
|
||||||
min = 1,
|
min = 1,
|
||||||
@ -298,7 +298,7 @@ public class NPCCommands {
|
|||||||
perms.addAll(Arrays.asList(args.getFlag("permissions").split(",")));
|
perms.addAll(Arrays.asList(args.getFlag("permissions").split(",")));
|
||||||
}
|
}
|
||||||
int id = commands.addCommand(command, hand, args.hasFlag('p'), args.hasFlag('o'),
|
int id = commands.addCommand(command, hand, args.hasFlag('p'), args.hasFlag('o'),
|
||||||
args.getFlagInteger("cooldown", 0), perms);
|
args.getFlagInteger("cooldown", 0), perms, args.getFlagInteger("n", -1));
|
||||||
Messaging.sendTr(sender, Messages.COMMAND_ADDED, command, id);
|
Messaging.sendTr(sender, Messages.COMMAND_ADDED, command, id);
|
||||||
} else if (args.getString(1).equalsIgnoreCase("remove")) {
|
} else if (args.getString(1).equalsIgnoreCase("remove")) {
|
||||||
if (args.argsLength() == 2)
|
if (args.argsLength() == 2)
|
||||||
|
@ -36,10 +36,11 @@ public class CommandTrait extends Trait {
|
|||||||
super("commandtrait");
|
super("commandtrait");
|
||||||
}
|
}
|
||||||
|
|
||||||
public int addCommand(String command, Hand hand, boolean player, boolean op, int cooldown, List<String> perms) {
|
public int addCommand(String command, Hand hand, boolean player, boolean op, int cooldown, List<String> perms,
|
||||||
|
int n) {
|
||||||
int id = getNewId();
|
int id = getNewId();
|
||||||
commands.put(String.valueOf(id),
|
commands.put(String.valueOf(id),
|
||||||
new NPCCommand(String.valueOf(id), command, hand, player, op, cooldown, perms));
|
new NPCCommand(String.valueOf(id), command, hand, player, op, cooldown, perms, n));
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -129,12 +130,13 @@ public class CommandTrait extends Trait {
|
|||||||
int cooldown;
|
int cooldown;
|
||||||
Hand hand;
|
Hand hand;
|
||||||
String id;
|
String id;
|
||||||
|
int n;
|
||||||
boolean op;
|
boolean op;
|
||||||
List<String> perms;
|
List<String> perms;
|
||||||
boolean player;
|
boolean player;
|
||||||
|
|
||||||
public NPCCommand(String id, String command, Hand hand, boolean player, boolean op, int cooldown,
|
public NPCCommand(String id, String command, Hand hand, boolean player, boolean op, int cooldown,
|
||||||
List<String> perms) {
|
List<String> perms, int n) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.command = command;
|
this.command = command;
|
||||||
this.hand = hand;
|
this.hand = hand;
|
||||||
@ -142,6 +144,7 @@ public class CommandTrait extends Trait {
|
|||||||
this.op = op;
|
this.op = op;
|
||||||
this.cooldown = cooldown;
|
this.cooldown = cooldown;
|
||||||
this.perms = perms;
|
this.perms = perms;
|
||||||
|
this.n = n;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void run(NPC npc, Player clicker) {
|
public void run(NPC npc, Player clicker) {
|
||||||
@ -177,7 +180,7 @@ public class CommandTrait extends Trait {
|
|||||||
}
|
}
|
||||||
return new NPCCommand(root.name(), root.getString("command"), Hand.valueOf(root.getString("hand")),
|
return new NPCCommand(root.name(), root.getString("command"), Hand.valueOf(root.getString("hand")),
|
||||||
Boolean.valueOf(root.getString("player")), Boolean.valueOf(root.getString("op")),
|
Boolean.valueOf(root.getString("player")), Boolean.valueOf(root.getString("op")),
|
||||||
root.getInt("cooldown"), perms);
|
root.getInt("cooldown"), perms, root.getInt("n"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -187,6 +190,7 @@ public class CommandTrait extends Trait {
|
|||||||
root.setBoolean("player", instance.player);
|
root.setBoolean("player", instance.player);
|
||||||
root.setBoolean("op", instance.op);
|
root.setBoolean("op", instance.op);
|
||||||
root.setInt("cooldown", instance.cooldown);
|
root.setInt("cooldown", instance.cooldown);
|
||||||
|
root.setInt("n", instance.n);
|
||||||
for (int i = 0; i < instance.perms.size(); i++) {
|
for (int i = 0; i < instance.perms.size(); i++) {
|
||||||
root.setString("permissions." + i, instance.perms.get(i));
|
root.setString("permissions." + i, instance.perms.get(i));
|
||||||
}
|
}
|
||||||
@ -196,6 +200,8 @@ public class CommandTrait extends Trait {
|
|||||||
private static class PlayerNPCCommand {
|
private static class PlayerNPCCommand {
|
||||||
@Persist
|
@Persist
|
||||||
Map<String, Long> lastUsed = Maps.newHashMap();
|
Map<String, Long> lastUsed = Maps.newHashMap();
|
||||||
|
@Persist
|
||||||
|
Map<String, Integer> nUsed = Maps.newHashMap();
|
||||||
|
|
||||||
public PlayerNPCCommand() {
|
public PlayerNPCCommand() {
|
||||||
}
|
}
|
||||||
@ -217,9 +223,16 @@ public class CommandTrait extends Trait {
|
|||||||
}
|
}
|
||||||
lastUsed.remove(command.command);
|
lastUsed.remove(command.command);
|
||||||
}
|
}
|
||||||
|
int previouslyUsed = nUsed.getOrDefault(command.command, 0);
|
||||||
|
if (command.n > 0 && command.n <= previouslyUsed) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
if (command.cooldown > 0) {
|
if (command.cooldown > 0) {
|
||||||
lastUsed.put(command.command, currentTimeSec);
|
lastUsed.put(command.command, currentTimeSec);
|
||||||
}
|
}
|
||||||
|
if (command.n > 0) {
|
||||||
|
nUsed.put(command.command, previouslyUsed + 1);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -76,7 +76,7 @@ public class Commands {
|
|||||||
}
|
}
|
||||||
if (args.hasFlag('n')) {
|
if (args.hasFlag('n')) {
|
||||||
trait.setNectar(!trait.hasNectar());
|
trait.setNectar(!trait.hasNectar());
|
||||||
output += ' ' + (trait.hasStung() ? Messaging.tr(Messages.BEE_HAS_NECTAR, npc.getName())
|
output += ' ' + (trait.hasNectar() ? Messaging.tr(Messages.BEE_HAS_NECTAR, npc.getName())
|
||||||
: Messaging.tr(Messages.BEE_NO_NECTAR, npc.getName()));
|
: Messaging.tr(Messages.BEE_NO_NECTAR, npc.getName()));
|
||||||
}
|
}
|
||||||
if (!output.isEmpty()) {
|
if (!output.isEmpty()) {
|
||||||
@ -419,6 +419,29 @@ public class Commands {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Command(
|
||||||
|
aliases = { "npc" },
|
||||||
|
usage = "snowman (-d[erp])",
|
||||||
|
desc = "Sets snowman modifiers.",
|
||||||
|
modifiers = { "snowman" },
|
||||||
|
min = 1,
|
||||||
|
max = 1,
|
||||||
|
flags = "d",
|
||||||
|
permission = "citizens.npc.snowman")
|
||||||
|
@Requirements(selected = true, ownership = true, types = { EntityType.SNOWMAN })
|
||||||
|
public void snowman(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
|
||||||
|
SnowmanTrait trait = npc.getTrait(SnowmanTrait.class);
|
||||||
|
boolean hasArg = false;
|
||||||
|
if (args.hasFlag('d')) {
|
||||||
|
boolean isDerp = trait.toggleDerp();
|
||||||
|
Messaging.sendTr(sender, isDerp ? Messages.SNOWMAN_DERP_SET : Messages.SNOWMAN_DERP_STOPPED, npc.getName());
|
||||||
|
hasArg = true;
|
||||||
|
}
|
||||||
|
if (!hasArg) {
|
||||||
|
throw new CommandUsageException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Command(
|
@Command(
|
||||||
aliases = { "npc" },
|
aliases = { "npc" },
|
||||||
usage = "tfish (--body color) (--pattern pattern) (--patterncolor color)",
|
usage = "tfish (--body color) (--pattern pattern) (--patterncolor color)",
|
||||||
@ -508,27 +531,4 @@ public class Commands {
|
|||||||
throw new CommandUsageException();
|
throw new CommandUsageException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Command(
|
|
||||||
aliases = { "npc" },
|
|
||||||
usage = "snowman (-d[erp])",
|
|
||||||
desc = "Sets snowman modifiers.",
|
|
||||||
modifiers = { "snowman" },
|
|
||||||
min = 1,
|
|
||||||
max = 1,
|
|
||||||
flags = "d",
|
|
||||||
permission = "citizens.npc.snowman")
|
|
||||||
@Requirements(selected = true, ownership = true, types = { EntityType.SNOWMAN })
|
|
||||||
public void snowman(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
|
|
||||||
SnowmanTrait trait = npc.getTrait(SnowmanTrait.class);
|
|
||||||
boolean hasArg = false;
|
|
||||||
if (args.hasFlag('d')) {
|
|
||||||
boolean isDerp = trait.toggleDerp();
|
|
||||||
Messaging.sendTr(sender, isDerp ? Messages.SNOWMAN_DERP_SET : Messages.SNOWMAN_DERP_STOPPED, npc.getName());
|
|
||||||
hasArg = true;
|
|
||||||
}
|
|
||||||
if (!hasArg) {
|
|
||||||
throw new CommandUsageException();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user