From 212157d509728596baa624e643536aa9fe3ec6f3 Mon Sep 17 00:00:00 2001 From: fullwall Date: Wed, 20 Jul 2016 00:41:25 +0800 Subject: [PATCH] Implement silence --- .../net/citizensnpcs/commands/NPCCommands.java | 17 ++++++++++++----- .../java/net/citizensnpcs/npc/CitizensNPC.java | 4 ++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/citizensnpcs/commands/NPCCommands.java b/src/main/java/net/citizensnpcs/commands/NPCCommands.java index fa7c0eb6b..15826ec4e 100644 --- a/src/main/java/net/citizensnpcs/commands/NPCCommands.java +++ b/src/main/java/net/citizensnpcs/commands/NPCCommands.java @@ -1586,7 +1586,7 @@ public class NPCCommands { usage = "sound (--death [death sound|d]) (--ambient [ambient sound|d]) (--hurt [hurt sound|d]) (-n(one)) (-d(efault))", desc = "Sets an NPC's played sounds", modifiers = { "sound" }, - flags = "dn", + flags = "dns", min = 1, max = 1, permission = "citizens.npc.sound") @@ -1600,8 +1600,9 @@ public class NPCCommands { return; } - if (args.hasFlag('n')) { + if (args.hasFlag('n') || args.hasFlag('s')) { ambientSound = deathSound = hurtSound = ""; + npc.data().setPersistent(NPC.SILENT_METADATA, true); } if (args.hasFlag('d')) { ambientSound = deathSound = hurtSound = null; @@ -1632,12 +1633,18 @@ public class NPCCommands { npc.data().setPersistent(NPC.AMBIENT_SOUND_METADATA, ambientSound); } - if (ambientSound != null && ambientSound.isEmpty()) + if (ambientSound != null && ambientSound.isEmpty()) { ambientSound = "none"; - if (hurtSound != null && hurtSound.isEmpty()) + } + if (hurtSound != null && hurtSound.isEmpty()) { hurtSound = "none"; - if (deathSound != null && deathSound.isEmpty()) + } + if (deathSound != null && deathSound.isEmpty()) { deathSound = "none"; + } + if (ambientSound != null || deathSound != null || hurtSound != null) { + npc.data().setPersistent(NPC.SILENT_METADATA, false); + } Messaging.sendTr(sender, Messages.SOUND_SET, npc.getName(), ambientSound, hurtSound, deathSound); } diff --git a/src/main/java/net/citizensnpcs/npc/CitizensNPC.java b/src/main/java/net/citizensnpcs/npc/CitizensNPC.java index 19e83f539..faa4047e7 100644 --- a/src/main/java/net/citizensnpcs/npc/CitizensNPC.java +++ b/src/main/java/net/citizensnpcs/npc/CitizensNPC.java @@ -322,6 +322,10 @@ public class CitizensNPC extends AbstractNPC { NMS.setKnockbackResistance((LivingEntity) getEntity(), 0D); } } + + if (data().has(NPC.SILENT_METADATA)) { + getEntity().setSilent(Boolean.parseBoolean(data().get(NPC.SILENT_METADATA).toString())); + } } catch (Exception ex) { Throwable error = Throwables.getRootCause(ex); Messaging.logTr(Messages.EXCEPTION_UPDATING_NPC, getId(), error.getMessage());