From 166aa3d739aae0e108fa99a4dd3ff0d19c83c4cc Mon Sep 17 00:00:00 2001 From: fullwall Date: Sat, 16 Apr 2022 22:49:20 +0800 Subject: [PATCH] Add /trc options to the base /npc lookclose command --- .../citizensnpcs/commands/NPCCommands.java | 26 ++++++++++++++----- .../net/citizensnpcs/trait/LookClose.java | 4 +-- .../java/net/citizensnpcs/util/Messages.java | 3 +++ .../src/main/resources/messages_en.properties | 3 +++ 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java b/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java index 3d12ef6d2..5f8280bba 100644 --- a/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java +++ b/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java @@ -1147,26 +1147,39 @@ public class NPCCommands { @Command( aliases = { "npc" }, - usage = "lookclose --(random|r)look [true|false] --(random|r)pitchrange [min,max] --(random|r)yawrange [min,max]", + usage = "lookclose --range [range] (-r[ealistic looking]) --(random|r)look [true|false] --(random|r)pitchrange [min,max] --(random|r)yawrange [min,max]", desc = "Toggle whether a NPC will look when a player is near", modifiers = { "lookclose", "look", "rotate" }, min = 1, max = 1, + flags = "r", permission = "citizens.npc.lookclose") public void lookClose(CommandContext args, CommandSender sender, NPC npc) throws CommandException { boolean toggle = true; + LookClose trait = npc.getOrAddTrait(LookClose.class); if (args.hasAnyValueFlag("randomlook", "rlook")) { boolean enableRandomLook = Boolean.parseBoolean(args.getFlag("randomlook", args.getFlag("rlook"))); - npc.getOrAddTrait(LookClose.class).setRandomLook(enableRandomLook); + trait.setRandomLook(enableRandomLook); Messaging.sendTr(sender, enableRandomLook ? Messages.LOOKCLOSE_RANDOM_SET : Messages.LOOKCLOSE_RANDOM_STOPPED, npc.getName()); toggle = false; } + if (args.hasValueFlag("range")) { + trait.setRange(args.getFlagDouble("range")); + Messaging.sendTr(sender, Messages.LOOKCLOSE_RANGE_SET, args.getFlagDouble("range")); + toggle = false; + } + if (args.hasFlag('r')) { + trait.setRealisticLooking(!trait.useRealisticLooking()); + Messaging.sendTr(sender, trait.useRealisticLooking() ? Messages.LOOKCLOSE_REALISTIC_LOOK_SET + : Messages.LOOKCLOSE_REALISTIC_LOOK_UNSET, npc.getName()); + toggle = false; + } if (args.hasAnyValueFlag("randomlookdelay", "rlookdelay")) { int delay = Integer.parseInt(args.getFlag("randomlookdelay", args.getFlag("rlookdelay"))); delay = Math.max(1, delay); - npc.getOrAddTrait(LookClose.class).setRandomLookDelay(delay); + trait.setRandomLookDelay(delay); Messaging.sendTr(sender, Messages.LOOKCLOSE_RANDOM_DELAY_SET, npc.getName(), delay); toggle = false; } @@ -1177,7 +1190,7 @@ public class NPCCommands { float min = Float.parseFloat(parts[0]), max = Float.parseFloat(parts[1]); if (min > max) throw new IllegalArgumentException(); - npc.getOrAddTrait(LookClose.class).setRandomLookPitchRange(min, max); + trait.setRandomLookPitchRange(min, max); } catch (Exception e) { throw new CommandException(Messaging.tr(Messages.ERROR_SETTING_LOOKCLOSE_RANGE, flag)); } @@ -1191,7 +1204,7 @@ public class NPCCommands { float min = Float.parseFloat(parts[0]), max = Float.parseFloat(parts[1]); if (min > max) throw new IllegalArgumentException(); - npc.getOrAddTrait(LookClose.class).setRandomLookYawRange(min, max); + trait.setRandomLookYawRange(min, max); } catch (Exception e) { throw new CommandException(Messaging.tr(Messages.ERROR_SETTING_LOOKCLOSE_RANGE, flag)); } @@ -1199,8 +1212,7 @@ public class NPCCommands { toggle = false; } if (toggle) { - Messaging.sendTr(sender, - npc.getOrAddTrait(LookClose.class).toggle() ? Messages.LOOKCLOSE_SET : Messages.LOOKCLOSE_STOPPED, + Messaging.sendTr(sender, trait.toggle() ? Messages.LOOKCLOSE_SET : Messages.LOOKCLOSE_STOPPED, npc.getName()); } } diff --git a/main/src/main/java/net/citizensnpcs/trait/LookClose.java b/main/src/main/java/net/citizensnpcs/trait/LookClose.java index 009da4f74..09e2f266b 100644 --- a/main/src/main/java/net/citizensnpcs/trait/LookClose.java +++ b/main/src/main/java/net/citizensnpcs/trait/LookClose.java @@ -257,8 +257,8 @@ public class LookClose extends Trait implements Toggleable, CommandConfigurable /** * Sets the maximum range in blocks to look at other Entities */ - public void setRange(int range) { - this.range = range; + public void setRange(double d) { + this.range = d; } /** diff --git a/main/src/main/java/net/citizensnpcs/util/Messages.java b/main/src/main/java/net/citizensnpcs/util/Messages.java index 9fb7552ed..aa355650c 100644 --- a/main/src/main/java/net/citizensnpcs/util/Messages.java +++ b/main/src/main/java/net/citizensnpcs/util/Messages.java @@ -221,6 +221,9 @@ public class Messages { public static final String LOOKCLOSE_RANDOM_SET = "citizens.commands.npc.lookclose.random-set"; public static final String LOOKCLOSE_RANDOM_STOPPED = "citizens.commands.npc.lookclose.random-stopped"; public static final String LOOKCLOSE_RANDOM_YAW_RANGE_SET = "citizens.commands.npc.lookclose.random-yaw-range-set"; + public static final String LOOKCLOSE_RANGE_SET = "citizens.commands.npc.lookclose.range-set"; + public static final String LOOKCLOSE_REALISTIC_LOOK_SET = "citizens.commands.npc.lookclose.rl-set"; + public static final String LOOKCLOSE_REALISTIC_LOOK_UNSET = "citizens.commands.npc.lookclose.rl-unset"; public static final String LOOKCLOSE_SET = "citizens.commands.npc.lookclose.set"; public static final String LOOKCLOSE_STOPPED = "citizens.commands.npc.lookclose.stopped"; public static final String METADATA_SET = "citizens.commands.npc.metadata.set"; diff --git a/main/src/main/resources/messages_en.properties b/main/src/main/resources/messages_en.properties index b10b17dbe..13accd459 100644 --- a/main/src/main/resources/messages_en.properties +++ b/main/src/main/resources/messages_en.properties @@ -128,6 +128,9 @@ citizens.commands.npc.leashable.stopped=[[{0}]] is no longer leashable. citizens.commands.npc.llama.strength-set=Llama strength set to [[{0}]]. citizens.commands.npc.llama.color-set=Llama color set to [[{0}]]. citizens.commands.npc.llama.invalid-color=Invalid llama color given. Valid colors are: [[{0}]]. +citizens.commands.npc.lookclose.range-set=[[{0}]]''s lookclose range set to [[{1}]] blocks. +citizens.commands.npc.lookclose.rl-set=[[{0}]] will no longer look through blocks at players. +citizens.commands.npc.lookclose.rl-unset=[[{0}]] will now always look at players, even through blocks. citizens.commands.npc.lookclose.random-look-delay-set=[[{0}]] will now randomly look every [[{1}]] ticks. citizens.commands.npc.lookclose.random-pitch-range-set=[[{0}]] will now randomly choose a pitch in the range [{1}]. citizens.commands.npc.lookclose.random-yaw-range-set=[[{0}]] will now randomly choose a yaw in the range [{1}].