From 53c975cce89398e6648d5eaf208f692881f94339 Mon Sep 17 00:00:00 2001 From: fullwall Date: Tue, 30 Jul 2013 11:15:51 +0800 Subject: [PATCH] Extend horse modifiers to save saddle and armor --- .../citizensnpcs/npc/entity/HorseController.java | 8 ++++++++ .../net/citizensnpcs/trait/HorseModifiers.java | 16 ++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/main/java/net/citizensnpcs/npc/entity/HorseController.java b/src/main/java/net/citizensnpcs/npc/entity/HorseController.java index 9d9533d04..bbe98eb94 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/HorseController.java +++ b/src/main/java/net/citizensnpcs/npc/entity/HorseController.java @@ -5,12 +5,14 @@ import net.citizensnpcs.api.npc.NPC; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.MobEntityController; import net.citizensnpcs.npc.ai.NPCHolder; +import net.citizensnpcs.trait.HorseModifiers; import net.citizensnpcs.util.NMS; import net.citizensnpcs.util.Util; import net.minecraft.server.v1_6_R2.EntityHorse; import net.minecraft.server.v1_6_R2.World; import org.bukkit.Bukkit; +import org.bukkit.Location; import org.bukkit.craftbukkit.v1_6_R2.CraftServer; import org.bukkit.craftbukkit.v1_6_R2.entity.CraftEntity; import org.bukkit.craftbukkit.v1_6_R2.entity.CraftHorse; @@ -27,6 +29,12 @@ public class HorseController extends MobEntityController { return (Horse) super.getBukkitEntity(); } + @Override + public void spawn(Location at, NPC npc) { + npc.getTrait(HorseModifiers.class); + super.spawn(at, npc); + } + public static class EntityHorseNPC extends EntityHorse implements NPCHolder { private int jumpTicks; private final CitizensNPC npc; diff --git a/src/main/java/net/citizensnpcs/trait/HorseModifiers.java b/src/main/java/net/citizensnpcs/trait/HorseModifiers.java index 76bc4e6c4..347c38951 100644 --- a/src/main/java/net/citizensnpcs/trait/HorseModifiers.java +++ b/src/main/java/net/citizensnpcs/trait/HorseModifiers.java @@ -7,12 +7,17 @@ import org.bukkit.entity.Horse; import org.bukkit.entity.Horse.Color; import org.bukkit.entity.Horse.Style; import org.bukkit.entity.Horse.Variant; +import org.bukkit.inventory.ItemStack; public class HorseModifiers extends Trait { + @Persist("armor") + private ItemStack armor = null; @Persist("carryingChest") private boolean carryingChest; @Persist("color") private Color color = Color.CREAMY; + @Persist("saddle") + private ItemStack saddle = null; @Persist("style") private Style style = Style.NONE; @Persist("type") @@ -39,6 +44,15 @@ public class HorseModifiers extends Trait { updateModifiers(); } + @Override + public void run() { + if (npc.getBukkitEntity() instanceof Horse) { + Horse horse = (Horse) npc.getBukkitEntity(); + saddle = horse.getInventory().getSaddle(); + armor = horse.getInventory().getArmor(); + } + } + public void setCarryingChest(boolean carryingChest) { this.carryingChest = carryingChest; updateModifiers(); @@ -66,6 +80,8 @@ public class HorseModifiers extends Trait { horse.setColor(color); horse.setStyle(style); horse.setVariant(type); + horse.getInventory().setArmor(armor); + horse.getInventory().setSaddle(saddle); } } }