diff --git a/src/main/java/net/citizensnpcs/commands/NPCCommands.java b/src/main/java/net/citizensnpcs/commands/NPCCommands.java index 65327c7c0..f2bcc0061 100644 --- a/src/main/java/net/citizensnpcs/commands/NPCCommands.java +++ b/src/main/java/net/citizensnpcs/commands/NPCCommands.java @@ -458,6 +458,26 @@ public class NPCCommands { Messaging.send(sender, npc.getId()); } + @Command( + aliases = { "npc" }, + usage = "leashable", + desc = "Toggles leashability", + modifiers = { "leashable" }, + min = 1, + max = 1, + flags = "t", + permission = "citizens.npc.leashable") + public void leashable(CommandContext args, CommandSender sender, NPC npc) { + boolean vulnerable = !npc.data().get(NPC.LEASH_PROTECTED_METADATA, true); + if (args.hasFlag('t')) { + npc.data().set(NPC.LEASH_PROTECTED_METADATA, vulnerable); + } else { + npc.data().setPersistent(NPC.LEASH_PROTECTED_METADATA, vulnerable); + } + String key = vulnerable ? Messages.LEASHABLE_STOPPED : Messages.LEASHABLE_SET; + Messaging.sendTr(sender, key, npc.getName()); + } + @Command( aliases = { "npc" }, usage = "list (page) ((-a) --owner (owner) --type (type) --char (char))", diff --git a/src/main/java/net/citizensnpcs/npc/entity/BatController.java b/src/main/java/net/citizensnpcs/npc/entity/BatController.java index c3c1b5322..4327b1991 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/BatController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/BatController.java @@ -67,6 +67,16 @@ public class BatController extends MobEntityController { } } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void collide(net.minecraft.server.v1_6_R2.Entity entity) { // this method is called by both the entities involved - cancelling diff --git a/src/main/java/net/citizensnpcs/npc/entity/BlazeController.java b/src/main/java/net/citizensnpcs/npc/entity/BlazeController.java index 96ec2388c..f292c2d86 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/BlazeController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/BlazeController.java @@ -56,6 +56,16 @@ public class BlazeController extends MobEntityController { } } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void bk() { if (npc != null) { diff --git a/src/main/java/net/citizensnpcs/npc/entity/CaveSpiderController.java b/src/main/java/net/citizensnpcs/npc/entity/CaveSpiderController.java index d9ae590fb..c5ea52944 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/CaveSpiderController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/CaveSpiderController.java @@ -64,6 +64,16 @@ public class CaveSpiderController extends MobEntityController { npc.update(); } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void bk() { if (npc == null) diff --git a/src/main/java/net/citizensnpcs/npc/entity/ChickenController.java b/src/main/java/net/citizensnpcs/npc/entity/ChickenController.java index cb174df45..fbc68c300 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/ChickenController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/ChickenController.java @@ -63,6 +63,16 @@ public class ChickenController extends MobEntityController { npc.update(); } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void collide(net.minecraft.server.v1_6_R2.Entity entity) { // this method is called by both the entities involved - cancelling diff --git a/src/main/java/net/citizensnpcs/npc/entity/CowController.java b/src/main/java/net/citizensnpcs/npc/entity/CowController.java index 3dc5d4ecd..603c73d13 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/CowController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/CowController.java @@ -64,6 +64,16 @@ public class CowController extends MobEntityController { npc.update(); } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void collide(net.minecraft.server.v1_6_R2.Entity entity) { // this method is called by both the entities involved - cancelling diff --git a/src/main/java/net/citizensnpcs/npc/entity/CreeperController.java b/src/main/java/net/citizensnpcs/npc/entity/CreeperController.java index 177ac07bc..21fb58692 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/CreeperController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/CreeperController.java @@ -71,6 +71,16 @@ public class CreeperController extends MobEntityController { npc.update(); } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void collide(net.minecraft.server.v1_6_R2.Entity entity) { // this method is called by both the entities involved - cancelling diff --git a/src/main/java/net/citizensnpcs/npc/entity/EnderDragonController.java b/src/main/java/net/citizensnpcs/npc/entity/EnderDragonController.java index 19ad6c09a..85500d2d5 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/EnderDragonController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/EnderDragonController.java @@ -56,6 +56,16 @@ public class EnderDragonController extends MobEntityController { } } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void bk() { if (npc == null) { diff --git a/src/main/java/net/citizensnpcs/npc/entity/EndermanController.java b/src/main/java/net/citizensnpcs/npc/entity/EndermanController.java index 943abf387..c1019c3bf 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/EndermanController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/EndermanController.java @@ -63,6 +63,16 @@ public class EndermanController extends MobEntityController { npc.update(); } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void bk() { if (npc == null) diff --git a/src/main/java/net/citizensnpcs/npc/entity/GhastController.java b/src/main/java/net/citizensnpcs/npc/entity/GhastController.java index c15f6ab4f..0037fae67 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/GhastController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/GhastController.java @@ -42,6 +42,16 @@ public class GhastController extends MobEntityController { } } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void bk() { if (npc != null) { diff --git a/src/main/java/net/citizensnpcs/npc/entity/GiantController.java b/src/main/java/net/citizensnpcs/npc/entity/GiantController.java index 07b19998a..7b5fa7d42 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/GiantController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/GiantController.java @@ -42,6 +42,16 @@ public class GiantController extends MobEntityController { } } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void bk() { if (npc == null) { diff --git a/src/main/java/net/citizensnpcs/npc/entity/HorseController.java b/src/main/java/net/citizensnpcs/npc/entity/HorseController.java index f98cc286f..8ef5c6593 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/HorseController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/HorseController.java @@ -42,6 +42,16 @@ public class HorseController extends MobEntityController { } } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void c() { if (npc == null) { diff --git a/src/main/java/net/citizensnpcs/npc/entity/IronGolemController.java b/src/main/java/net/citizensnpcs/npc/entity/IronGolemController.java index 1ba1984fe..dc9d7a590 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/IronGolemController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/IronGolemController.java @@ -49,6 +49,16 @@ public class IronGolemController extends MobEntityController { npc.update(); } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void collide(net.minecraft.server.v1_6_R2.Entity entity) { // this method is called by both the entities involved - cancelling diff --git a/src/main/java/net/citizensnpcs/npc/entity/MagmaCubeController.java b/src/main/java/net/citizensnpcs/npc/entity/MagmaCubeController.java index 44d0eb1ff..301937bca 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/MagmaCubeController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/MagmaCubeController.java @@ -50,6 +50,16 @@ public class MagmaCubeController extends MobEntityController { npc.update(); } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void bk() { if (npc == null) diff --git a/src/main/java/net/citizensnpcs/npc/entity/MushroomCowController.java b/src/main/java/net/citizensnpcs/npc/entity/MushroomCowController.java index 64d4ed537..57847e8bf 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/MushroomCowController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/MushroomCowController.java @@ -50,6 +50,16 @@ public class MushroomCowController extends MobEntityController { npc.update(); } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void collide(net.minecraft.server.v1_6_R2.Entity entity) { // this method is called by both the entities involved - cancelling diff --git a/src/main/java/net/citizensnpcs/npc/entity/OcelotController.java b/src/main/java/net/citizensnpcs/npc/entity/OcelotController.java index 47da8bd5b..689132705 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/OcelotController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/OcelotController.java @@ -50,6 +50,16 @@ public class OcelotController extends MobEntityController { npc.update(); } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void collide(net.minecraft.server.v1_6_R2.Entity entity) { // this method is called by both the entities involved - cancelling diff --git a/src/main/java/net/citizensnpcs/npc/entity/PigController.java b/src/main/java/net/citizensnpcs/npc/entity/PigController.java index 437ce14cf..ef7cfb729 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/PigController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/PigController.java @@ -56,6 +56,16 @@ public class PigController extends MobEntityController { npc.update(); } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void collide(net.minecraft.server.v1_6_R2.Entity entity) { // this method is called by both the entities involved - cancelling diff --git a/src/main/java/net/citizensnpcs/npc/entity/PigZombieController.java b/src/main/java/net/citizensnpcs/npc/entity/PigZombieController.java index b5f869d0e..ea846d789 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/PigZombieController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/PigZombieController.java @@ -50,6 +50,16 @@ public class PigZombieController extends MobEntityController { npc.update(); } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void bk() { if (npc == null) { diff --git a/src/main/java/net/citizensnpcs/npc/entity/SheepController.java b/src/main/java/net/citizensnpcs/npc/entity/SheepController.java index 8a91d93db..e1cb8408f 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/SheepController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/SheepController.java @@ -50,6 +50,16 @@ public class SheepController extends MobEntityController { npc.update(); } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void collide(net.minecraft.server.v1_6_R2.Entity entity) { // this method is called by both the entities involved - cancelling diff --git a/src/main/java/net/citizensnpcs/npc/entity/SilverfishController.java b/src/main/java/net/citizensnpcs/npc/entity/SilverfishController.java index 6fb851e00..010d9eb3d 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/SilverfishController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/SilverfishController.java @@ -39,7 +39,6 @@ public class SilverfishController extends MobEntityController { this.npc = (CitizensNPC) npc; if (npc != null) { NMS.clearGoals(goalSelector, targetSelector); - } } @@ -50,6 +49,16 @@ public class SilverfishController extends MobEntityController { npc.update(); } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void bk() { if (npc == null) { diff --git a/src/main/java/net/citizensnpcs/npc/entity/SkeletonController.java b/src/main/java/net/citizensnpcs/npc/entity/SkeletonController.java index 6d093712b..9decac6f0 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/SkeletonController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/SkeletonController.java @@ -49,6 +49,16 @@ public class SkeletonController extends MobEntityController { npc.update(); } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void collide(net.minecraft.server.v1_6_R2.Entity entity) { // this method is called by both the entities involved - cancelling diff --git a/src/main/java/net/citizensnpcs/npc/entity/SlimeController.java b/src/main/java/net/citizensnpcs/npc/entity/SlimeController.java index 9f71f6357..d836416d7 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/SlimeController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/SlimeController.java @@ -51,6 +51,16 @@ public class SlimeController extends MobEntityController { npc.update(); } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void bk() { if (npc == null) { diff --git a/src/main/java/net/citizensnpcs/npc/entity/SnowmanController.java b/src/main/java/net/citizensnpcs/npc/entity/SnowmanController.java index 4ac3c706f..17985e131 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/SnowmanController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/SnowmanController.java @@ -49,6 +49,16 @@ public class SnowmanController extends MobEntityController { npc.update(); } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void collide(net.minecraft.server.v1_6_R2.Entity entity) { // this method is called by both the entities involved - cancelling diff --git a/src/main/java/net/citizensnpcs/npc/entity/SpiderController.java b/src/main/java/net/citizensnpcs/npc/entity/SpiderController.java index 1573a2a62..3dd2f7bdf 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/SpiderController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/SpiderController.java @@ -49,6 +49,16 @@ public class SpiderController extends MobEntityController { npc.update(); } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void bk() { if (npc == null) diff --git a/src/main/java/net/citizensnpcs/npc/entity/SquidController.java b/src/main/java/net/citizensnpcs/npc/entity/SquidController.java index 6c6229360..17d293a13 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/SquidController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/SquidController.java @@ -42,6 +42,16 @@ public class SquidController extends MobEntityController { } } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void bk() { if (npc != null) { diff --git a/src/main/java/net/citizensnpcs/npc/entity/VillagerController.java b/src/main/java/net/citizensnpcs/npc/entity/VillagerController.java index e5094ad5d..2fd89117b 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/VillagerController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/VillagerController.java @@ -57,6 +57,16 @@ public class VillagerController extends MobEntityController { npc.update(); } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void collide(net.minecraft.server.v1_6_R2.Entity entity) { // this method is called by both the entities involved - cancelling diff --git a/src/main/java/net/citizensnpcs/npc/entity/WitchController.java b/src/main/java/net/citizensnpcs/npc/entity/WitchController.java index a9e1263e7..ea527c40e 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/WitchController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/WitchController.java @@ -49,6 +49,16 @@ public class WitchController extends MobEntityController { npc.update(); } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void collide(net.minecraft.server.v1_6_R2.Entity entity) { // this method is called by both the entities involved - cancelling diff --git a/src/main/java/net/citizensnpcs/npc/entity/WitherController.java b/src/main/java/net/citizensnpcs/npc/entity/WitherController.java index eca900a84..74d44b9d0 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/WitherController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/WitherController.java @@ -50,6 +50,16 @@ public class WitherController extends MobEntityController { } } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void c() { if (npc == null) { diff --git a/src/main/java/net/citizensnpcs/npc/entity/WolfController.java b/src/main/java/net/citizensnpcs/npc/entity/WolfController.java index 78bc12282..bcf636f04 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/WolfController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/WolfController.java @@ -50,6 +50,16 @@ public class WolfController extends MobEntityController { } } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void collide(net.minecraft.server.v1_6_R2.Entity entity) { // this method is called by both the entities involved - cancelling diff --git a/src/main/java/net/citizensnpcs/npc/entity/ZombieController.java b/src/main/java/net/citizensnpcs/npc/entity/ZombieController.java index ec32b7984..a519ff0e9 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/ZombieController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/ZombieController.java @@ -50,6 +50,16 @@ public class ZombieController extends MobEntityController { } } + @Override + public boolean bH() { + if (npc == null) + return super.bH(); + boolean protectedDefault = npc.data().get(NPC.DEFAULT_PROTECTED_METADATA, true); + if (!protectedDefault || !npc.data().get(NPC.LEASH_PROTECTED_METADATA, protectedDefault)) + return super.bH(); + return false; // shouldLeash + } + @Override public void collide(net.minecraft.server.v1_6_R2.Entity entity) { // this method is called by both the entities involved - cancelling diff --git a/src/main/java/net/citizensnpcs/util/Messages.java b/src/main/java/net/citizensnpcs/util/Messages.java index 1f4044678..0d166f6fe 100644 --- a/src/main/java/net/citizensnpcs/util/Messages.java +++ b/src/main/java/net/citizensnpcs/util/Messages.java @@ -86,6 +86,8 @@ public class Messages { public static final String INVALID_SKELETON_TYPE = "citizens.commands.npc.skeletontype.invalid-type"; public static final String INVALID_SPAWN_LOCATION = "citizens.commands.npc.create.invalid-location"; public static final String INVALID_TRIGGER_TELEPORT_FORMAT = "citizens.editors.waypoints.triggers.teleport.invalid-format"; + public static final String LEASHABLE_SET = "citizens.commands.npc.leashable.set"; + public static final String LEASHABLE_STOPPED = "citizens.commands.npc.leashable.stopped"; public static final String LINEAR_WAYPOINT_EDITOR_ADDED_WAYPOINT = "citizens.editors.waypoints.linear.added-waypoint"; public static final String LINEAR_WAYPOINT_EDITOR_BEGIN = "citizens.editors.waypoints.linear.begin"; public static final String LINEAR_WAYPOINT_EDITOR_EDIT_SLOT_SET = "citizens.editors.waypoints.linear.edit-slot-set"; diff --git a/src/main/resources/messages_en.properties b/src/main/resources/messages_en.properties index e3c36e6ad..4482fec08 100644 --- a/src/main/resources/messages_en.properties +++ b/src/main/resources/messages_en.properties @@ -40,6 +40,8 @@ citizens.commands.npc.gamemode.invalid={0} is not a valid gamemode. citizens.commands.npc.gamemode.set=Gamemode set to [[{0}]]. citizens.commands.npc.gravity.disabled=Gravity [[disabled]]. citizens.commands.npc.gravity.enabled=Gravity [[enabled]]. +citizens.commands.npc.leashable.set=[[{0}]] is now leashable. +citizens.commands.npc.leashable.stopped=[[{0}]] is no longer leashable. citizens.commands.npc.lookclose.set=[[{0}]] will now rotate when players are nearby. citizens.commands.npc.lookclose.stopped=[[{0}]] will no longer rotate when players are nearby. citizens.commands.npc.mount.failed=Couldn''t mount [[{0}]].