diff --git a/pom.xml b/pom.xml index c15571b74..6e6c20591 100644 --- a/pom.xml +++ b/pom.xml @@ -55,7 +55,7 @@ org.bukkit craftbukkit - 1.2.5-R1.4-SNAPSHOT + 1.2.5-R4.1-SNAPSHOT jar provided diff --git a/src/main/java/net/citizensnpcs/EventListen.java b/src/main/java/net/citizensnpcs/EventListen.java index 5ebd63512..d52cd5bb2 100644 --- a/src/main/java/net/citizensnpcs/EventListen.java +++ b/src/main/java/net/citizensnpcs/EventListen.java @@ -15,10 +15,8 @@ import net.citizensnpcs.api.npc.NPC; import net.citizensnpcs.api.npc.NPCRegistry; import net.citizensnpcs.bukkit.BukkitConverter; import net.citizensnpcs.editor.Editor; -import net.citizensnpcs.npc.entity.EntityHumanNPC; import net.citizensnpcs.trait.CurrentLocation; import net.citizensnpcs.trait.text.Text; -import net.citizensnpcs.util.Messaging; import net.citizensnpcs.util.Util; import org.bukkit.Bukkit; @@ -27,8 +25,6 @@ import org.bukkit.craftbukkit.entity.CraftPlayer; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDeathEvent; -import org.bukkit.event.entity.EntityTargetEvent; -import org.bukkit.event.entity.EntityTargetEvent.TargetReason; import org.bukkit.event.player.PlayerChangedWorldEvent; import org.bukkit.event.player.PlayerInteractEntityEvent; import org.bukkit.event.player.PlayerQuitEvent; @@ -81,10 +77,10 @@ public class EventListen implements Listener { */ @EventHandler public void onEntityDamage(EntityDamageEvent event) { - if (!npcRegistry.isNPC(event.getEntity())) + NPC npc = BukkitConverter.toNPC(event.getEntity()); + if (npc == null) return; - NPC npc = npcRegistry.getNPC(event.getEntity()); NPCDamageEvent damageEvent; if (event instanceof EntityDamageByEntityEvent) { NPCDamageByEntityEvent damageByEntityEvent = new NPCDamageByEntityEvent(npc, event.getDamage(), @@ -108,19 +104,34 @@ public class EventListen implements Listener { @EventHandler public void onEntityDeath(EntityDeathEvent event) { - if (!npcRegistry.isNPC(event.getEntity())) + NPC npc = BukkitConverter.toNPC(event.getEntity()); + if (npc == null) return; - NPC npc = npcRegistry.getNPC(event.getEntity()); + npc.despawn(); } + /* + * Player events + */ @EventHandler - public void onEntityTarget(EntityTargetEvent event) { - if (event.isCancelled() || !npcRegistry.isNPC(event.getEntity()) || !(event.getTarget() instanceof Player)) + public void onPlayerChangedWorld(PlayerChangedWorldEvent event) { + if (!BukkitConverter.isNPC(event.getPlayer())) return; - NPC npc = npcRegistry.getNPC(event.getEntity()); - Player player = (Player) event.getTarget(); + ((CraftServer) Bukkit.getServer()).getHandle().players.remove(((CraftPlayer) event.getPlayer()).getHandle()); + } + + @EventHandler + public void onPlayerInteractEntity(PlayerInteractEntityEvent event) { + if (event.isCancelled()) + return; + + NPC npc = BukkitConverter.toNPC(event.getRightClicked()); + if (npc == null) + return; + + Player player = BukkitConverter.toPlayer(event.getPlayer()); // Call right-click event NPCRightClickEvent rightClickEvent = new NPCRightClickEvent(npc, player); @@ -133,27 +144,6 @@ public class EventListen implements Listener { npc.getAttachment(Text.class).sendText(player); } - /* - * Player events - */ - @EventHandler - public void onPlayerChangedWorld(PlayerChangedWorldEvent event) { - if (!(((CraftPlayer) event.getPlayer()).getHandle() instanceof EntityHumanNPC)) - return; - - ((CraftServer) Bukkit.getServer()).getHandle().players.remove(((CraftPlayer) event.getPlayer()).getHandle()); - } - - @EventHandler - public void onPlayerInteractEntity(PlayerInteractEntityEvent event) { - if (!npcRegistry.isNPC(event.getRightClicked())) - return; - - // Call target event for NPCs - Bukkit.getPluginManager().callEvent( - new EntityTargetEvent(event.getRightClicked(), event.getPlayer(), TargetReason.CUSTOM)); - } - @EventHandler public void onPlayerQuit(PlayerQuitEvent event) { Editor.leave(event.getPlayer().getName()); diff --git a/src/main/java/net/citizensnpcs/bukkit/BukkitConverter.java b/src/main/java/net/citizensnpcs/bukkit/BukkitConverter.java index 1899a1ba3..3d6cf4113 100644 --- a/src/main/java/net/citizensnpcs/bukkit/BukkitConverter.java +++ b/src/main/java/net/citizensnpcs/bukkit/BukkitConverter.java @@ -5,8 +5,12 @@ import net.citizensnpcs.api.abstraction.MobType; import net.citizensnpcs.api.abstraction.World; import net.citizensnpcs.api.abstraction.WorldVector; import net.citizensnpcs.api.abstraction.entity.Entity; +import net.citizensnpcs.api.abstraction.entity.NPCHolder; +import net.citizensnpcs.api.abstraction.entity.Player; +import net.citizensnpcs.api.npc.NPC; import org.bukkit.Location; +import org.bukkit.craftbukkit.entity.CraftEntity; import org.bukkit.entity.EntityType; public class BukkitConverter { @@ -40,4 +44,20 @@ public class BukkitConverter { // TODO Auto-generated method stub return null; } + + public static NPC toNPC(org.bukkit.entity.Entity entity) { + net.minecraft.server.Entity handle = ((CraftEntity) entity).getHandle(); + if (handle instanceof NPCHolder) { + return ((NPCHolder) handle).getNPC(); + } + return null; + } + + public static boolean isNPC(org.bukkit.entity.Entity entity) { + return toNPC(entity) != null; + } + + public static Player toPlayer(org.bukkit.entity.Player player) { + return new BukkitPlayer(player); + } } diff --git a/src/main/java/net/citizensnpcs/bukkit/BukkitEntity.java b/src/main/java/net/citizensnpcs/bukkit/BukkitEntity.java index 522f3c162..35abc1a08 100644 --- a/src/main/java/net/citizensnpcs/bukkit/BukkitEntity.java +++ b/src/main/java/net/citizensnpcs/bukkit/BukkitEntity.java @@ -73,4 +73,9 @@ public class BukkitEntity implements Entity { } return true; } + + @Override + public boolean isDead() { + return entity.isDead(); + } } diff --git a/src/main/java/net/citizensnpcs/bukkit/BukkitPlayer.java b/src/main/java/net/citizensnpcs/bukkit/BukkitPlayer.java index 4baa56d07..c59004381 100644 --- a/src/main/java/net/citizensnpcs/bukkit/BukkitPlayer.java +++ b/src/main/java/net/citizensnpcs/bukkit/BukkitPlayer.java @@ -16,6 +16,11 @@ public class BukkitPlayer extends BukkitLivingEntity implements Player { return getPlayer().getName(); } + @Override + public ItemStack getItemInHand() { + return getEquipment(Equipment.CARRIED); + } + @Override public boolean hasPermission(String perm) { return getPlayer().hasPermission(perm); diff --git a/src/main/java/net/citizensnpcs/editor/EquipmentEditor.java b/src/main/java/net/citizensnpcs/editor/EquipmentEditor.java index d26f3fb78..3742abc9a 100644 --- a/src/main/java/net/citizensnpcs/editor/EquipmentEditor.java +++ b/src/main/java/net/citizensnpcs/editor/EquipmentEditor.java @@ -1,9 +1,9 @@ package net.citizensnpcs.editor; -import net.citizensnpcs.api.CitizensAPI; import net.citizensnpcs.api.abstraction.EventHandler; import net.citizensnpcs.api.abstraction.entity.Player; import net.citizensnpcs.api.npc.NPC; +import net.citizensnpcs.bukkit.BukkitConverter; import net.citizensnpcs.bukkit.BukkitPlayer; import net.citizensnpcs.util.Messaging; @@ -40,8 +40,7 @@ public class EquipmentEditor extends Editor { @EventHandler public void onPlayerInteractEntity(PlayerInteractEntityEvent event) { - if (!npc.equals(CitizensAPI.getNPCRegistry().getNPC(event.getRightClicked())) - || !event.getPlayer().equals(player)) + if (!npc.equals(BukkitConverter.toNPC(event.getRightClicked())) || !event.getPlayer().equals(player)) return; if (npc instanceof Equipable) { diff --git a/src/main/java/net/citizensnpcs/npc/CitizensMobNPC.java b/src/main/java/net/citizensnpcs/npc/CitizensMobNPC.java index 5c5989ef1..0aa8b9fe1 100644 --- a/src/main/java/net/citizensnpcs/npc/CitizensMobNPC.java +++ b/src/main/java/net/citizensnpcs/npc/CitizensMobNPC.java @@ -8,6 +8,10 @@ import javax.xml.stream.Location; import net.citizensnpcs.api.abstraction.World; import net.citizensnpcs.api.npc.NPC; +import net.minecraft.server.EntityLiving; +import net.minecraft.server.EntityTypes; + +import org.bukkit.craftbukkit.CraftWorld; @SuppressWarnings("unchecked") public abstract class CitizensMobNPC extends CitizensNPC { diff --git a/src/main/java/net/citizensnpcs/npc/CitizensNPC.java b/src/main/java/net/citizensnpcs/npc/CitizensNPC.java index 3fe719446..656a65d52 100644 --- a/src/main/java/net/citizensnpcs/npc/CitizensNPC.java +++ b/src/main/java/net/citizensnpcs/npc/CitizensNPC.java @@ -2,10 +2,7 @@ package net.citizensnpcs.npc; import net.citizensnpcs.api.CitizensAPI; import net.citizensnpcs.api.abstraction.WorldVector; -import net.citizensnpcs.api.abstraction.entity.LivingEntity; import net.citizensnpcs.api.attachment.Attachment; -import net.citizensnpcs.api.event.NPCDespawnEvent; -import net.citizensnpcs.api.event.NPCSpawnEvent; import net.citizensnpcs.api.exception.NPCLoadException; import net.citizensnpcs.api.npc.AbstractNPC; import net.citizensnpcs.api.npc.NPCRegistry; @@ -24,39 +21,13 @@ public class CitizensNPC extends AbstractNPC { super(CitizensAPI.getNPCRegistry(), name); } - @Override - public boolean despawn() { - if (!isSpawned()) { - Messaging.debug(String.format("The NPC with the ID '%d' is already despawned.", getId())); - return false; - } - - CitizensAPI.getServer().callEvent(new NPCDespawnEvent(this)); - getEntity().remove(); - controller = null; - - return true; - } - @Override protected Attachment getAttachmentFor(Class clazz) { - // TODO Auto-generated method stub - return null; + return CitizensAPI.getAttachmentFactory().getAttachment(clazz); } private Attachment getAttachmentFor(String name) { - // TODO Auto-generated method stub - return null; - } - - @Override - public LivingEntity getEntity() { - return (LivingEntity) controller.getEntity(); - } - - @Override - public boolean isSpawned() { - return getEntity() != null; + return CitizensAPI.getAttachmentFactory().getAttachment(name); } public void load(DataKey root) { @@ -94,31 +65,6 @@ public class CitizensNPC extends AbstractNPC { } } - @Override - public boolean spawn(WorldVector at) { - if (at == null) - throw new IllegalArgumentException("location cannot be null"); - if (isSpawned()) { - Messaging.debug("NPC (ID: " + getId() + ") is already spawned."); - return false; - } - NPCSpawnEvent spawnEvent = new NPCSpawnEvent(this, at); - CitizensAPI.getServer().callEvent(spawnEvent); - if (spawnEvent.isCancelled()) - return false; - - controller.spawn(at); - - // Set the spawned state - getAttachment(CurrentLocation.class).setLocation(at); - spawned = true; - - // Modify NPC using traits after the entity has been created - for (Attachment attached : attachments.values()) - attached.onSpawn(); - return true; - } - @Override public void update() { try { diff --git a/src/main/java/net/citizensnpcs/npc/CitizensTraitManager.java b/src/main/java/net/citizensnpcs/npc/CitizensTraitManager.java index 714166d50..8a0fd5368 100644 --- a/src/main/java/net/citizensnpcs/npc/CitizensTraitManager.java +++ b/src/main/java/net/citizensnpcs/npc/CitizensTraitManager.java @@ -1,132 +1,110 @@ package net.citizensnpcs.npc; -import java.lang.reflect.Constructor; -import java.security.acl.Owner; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; +public class CitizensTraitManager {/*implements TraitManager { +private final Map, Constructor> CACHED_CTORS = new HashMap, Constructor>(); +private final Map>> registered = new HashMap>>(); -import net.citizensnpcs.api.abstraction.Equipment; -import net.citizensnpcs.api.abstraction.MobType; -import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.trait.Age; -import net.citizensnpcs.trait.Behaviour; -import net.citizensnpcs.trait.Controllable; -import net.citizensnpcs.trait.CurrentLocation; -import net.citizensnpcs.trait.LookClose; -import net.citizensnpcs.trait.Powered; -import net.citizensnpcs.trait.Saddle; -import net.citizensnpcs.trait.Sheared; -import net.citizensnpcs.trait.VillagerProfession; -import net.citizensnpcs.trait.WoolColor; -import net.citizensnpcs.trait.text.Text; -import net.citizensnpcs.trait.waypoint.Waypoints; +// TODO: handle Plugin-setting/names better and avoid cruft. also find a +// way to avoid naming conflicts +public CitizensTraitManager(Plugin plugin) { +registerTrait(new TraitFactory(Age.class).withName("age").withPlugin(plugin)); +registerTrait(new TraitFactory(CurrentLocation.class).withName("location").withPlugin(plugin)); +registerTrait(new TraitFactory(Equipment.class).withName("equipment").withPlugin(plugin)); +registerTrait(new TraitFactory(Inventory.class).withName("inventory").withPlugin(plugin)); +registerTrait(new TraitFactory(LookClose.class).withName("lookclose").withPlugin(plugin)); +registerTrait(new TraitFactory(MobType.class).withName("type").withPlugin(plugin)); +registerTrait(new TraitFactory(Owner.class).withName("owner").withPlugin(plugin)); +registerTrait(new TraitFactory(Powered.class).withName("powered").withPlugin(plugin)); +registerTrait(new TraitFactory(Saddle.class).withName("saddle").withPlugin(plugin)); +registerTrait(new TraitFactory(Sheared.class).withName("sheared").withPlugin(plugin)); +registerTrait(new TraitFactory(Spawned.class).withName("spawned").withPlugin(plugin)); +registerTrait(new TraitFactory(Text.class).withName("text").withPlugin(plugin)); +registerTrait(new TraitFactory(VillagerProfession.class).withName("profession").withPlugin(plugin)); +registerTrait(new TraitFactory(Waypoints.class).withName("waypoints").withPlugin(plugin)); +registerTrait(new TraitFactory(WoolColor.class).withName("woolcolor").withPlugin(plugin)); +registerTrait(new TraitFactory(Controllable.class).withName("controllable").withPlugin(plugin)); +registerTrait(new TraitFactory(Behaviour.class).withName("behaviour").withPlugin(plugin)); +} -public class CitizensTraitManager implements TraitManager { - private final Map, Constructor> CACHED_CTORS = new HashMap, Constructor>(); - private final Map>> registered = new HashMap>>(); +@SuppressWarnings("unchecked") +private T create(Class trait, NPC npc) { +Constructor constructor; - // TODO: handle Plugin-setting/names better and avoid cruft. also find a - // way to avoid naming conflicts - public CitizensTraitManager(Plugin plugin) { - registerTrait(new TraitFactory(Age.class).withName("age").withPlugin(plugin)); - registerTrait(new TraitFactory(CurrentLocation.class).withName("location").withPlugin(plugin)); - registerTrait(new TraitFactory(Equipment.class).withName("equipment").withPlugin(plugin)); - registerTrait(new TraitFactory(Inventory.class).withName("inventory").withPlugin(plugin)); - registerTrait(new TraitFactory(LookClose.class).withName("lookclose").withPlugin(plugin)); - registerTrait(new TraitFactory(MobType.class).withName("type").withPlugin(plugin)); - registerTrait(new TraitFactory(Owner.class).withName("owner").withPlugin(plugin)); - registerTrait(new TraitFactory(Powered.class).withName("powered").withPlugin(plugin)); - registerTrait(new TraitFactory(Saddle.class).withName("saddle").withPlugin(plugin)); - registerTrait(new TraitFactory(Sheared.class).withName("sheared").withPlugin(plugin)); - registerTrait(new TraitFactory(Spawned.class).withName("spawned").withPlugin(plugin)); - registerTrait(new TraitFactory(Text.class).withName("text").withPlugin(plugin)); - registerTrait(new TraitFactory(VillagerProfession.class).withName("profession").withPlugin(plugin)); - registerTrait(new TraitFactory(Waypoints.class).withName("waypoints").withPlugin(plugin)); - registerTrait(new TraitFactory(WoolColor.class).withName("woolcolor").withPlugin(plugin)); - registerTrait(new TraitFactory(Controllable.class).withName("controllable").withPlugin(plugin)); - registerTrait(new TraitFactory(Behaviour.class).withName("behaviour").withPlugin(plugin)); - } +if (!CACHED_CTORS.containsKey(trait)) { +try { +// TODO: replace this fixed constructor with a context class +// which can have extra environment variables. +constructor = trait.getConstructor(NPC.class); +if (constructor == null) +constructor = trait.getConstructor(CitizensNPC.class); +constructor.setAccessible(true); +} catch (Exception ex) { +constructor = null; +} +CACHED_CTORS.put(trait, constructor); +} else +constructor = CACHED_CTORS.get(trait); - @SuppressWarnings("unchecked") - private T create(Class trait, NPC npc) { - Constructor constructor; +try { +if (constructor == null || npc == null) +return trait.newInstance(); +return (T) constructor.newInstance(npc); +} catch (Exception ex) { +ex.printStackTrace(); +return null; +} +} - if (!CACHED_CTORS.containsKey(trait)) { - try { - // TODO: replace this fixed constructor with a context class - // which can have extra environment variables. - constructor = trait.getConstructor(NPC.class); - if (constructor == null) - constructor = trait.getConstructor(CitizensNPC.class); - constructor.setAccessible(true); - } catch (Exception ex) { - constructor = null; - } - CACHED_CTORS.put(trait, constructor); - } else - constructor = CACHED_CTORS.get(trait); +@Override +public T getTrait(Class clazz) { +return getTrait(clazz, null); +} - try { - if (constructor == null || npc == null) - return trait.newInstance(); - return (T) constructor.newInstance(npc); - } catch (Exception ex) { - ex.printStackTrace(); - return null; - } - } +@SuppressWarnings("unchecked") +public T getTrait(Class clazz, NPC npc) { +for (Entry>> entry : registered.entrySet()) { +for (Entry> subEntry : entry.getValue().entrySet()) { +if (!subEntry.getValue().equals(clazz)) +continue; +Trait trait = create(subEntry.getValue(), npc); +if (trait == null) +return null; +trait.setPlugin(entry.getKey()); +trait.setName(subEntry.getKey()); +return (T) trait; +} +} +return null; +} - @Override - public T getTrait(Class clazz) { - return getTrait(clazz, null); - } +@SuppressWarnings("unchecked") +@Override +public T getTrait(String name) { +for (Map> entry : registered.values()) { +if (!entry.containsKey(name)) +continue; +return (T) create(entry.get(name), null); +} +return null; +} - @SuppressWarnings("unchecked") - public T getTrait(Class clazz, NPC npc) { - for (Entry>> entry : registered.entrySet()) { - for (Entry> subEntry : entry.getValue().entrySet()) { - if (!subEntry.getValue().equals(clazz)) - continue; - Trait trait = create(subEntry.getValue(), npc); - if (trait == null) - return null; - trait.setPlugin(entry.getKey()); - trait.setName(subEntry.getKey()); - return (T) trait; - } - } - return null; - } +@SuppressWarnings("unchecked") +public T getTrait(String name, NPC npc) { +for (Map> entry : registered.values()) { +Class clazz = entry.get(name); +if (clazz == null) +continue; +return (T) getTrait(clazz, npc); +} +return null; +} - @SuppressWarnings("unchecked") - @Override - public T getTrait(String name) { - for (Map> entry : registered.values()) { - if (!entry.containsKey(name)) - continue; - return (T) create(entry.get(name), null); - } - return null; - } - - @SuppressWarnings("unchecked") - public T getTrait(String name, NPC npc) { - for (Map> entry : registered.values()) { - Class clazz = entry.get(name); - if (clazz == null) - continue; - return (T) getTrait(clazz, npc); - } - return null; - } - - @Override - public void registerTrait(TraitFactory factory) { - Map> map = registered.get(factory.getTraitPlugin()); - if (map == null) - map = new HashMap>(); - map.put(factory.getTraitName(), factory.getTraitClass()); - registered.put(factory.getTraitPlugin(), map); - } +@Override +public void registerTrait(TraitFactory factory) { +Map> map = registered.get(factory.getTraitPlugin()); +if (map == null) +map = new HashMap>(); +map.put(factory.getTraitName(), factory.getTraitClass()); +registered.put(factory.getTraitPlugin(), map); +}*/ } \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/NPCSelector.java b/src/main/java/net/citizensnpcs/npc/NPCSelector.java index 9ca1f9aab..e5eab2115 100644 --- a/src/main/java/net/citizensnpcs/npc/NPCSelector.java +++ b/src/main/java/net/citizensnpcs/npc/NPCSelector.java @@ -15,6 +15,9 @@ import net.citizensnpcs.editor.Editor; import net.citizensnpcs.util.Messaging; import net.citizensnpcs.util.Util; +import org.bukkit.Bukkit; +import org.bukkit.metadata.FixedMetadataValue; +import org.bukkit.metadata.MetadataValue; import org.mozilla.javascript.ContextFactory.Listener; public class NPCSelector implements Listener { @@ -69,7 +72,7 @@ public class NPCSelector implements Listener { npc.setMetadata("selectors", new FixedMetadataValue(plugin, "console")); } - Bukkit.getPluginManager().callEvent(new NPCSelectEvent(npc, sender)); + CitizensAPI.getServer().callEvent(new NPCSelectEvent(npc, sender)); } public NPC getSelected(CommandSender sender) { diff --git a/src/main/java/net/citizensnpcs/npc/entity/CitizensBlazeNPC.java b/src/main/java/net/citizensnpcs/npc/entity/CitizensBlazeNPC.java deleted file mode 100644 index 0c6762dce..000000000 --- a/src/main/java/net/citizensnpcs/npc/entity/CitizensBlazeNPC.java +++ /dev/null @@ -1,46 +0,0 @@ -package net.citizensnpcs.npc.entity; - -import net.citizensnpcs.api.abstraction.World; -import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.npc.CitizensMobNPC; -import net.citizensnpcs.npc.CitizensNPC; - -public class CitizensBlazeNPC extends CitizensMobNPC { - - public CitizensBlazeNPC(int id, String name) { - super(id, name, EntityBlazeNPC.class); - } - - @Override - public Blaze getBukkitEntity() { - return (Blaze) getHandle().getBukkitEntity(); - } - - public static class EntityBlazeNPC extends EntityBlaze implements NPCHandle { - private final CitizensNPC npc; - - public EntityBlazeNPC(World world) { - this(world, null); - } - - public EntityBlazeNPC(World world, NPC npc) { - super(world); - this.npc = (CitizensNPC) npc; - goalSelector = new PathfinderGoalSelector(); - targetSelector = new PathfinderGoalSelector(); - } - - @Override - public void d_() { - if (npc != null) - npc.update(); - else - super.d_(); - } - - @Override - public NPC getNPC() { - return npc; - } - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/entity/CitizensCaveSpiderNPC.java b/src/main/java/net/citizensnpcs/npc/entity/CitizensCaveSpiderNPC.java deleted file mode 100644 index 5efb2cd11..000000000 --- a/src/main/java/net/citizensnpcs/npc/entity/CitizensCaveSpiderNPC.java +++ /dev/null @@ -1,40 +0,0 @@ -package net.citizensnpcs.npc.entity; - -import net.citizensnpcs.api.abstraction.World; -import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.npc.CitizensMobNPC; -import net.citizensnpcs.npc.CitizensNPC; - -public class CitizensCaveSpiderNPC extends CitizensMobNPC { - - public CitizensCaveSpiderNPC(int id, String name) { - super(id, name, EntityCaveSpiderNPC.class); - } - - @Override - public CaveSpider getBukkitEntity() { - return (CaveSpider) getHandle().getBukkitEntity(); - } - - public static class EntityCaveSpiderNPC extends EntityCaveSpider implements NPCHandle { - private final CitizensNPC npc; - - public EntityCaveSpiderNPC(World world, NPC npc) { - super(world); - this.npc = (CitizensNPC) npc; - goalSelector = new PathfinderGoalSelector(); - targetSelector = new PathfinderGoalSelector(); - } - - @Override - public void z_() { - super.z_(); - npc.update(); - } - - @Override - public NPC getNPC() { - return npc; - } - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/entity/CitizensChickenNPC.java b/src/main/java/net/citizensnpcs/npc/entity/CitizensChickenNPC.java deleted file mode 100644 index 575bc2f81..000000000 --- a/src/main/java/net/citizensnpcs/npc/entity/CitizensChickenNPC.java +++ /dev/null @@ -1,45 +0,0 @@ -package net.citizensnpcs.npc.entity; - -import net.citizensnpcs.api.abstraction.World; -import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.npc.CitizensMobNPC; -import net.citizensnpcs.npc.CitizensNPC; - -public class CitizensChickenNPC extends CitizensMobNPC { - - public CitizensChickenNPC(int id, String name) { - super(id, name, EntityChickenNPC.class); - } - - @Override - public Chicken getBukkitEntity() { - return (Chicken) getHandle().getBukkitEntity(); - } - - public static class EntityChickenNPC extends EntityChicken implements NPCHandle { - private final CitizensNPC npc; - - public EntityChickenNPC(World world) { - this(world, null); - } - - public EntityChickenNPC(World world, NPC npc) { - super(world); - this.npc = (CitizensNPC) npc; - goalSelector = new PathfinderGoalSelector(); - targetSelector = new PathfinderGoalSelector(); - } - - @Override - public void z_() { - super.z_(); - if (npc != null) - npc.update(); - } - - @Override - public NPC getNPC() { - return npc; - } - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/entity/CitizensCowNPC.java b/src/main/java/net/citizensnpcs/npc/entity/CitizensCowNPC.java deleted file mode 100644 index 3924ee9be..000000000 --- a/src/main/java/net/citizensnpcs/npc/entity/CitizensCowNPC.java +++ /dev/null @@ -1,45 +0,0 @@ -package net.citizensnpcs.npc.entity; - -import net.citizensnpcs.api.abstraction.World; -import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.npc.CitizensMobNPC; -import net.citizensnpcs.npc.CitizensNPC; - -public class CitizensCowNPC extends CitizensMobNPC { - - public CitizensCowNPC(int id, String name) { - super(id, name, EntityCowNPC.class); - } - - @Override - public Cow getBukkitEntity() { - return (Cow) getHandle().getBukkitEntity(); - } - - public static class EntityCowNPC extends EntityCow implements NPCHandle { - private final CitizensNPC npc; - - public EntityCowNPC(World world) { - this(world, null); - } - - public EntityCowNPC(World world, NPC npc) { - super(world); - this.npc = (CitizensNPC) npc; - goalSelector = new PathfinderGoalSelector(); - targetSelector = new PathfinderGoalSelector(); - } - - @Override - public void z_() { - super.z_(); - if (npc != null) - npc.update(); - } - - @Override - public NPC getNPC() { - return npc; - } - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/entity/CitizensCreeperNPC.java b/src/main/java/net/citizensnpcs/npc/entity/CitizensCreeperNPC.java deleted file mode 100644 index 1a3d342a2..000000000 --- a/src/main/java/net/citizensnpcs/npc/entity/CitizensCreeperNPC.java +++ /dev/null @@ -1,49 +0,0 @@ -package net.citizensnpcs.npc.entity; - -import net.citizensnpcs.api.abstraction.World; -import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.npc.CitizensMobNPC; -import net.citizensnpcs.npc.CitizensNPC; - -public class CitizensCreeperNPC extends CitizensMobNPC { - - public CitizensCreeperNPC(int id, String name) { - super(id, name, EntityCreeperNPC.class); - } - - @Override - public Creeper getBukkitEntity() { - return (Creeper) getHandle().getBukkitEntity(); - } - - public static class EntityCreeperNPC extends EntityCreeper implements NPCHandle { - private final CitizensNPC npc; - - public EntityCreeperNPC(World world) { - this(world, null); - } - - public EntityCreeperNPC(World world, NPC npc) { - super(world); - this.npc = (CitizensNPC) npc; - goalSelector = new PathfinderGoalSelector(); - targetSelector = new PathfinderGoalSelector(); - } - - @Override - public void a(EntityWeatherLighting entityweatherlighting) { - } - - @Override - public void z_() { - super.z_(); - if (npc != null) - npc.update(); - } - - @Override - public NPC getNPC() { - return npc; - } - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/entity/CitizensEnderDragonNPC.java b/src/main/java/net/citizensnpcs/npc/entity/CitizensEnderDragonNPC.java deleted file mode 100644 index 34aa48787..000000000 --- a/src/main/java/net/citizensnpcs/npc/entity/CitizensEnderDragonNPC.java +++ /dev/null @@ -1,43 +0,0 @@ -package net.citizensnpcs.npc.entity; - -import net.citizensnpcs.api.abstraction.World; -import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.npc.CitizensMobNPC; -import net.citizensnpcs.npc.CitizensNPC; - -public class CitizensEnderDragonNPC extends CitizensMobNPC { - - public CitizensEnderDragonNPC(int id, String name) { - super(id, name, EntityEnderDragonNPC.class); - } - - @Override - public EnderDragon getBukkitEntity() { - return (EnderDragon) getHandle().getBukkitEntity(); - } - - public static class EntityEnderDragonNPC extends EntityEnderDragon implements NPCHandle { - private final CitizensNPC npc; - - public EntityEnderDragonNPC(World world, NPC npc) { - super(world); - this.npc = (CitizensNPC) npc; - goalSelector = new PathfinderGoalSelector(); - targetSelector = new PathfinderGoalSelector(); - } - - @Override - public void d_() { - } - - @Override - public void e() { - npc.update(); - } - - @Override - public NPC getNPC() { - return npc; - } - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/entity/CitizensEndermanNPC.java b/src/main/java/net/citizensnpcs/npc/entity/CitizensEndermanNPC.java deleted file mode 100644 index cb09f6436..000000000 --- a/src/main/java/net/citizensnpcs/npc/entity/CitizensEndermanNPC.java +++ /dev/null @@ -1,87 +0,0 @@ -package net.citizensnpcs.npc.entity; - -import net.citizensnpcs.api.abstraction.Equipment; -import net.citizensnpcs.api.abstraction.ItemStack; -import net.citizensnpcs.api.abstraction.Material; -import net.citizensnpcs.api.abstraction.World; -import net.citizensnpcs.api.abstraction.entity.Player; -import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.editor.Equipable; -import net.citizensnpcs.npc.CitizensMobNPC; -import net.citizensnpcs.npc.CitizensNPC; -import net.citizensnpcs.util.Messaging; - -public class CitizensEndermanNPC extends CitizensMobNPC implements Equipable { - - public CitizensEndermanNPC(int id, String name) { - super(id, name, EntityEndermanNPC.class); - } - - @Override - public void equip(Player equipper) { - ItemStack hand = equipper.getItemInHand(); - if (!hand.getType().isBlock()) { - Messaging.sendError(equipper, "Invalid block!"); - return; - } - - MaterialData carried = getBukkitEntity().getCarriedMaterial(); - if (carried.getItemType() == Material.AIR) { - if (hand.getType() == Material.AIR) { - Messaging.sendError(equipper, "Invalid block!"); - return; - } - } else { - equipper.getWorld().dropItemNaturally(getBukkitEntity().getLocation(), carried.toItemStack(1)); - getBukkitEntity().setCarriedMaterial(hand.getData()); - } - - ItemStack set = hand; - if (set.getType() != Material.AIR) { - if (hand.getAmount() > 1) - hand.setAmount(hand.getAmount() - 1); - else - hand = null; - equipper.setItemInHand(hand); - set.setAmount(1); - } - getTrait(Equipment.class).set(0, set); - } - - @Override - public Enderman getBukkitEntity() { - return (Enderman) getHandle().getBukkitEntity(); - } - - public static class EntityEndermanNPC extends EntityEnderman implements NPCHandle { - private final CitizensNPC npc; - - public EntityEndermanNPC(World world) { - this(world, null); - } - - public EntityEndermanNPC(World world, NPC npc) { - super(world); - this.npc = (CitizensNPC) npc; - goalSelector = new PathfinderGoalSelector(); - targetSelector = new PathfinderGoalSelector(); - } - - @Override - public void d_() { - } - - @Override - public void e() { - if (npc != null) - npc.update(); - else - super.e(); - } - - @Override - public NPC getNPC() { - return npc; - } - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/entity/CitizensGhastNPC.java b/src/main/java/net/citizensnpcs/npc/entity/CitizensGhastNPC.java deleted file mode 100644 index 2104c52f6..000000000 --- a/src/main/java/net/citizensnpcs/npc/entity/CitizensGhastNPC.java +++ /dev/null @@ -1,46 +0,0 @@ -package net.citizensnpcs.npc.entity; - -import net.citizensnpcs.api.abstraction.World; -import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.npc.CitizensMobNPC; -import net.citizensnpcs.npc.CitizensNPC; - -public class CitizensGhastNPC extends CitizensMobNPC { - - public CitizensGhastNPC(int id, String name) { - super(id, name, EntityGhastNPC.class); - } - - @Override - public Ghast getBukkitEntity() { - return (Ghast) getHandle().getBukkitEntity(); - } - - public static class EntityGhastNPC extends EntityGhast implements NPCHandle { - private final CitizensNPC npc; - - public EntityGhastNPC(World world) { - this(world, null); - } - - public EntityGhastNPC(World world, NPC npc) { - super(world); - this.npc = (CitizensNPC) npc; - goalSelector = new PathfinderGoalSelector(); - targetSelector = new PathfinderGoalSelector(); - } - - @Override - public void d_() { - if (npc != null) - npc.update(); - else - super.d_(); - } - - @Override - public NPC getNPC() { - return npc; - } - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/entity/CitizensGiantNPC.java b/src/main/java/net/citizensnpcs/npc/entity/CitizensGiantNPC.java deleted file mode 100644 index 1d988aebd..000000000 --- a/src/main/java/net/citizensnpcs/npc/entity/CitizensGiantNPC.java +++ /dev/null @@ -1,39 +0,0 @@ -package net.citizensnpcs.npc.entity; - -import net.citizensnpcs.api.abstraction.World; -import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.npc.CitizensMobNPC; -import net.citizensnpcs.npc.CitizensNPC; - -public class CitizensGiantNPC extends CitizensMobNPC { - - public CitizensGiantNPC(int id, String name) { - super(id, name, EntityGiantNPC.class); - } - - @Override - public Giant getBukkitEntity() { - return (Giant) getHandle().getBukkitEntity(); - } - - public static class EntityGiantNPC extends EntityGiantZombie implements NPCHandle { - private final CitizensNPC npc; - - public EntityGiantNPC(World world, NPC npc) { - super(world); - this.npc = (CitizensNPC) npc; - goalSelector = new PathfinderGoalSelector(); - targetSelector = new PathfinderGoalSelector(); - } - - @Override - public void d_() { - npc.update(); - } - - @Override - public NPC getNPC() { - return npc; - } - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/entity/CitizensHumanNPC.java b/src/main/java/net/citizensnpcs/npc/entity/CitizensHumanNPC.java index 3bdeffff1..d608a46d2 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/CitizensHumanNPC.java +++ b/src/main/java/net/citizensnpcs/npc/entity/CitizensHumanNPC.java @@ -1,135 +1,124 @@ package net.citizensnpcs.npc.entity; -import javax.xml.stream.Location; -import net.citizensnpcs.api.CitizensAPI; -import net.citizensnpcs.api.abstraction.Equipment; -import net.citizensnpcs.api.abstraction.ItemStack; -import net.citizensnpcs.api.abstraction.Material; -import net.citizensnpcs.api.abstraction.entity.Player; -import net.citizensnpcs.editor.Equipable; -import net.citizensnpcs.npc.CitizensNPC; -import net.citizensnpcs.util.Messaging; -import net.citizensnpcs.util.StringHelper; +public class CitizensHumanNPC {/* extends CitizensNPC implements Equipable { -public class CitizensHumanNPC extends CitizensNPC implements Equipable { +public CitizensHumanNPC(int id, String name) { +super(id, name); +} - public CitizensHumanNPC(int id, String name) { - super(id, name); - } +@Override +protected EntityLiving createHandle(final Location loc) { +WorldServer ws = ((CraftWorld) loc.getWorld()).getHandle(); +final EntityHumanNPC handle = new EntityHumanNPC(ws.getServer().getServer(), ws, +StringHelper.parseColors(getFullName()), new ItemInWorldManager(ws), this); +handle.getBukkitEntity().teleport(loc); +Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), new Runnable() { +@Override +public void run() { +handle.X = loc.getYaw() % 360; +// set the head yaw in another tick - if done immediately, +// minecraft will not update it. +} +}); +return handle; +} - @Override - protected EntityLiving createHandle(final Location loc) { - WorldServer ws = ((CraftWorld) loc.getWorld()).getHandle(); - final EntityHumanNPC handle = new EntityHumanNPC(ws.getServer().getServer(), ws, - StringHelper.parseColors(getFullName()), new ItemInWorldManager(ws), this); - handle.getBukkitEntity().teleport(loc); - Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), new Runnable() { - @Override - public void run() { - handle.X = loc.getYaw() % 360; - // set the head yaw in another tick - if done immediately, - // minecraft will not update it. - } - }); - return handle; - } +@Override +public void equip(Player equipper) { +ItemStack hand = equipper.getItemInHand(); +Equipment trait = getTrait(Equipment.class); +int slot = 0; +Material type = hand == null ? Material.AIR : hand.getType(); +// First, determine the slot to edit +switch (type) { +case PUMPKIN: +case JACK_O_LANTERN: +case LEATHER_HELMET: +case CHAINMAIL_HELMET: +case GOLD_HELMET: +case IRON_HELMET: +case DIAMOND_HELMET: +if (!equipper.isSneaking()) +slot = 1; +break; +case LEATHER_CHESTPLATE: +case CHAINMAIL_CHESTPLATE: +case GOLD_CHESTPLATE: +case IRON_CHESTPLATE: +case DIAMOND_CHESTPLATE: +if (!equipper.isSneaking()) +slot = 2; +break; +case LEATHER_LEGGINGS: +case CHAINMAIL_LEGGINGS: +case GOLD_LEGGINGS: +case IRON_LEGGINGS: +case DIAMOND_LEGGINGS: +if (!equipper.isSneaking()) +slot = 3; +break; +case LEATHER_BOOTS: +case CHAINMAIL_BOOTS: +case GOLD_BOOTS: +case IRON_BOOTS: +case DIAMOND_BOOTS: +if (!equipper.isSneaking()) +slot = 4; +break; +case AIR: +for (int i = 0; i < 5; i++) { +if (trait.get(i) != null && trait.get(i).getType() != Material.AIR) { +equipper.getWorld().dropItemNaturally(getBukkitEntity().getLocation(), trait.get(i)); +trait.set(i, null); +} +} +Messaging.sendF(equipper, "%shad all of its items removed.", getName()); +} +// Drop any previous equipment on the ground +if (trait.get(slot) != null && trait.get(slot).getType() != Material.AIR) +equipper.getWorld().dropItemNaturally(getBukkitEntity().getLocation(), trait.get(slot)); - @Override - public void equip(Player equipper) { - ItemStack hand = equipper.getItemInHand(); - Equipment trait = getTrait(Equipment.class); - int slot = 0; - Material type = hand == null ? Material.AIR : hand.getType(); - // First, determine the slot to edit - switch (type) { - case PUMPKIN: - case JACK_O_LANTERN: - case LEATHER_HELMET: - case CHAINMAIL_HELMET: - case GOLD_HELMET: - case IRON_HELMET: - case DIAMOND_HELMET: - if (!equipper.isSneaking()) - slot = 1; - break; - case LEATHER_CHESTPLATE: - case CHAINMAIL_CHESTPLATE: - case GOLD_CHESTPLATE: - case IRON_CHESTPLATE: - case DIAMOND_CHESTPLATE: - if (!equipper.isSneaking()) - slot = 2; - break; - case LEATHER_LEGGINGS: - case CHAINMAIL_LEGGINGS: - case GOLD_LEGGINGS: - case IRON_LEGGINGS: - case DIAMOND_LEGGINGS: - if (!equipper.isSneaking()) - slot = 3; - break; - case LEATHER_BOOTS: - case CHAINMAIL_BOOTS: - case GOLD_BOOTS: - case IRON_BOOTS: - case DIAMOND_BOOTS: - if (!equipper.isSneaking()) - slot = 4; - break; - case AIR: - for (int i = 0; i < 5; i++) { - if (trait.get(i) != null && trait.get(i).getType() != Material.AIR) { - equipper.getWorld().dropItemNaturally(getBukkitEntity().getLocation(), trait.get(i)); - trait.set(i, null); - } - } - Messaging.sendF(equipper, "%shad all of its items removed.", getName()); - } - // Drop any previous equipment on the ground - if (trait.get(slot) != null && trait.get(slot).getType() != Material.AIR) - equipper.getWorld().dropItemNaturally(getBukkitEntity().getLocation(), trait.get(slot)); +// Now edit the equipment based on the slot +if (type != Material.AIR) { +// Set the proper slot with one of the item +ItemStack clone = hand.clone(); +clone.setAmount(1); +trait.set(slot, clone); - // Now edit the equipment based on the slot - if (type != Material.AIR) { - // Set the proper slot with one of the item - ItemStack clone = hand.clone(); - clone.setAmount(1); - trait.set(slot, clone); +if (hand.getAmount() > 1) +hand.setAmount(hand.getAmount() - 1); +else +hand = null; +equipper.setItemInHand(hand); +} +} - if (hand.getAmount() > 1) - hand.setAmount(hand.getAmount() - 1); - else - hand = null; - equipper.setItemInHand(hand); - } - } +@Override +public Player getBukkitEntity() { +return getHandle().getBukkitEntity(); +} - @Override - public Player getBukkitEntity() { - return getHandle().getBukkitEntity(); - } +@Override +public EntityHumanNPC getHandle() { +return (EntityHumanNPC) mcEntity; +} - @Override - public EntityHumanNPC getHandle() { - return (EntityHumanNPC) mcEntity; - } +@Override +public void setName(String name) { +super.setName(name); +Location prev = getBukkitEntity().getLocation(); +despawn(); +spawn(prev); +} - @Override - public void setName(String name) { - super.setName(name); - Location prev = getBukkitEntity().getLocation(); - despawn(); - spawn(prev); - } - - @Override - public void update() { - super.update(); - if (isSpawned() && getBukkitEntity().getLocation().getChunk().isLoaded()) { - mcEntity.move(0, -0.2, 0); - // gravity! also works around an entity.onGround not updating issue - // (onGround is normally updated by the client) - } - } +@Override +public void update() { +super.update(); +if (isSpawned() && getBukkitEntity().getLocation().getChunk().isLoaded()) { +mcEntity.move(0, -0.2, 0); +// gravity! also works around an entity.onGround not updating issue +// (onGround is normally updated by the client) +} +}*/ } \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/entity/CitizensIronGolemNPC.java b/src/main/java/net/citizensnpcs/npc/entity/CitizensIronGolemNPC.java deleted file mode 100644 index 08ce6162f..000000000 --- a/src/main/java/net/citizensnpcs/npc/entity/CitizensIronGolemNPC.java +++ /dev/null @@ -1,40 +0,0 @@ -package net.citizensnpcs.npc.entity; - -import net.citizensnpcs.api.abstraction.World; -import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.npc.CitizensMobNPC; -import net.citizensnpcs.npc.CitizensNPC; - -public class CitizensIronGolemNPC extends CitizensMobNPC { - - public CitizensIronGolemNPC(int id, String name) { - super(id, name, EntityIronGolemNPC.class); - } - - @Override - public IronGolem getBukkitEntity() { - return (IronGolem) getHandle().getBukkitEntity(); - } - - public static class EntityIronGolemNPC extends EntityIronGolem implements NPCHandle { - private final CitizensNPC npc; - - public EntityIronGolemNPC(World world, NPC npc) { - super(world); - this.npc = (CitizensNPC) npc; - goalSelector = new PathfinderGoalSelector(); - targetSelector = new PathfinderGoalSelector(); - } - - @Override - public void z_() { - super.z_(); - npc.update(); - } - - @Override - public NPC getNPC() { - return npc; - } - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/entity/CitizensMagmaCubeNPC.java b/src/main/java/net/citizensnpcs/npc/entity/CitizensMagmaCubeNPC.java deleted file mode 100644 index d02b78fd7..000000000 --- a/src/main/java/net/citizensnpcs/npc/entity/CitizensMagmaCubeNPC.java +++ /dev/null @@ -1,47 +0,0 @@ -package net.citizensnpcs.npc.entity; - -import net.citizensnpcs.api.abstraction.World; -import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.npc.CitizensMobNPC; -import net.citizensnpcs.npc.CitizensNPC; - -public class CitizensMagmaCubeNPC extends CitizensMobNPC { - - public CitizensMagmaCubeNPC(int id, String name) { - super(id, name, EntityMagmaCubeNPC.class); - } - - @Override - public MagmaCube getBukkitEntity() { - return (MagmaCube) getHandle().getBukkitEntity(); - } - - public static class EntityMagmaCubeNPC extends EntityMagmaCube implements NPCHandle { - private final CitizensNPC npc; - - public EntityMagmaCubeNPC(World world) { - this(world, null); - } - - public EntityMagmaCubeNPC(World world, NPC npc) { - super(world); - this.npc = (CitizensNPC) npc; - setSize(3); - goalSelector = new PathfinderGoalSelector(); - targetSelector = new PathfinderGoalSelector(); - } - - @Override - public void d_() { - if (npc != null) - npc.update(); - else - super.d_(); - } - - @Override - public NPC getNPC() { - return npc; - } - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/entity/CitizensMushroomCowNPC.java b/src/main/java/net/citizensnpcs/npc/entity/CitizensMushroomCowNPC.java deleted file mode 100644 index 9dfc74956..000000000 --- a/src/main/java/net/citizensnpcs/npc/entity/CitizensMushroomCowNPC.java +++ /dev/null @@ -1,45 +0,0 @@ -package net.citizensnpcs.npc.entity; - -import net.citizensnpcs.api.abstraction.World; -import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.npc.CitizensMobNPC; -import net.citizensnpcs.npc.CitizensNPC; - -public class CitizensMushroomCowNPC extends CitizensMobNPC { - - public CitizensMushroomCowNPC(int id, String name) { - super(id, name, EntityMushroomCowNPC.class); - } - - @Override - public MushroomCow getBukkitEntity() { - return (MushroomCow) getHandle().getBukkitEntity(); - } - - public static class EntityMushroomCowNPC extends EntityMushroomCow implements NPCHandle { - private final CitizensNPC npc; - - public EntityMushroomCowNPC(World world) { - this(world, null); - } - - public EntityMushroomCowNPC(World world, NPC npc) { - super(world); - this.npc = (CitizensNPC) npc; - goalSelector = new PathfinderGoalSelector(); - targetSelector = new PathfinderGoalSelector(); - } - - @Override - public void z_() { - super.z_(); - if (npc != null) - npc.update(); - } - - @Override - public NPC getNPC() { - return npc; - } - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/entity/CitizensOcelotNPC.java b/src/main/java/net/citizensnpcs/npc/entity/CitizensOcelotNPC.java deleted file mode 100644 index a21535ec1..000000000 --- a/src/main/java/net/citizensnpcs/npc/entity/CitizensOcelotNPC.java +++ /dev/null @@ -1,45 +0,0 @@ -package net.citizensnpcs.npc.entity; - -import net.citizensnpcs.api.abstraction.World; -import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.npc.CitizensMobNPC; -import net.citizensnpcs.npc.CitizensNPC; - -public class CitizensOcelotNPC extends CitizensMobNPC { - - public CitizensOcelotNPC(int id, String name) { - super(id, name, EntityOcelotNPC.class); - } - - @Override - public Ocelot getBukkitEntity() { - return (Ocelot) getHandle().getBukkitEntity(); - } - - public static class EntityOcelotNPC extends EntityOcelot implements NPCHandle { - private final CitizensNPC npc; - - public EntityOcelotNPC(World world) { - this(world, null); - } - - public EntityOcelotNPC(World world, NPC npc) { - super(world); - this.npc = (CitizensNPC) npc; - goalSelector = new PathfinderGoalSelector(); - targetSelector = new PathfinderGoalSelector(); - } - - @Override - public void z_() { - super.z_(); - if (npc != null) - npc.update(); - } - - @Override - public NPC getNPC() { - return npc; - } - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/entity/CitizensPigNPC.java b/src/main/java/net/citizensnpcs/npc/entity/CitizensPigNPC.java deleted file mode 100644 index 4cf99bf91..000000000 --- a/src/main/java/net/citizensnpcs/npc/entity/CitizensPigNPC.java +++ /dev/null @@ -1,75 +0,0 @@ -package net.citizensnpcs.npc.entity; - -import net.citizensnpcs.api.abstraction.ItemStack; -import net.citizensnpcs.api.abstraction.Material; -import net.citizensnpcs.api.abstraction.World; -import net.citizensnpcs.api.abstraction.entity.Player; -import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.editor.Equipable; -import net.citizensnpcs.npc.CitizensMobNPC; -import net.citizensnpcs.npc.CitizensNPC; -import net.citizensnpcs.trait.Saddle; -import net.citizensnpcs.util.Messaging; -import net.citizensnpcs.util.StringHelper; - -public class CitizensPigNPC extends CitizensMobNPC implements Equipable { - - public CitizensPigNPC(int id, String name) { - super(id, name, EntityPigNPC.class); - } - - @Override - public void equip(Player equipper) { - ItemStack hand = equipper.getItemInHand(); - if (hand.getType() == Material.SADDLE) { - if (!getBukkitEntity().hasSaddle()) { - getTrait(Saddle.class).toggle(); - equipper.setItemInHand(null); - Messaging.send(equipper, StringHelper.wrap(getName()) + " is now saddled."); - } - } else { - if (getBukkitEntity().hasSaddle()) { - equipper.getWorld().dropItemNaturally(getBukkitEntity().getLocation(), - new ItemStack(Material.SADDLE, 1)); - getTrait(Saddle.class).toggle(); - Messaging.send(equipper, StringHelper.wrap(getName()) + " is no longer saddled."); - } - } - } - - @Override - public Pig getBukkitEntity() { - return (Pig) getHandle().getBukkitEntity(); - } - - public static class EntityPigNPC extends EntityPig implements NPCHandle { - private final CitizensNPC npc; - - public EntityPigNPC(World world) { - this(world, null); - } - - public EntityPigNPC(World world, NPC npc) { - super(world); - this.npc = (CitizensNPC) npc; - goalSelector = new PathfinderGoalSelector(); - targetSelector = new PathfinderGoalSelector(); - } - - @Override - public void a(EntityWeatherLighting entityweatherlighting) { - } - - @Override - public void z_() { - super.z_(); - if (npc != null) - npc.update(); - } - - @Override - public NPC getNPC() { - return npc; - } - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/entity/CitizensPigZombieNPC.java b/src/main/java/net/citizensnpcs/npc/entity/CitizensPigZombieNPC.java deleted file mode 100644 index d4d953bf6..000000000 --- a/src/main/java/net/citizensnpcs/npc/entity/CitizensPigZombieNPC.java +++ /dev/null @@ -1,46 +0,0 @@ -package net.citizensnpcs.npc.entity; - -import net.citizensnpcs.api.abstraction.World; -import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.npc.CitizensMobNPC; -import net.citizensnpcs.npc.CitizensNPC; - -public class CitizensPigZombieNPC extends CitizensMobNPC { - - public CitizensPigZombieNPC(int id, String name) { - super(id, name, EntityPigZombieNPC.class); - } - - @Override - public PigZombie getBukkitEntity() { - return (PigZombie) getHandle().getBukkitEntity(); - } - - public static class EntityPigZombieNPC extends EntityPigZombie implements NPCHandle { - private final CitizensNPC npc; - - public EntityPigZombieNPC(World world) { - this(world, null); - } - - public EntityPigZombieNPC(World world, NPC npc) { - super(world); - this.npc = (CitizensNPC) npc; - goalSelector = new PathfinderGoalSelector(); - targetSelector = new PathfinderGoalSelector(); - } - - @Override - public void d_() { - if (npc != null) - npc.update(); - else - super.d_(); - } - - @Override - public NPC getNPC() { - return npc; - } - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/entity/CitizensSheepNPC.java b/src/main/java/net/citizensnpcs/npc/entity/CitizensSheepNPC.java deleted file mode 100644 index cbdf799b2..000000000 --- a/src/main/java/net/citizensnpcs/npc/entity/CitizensSheepNPC.java +++ /dev/null @@ -1,82 +0,0 @@ -package net.citizensnpcs.npc.entity; - -import net.citizensnpcs.api.abstraction.ItemStack; -import net.citizensnpcs.api.abstraction.Material; -import net.citizensnpcs.api.abstraction.World; -import net.citizensnpcs.api.abstraction.entity.Player; -import net.citizensnpcs.api.abstraction.entity.Sheep; -import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.editor.Equipable; -import net.citizensnpcs.npc.CitizensMobNPC; -import net.citizensnpcs.npc.CitizensNPC; -import net.citizensnpcs.trait.Sheared; -import net.citizensnpcs.trait.WoolColor; -import net.citizensnpcs.util.Messaging; -import net.citizensnpcs.util.StringHelper; - -public class CitizensSheepNPC extends CitizensMobNPC implements Equipable { - - public CitizensSheepNPC(int id, String name) { - super(id, name, EntitySheepNPC.class); - } - - @Override - public void equip(Player equipper) { - ItemStack hand = equipper.getItemInHand(); - if (hand.getType() == Material.SHEARS) { - Messaging.send(equipper, StringHelper.wrap(getName()) + " is " - + (getTrait(Sheared.class).toggle() ? "now" : "no longer") + " sheared."); - } else if (hand.getType() == Material.INK_SACK) { - if (getBukkitEntity().getColor() == DyeColor.getByData((byte) (15 - hand.getData().getData()))) - return; - - DyeColor color = DyeColor.getByData((byte) (15 - hand.getData().getData())); - getTrait(WoolColor.class).setColor(color); - Messaging.send( - equipper, - StringHelper.wrap(getName()) + " is now " - + StringHelper.wrap(color.name().toLowerCase().replace("_", " ")) + "."); - - if (hand.getAmount() > 1) - hand.setAmount(hand.getAmount() - 1); - else - hand = null; - equipper.setItemInHand(hand); - } else { - getTrait(WoolColor.class).setColor(DyeColor.WHITE); - Messaging.send(equipper, StringHelper.wrap(getName()) + " is now " + StringHelper.wrap("white") + "."); - } - } - - @Override - public Sheep getBukkitEntity() { - return (Sheep) getHandle().getBukkitEntity(); - } - - public static class EntitySheepNPC extends EntitySheep implements NPCHandle { - private final CitizensNPC npc; - - public EntitySheepNPC(World world) { - this(world, null); - } - - public EntitySheepNPC(World world, NPC npc) { - super(world); - this.npc = (CitizensNPC) npc; - goalSelector = new PathfinderGoalSelector(); - targetSelector = new PathfinderGoalSelector(); - } - - @Override - public void z_() { - super.z_(); - if (npc != null) - npc.update(); - } - - @Override - public NPC getNPC() { - return npc; - } - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/entity/CitizensSilverfishNPC.java b/src/main/java/net/citizensnpcs/npc/entity/CitizensSilverfishNPC.java deleted file mode 100644 index e5af3e2bc..000000000 --- a/src/main/java/net/citizensnpcs/npc/entity/CitizensSilverfishNPC.java +++ /dev/null @@ -1,45 +0,0 @@ -package net.citizensnpcs.npc.entity; - -import net.citizensnpcs.api.abstraction.World; -import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.npc.CitizensMobNPC; -import net.citizensnpcs.npc.CitizensNPC; - -public class CitizensSilverfishNPC extends CitizensMobNPC { - - public CitizensSilverfishNPC(int id, String name) { - super(id, name, EntitySilverfishNPC.class); - } - - @Override - public Silverfish getBukkitEntity() { - return (Silverfish) getHandle().getBukkitEntity(); - } - - public static class EntitySilverfishNPC extends EntitySilverfish implements NPCHandle { - private final CitizensNPC npc; - - public EntitySilverfishNPC(World world) { - this(world, null); - } - - public EntitySilverfishNPC(World world, NPC npc) { - super(world); - this.npc = (CitizensNPC) npc; - goalSelector = new PathfinderGoalSelector(); - targetSelector = new PathfinderGoalSelector(); - } - - @Override - public void z_() { - super.z_(); - if (npc != null) - npc.update(); - } - - @Override - public NPC getNPC() { - return npc; - } - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/entity/CitizensSkeletonNPC.java b/src/main/java/net/citizensnpcs/npc/entity/CitizensSkeletonNPC.java deleted file mode 100644 index 6955e3ebf..000000000 --- a/src/main/java/net/citizensnpcs/npc/entity/CitizensSkeletonNPC.java +++ /dev/null @@ -1,47 +0,0 @@ -package net.citizensnpcs.npc.entity; - -import java.rmi.server.Skeleton; - -import net.citizensnpcs.api.abstraction.World; -import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.npc.CitizensMobNPC; -import net.citizensnpcs.npc.CitizensNPC; - -public class CitizensSkeletonNPC extends CitizensMobNPC { - - public CitizensSkeletonNPC(int id, String name) { - super(id, name, EntitySkeletonNPC.class); - } - - @Override - public Skeleton getBukkitEntity() { - return (Skeleton) getHandle().getBukkitEntity(); - } - - public static class EntitySkeletonNPC extends EntitySkeleton implements NPCHandle { - private final CitizensNPC npc; - - public EntitySkeletonNPC(World world) { - this(world, null); - } - - public EntitySkeletonNPC(World world, NPC npc) { - super(world); - this.npc = (CitizensNPC) npc; - goalSelector = new PathfinderGoalSelector(); - targetSelector = new PathfinderGoalSelector(); - } - - @Override - public void z_() { - super.z_(); - if (npc != null) - npc.update(); - } - - @Override - public NPC getNPC() { - return npc; - } - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/entity/CitizensSlimeNPC.java b/src/main/java/net/citizensnpcs/npc/entity/CitizensSlimeNPC.java deleted file mode 100644 index 40ffcf7d2..000000000 --- a/src/main/java/net/citizensnpcs/npc/entity/CitizensSlimeNPC.java +++ /dev/null @@ -1,46 +0,0 @@ -package net.citizensnpcs.npc.entity; - -import net.citizensnpcs.api.abstraction.World; -import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.npc.CitizensMobNPC; -import net.citizensnpcs.npc.CitizensNPC; - -public class CitizensSlimeNPC extends CitizensMobNPC { - - public CitizensSlimeNPC(int id, String name) { - super(id, name, EntitySlimeNPC.class); - } - - @Override - public Slime getBukkitEntity() { - return (Slime) getHandle().getBukkitEntity(); - } - - public static class EntitySlimeNPC extends EntitySlime implements NPCHandle { - private final CitizensNPC npc; - - public EntitySlimeNPC(World world) { - this(world, null); - } - - public EntitySlimeNPC(World world, NPC npc) { - super(world); - this.npc = (CitizensNPC) npc; - setSize(3); - goalSelector = new PathfinderGoalSelector(); - targetSelector = new PathfinderGoalSelector(); - } - - @Override - public void z_() { - super.z_(); - if (npc != null) - npc.update(); - } - - @Override - public NPC getNPC() { - return npc; - } - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/entity/CitizensSnowmanNPC.java b/src/main/java/net/citizensnpcs/npc/entity/CitizensSnowmanNPC.java deleted file mode 100644 index d2fa66d8d..000000000 --- a/src/main/java/net/citizensnpcs/npc/entity/CitizensSnowmanNPC.java +++ /dev/null @@ -1,40 +0,0 @@ -package net.citizensnpcs.npc.entity; - -import net.citizensnpcs.api.abstraction.World; -import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.npc.CitizensMobNPC; -import net.citizensnpcs.npc.CitizensNPC; - -public class CitizensSnowmanNPC extends CitizensMobNPC { - - public CitizensSnowmanNPC(int id, String name) { - super(id, name, EntitySnowmanNPC.class); - } - - @Override - public Snowman getBukkitEntity() { - return (Snowman) getHandle().getBukkitEntity(); - } - - public static class EntitySnowmanNPC extends EntitySnowman implements NPCHandle { - private final CitizensNPC npc; - - public EntitySnowmanNPC(World world, NPC npc) { - super(world); - this.npc = (CitizensNPC) npc; - goalSelector = new PathfinderGoalSelector(); - targetSelector = new PathfinderGoalSelector(); - } - - @Override - public void z_() { - super.z_(); - npc.update(); - } - - @Override - public NPC getNPC() { - return npc; - } - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/entity/CitizensSpiderNPC.java b/src/main/java/net/citizensnpcs/npc/entity/CitizensSpiderNPC.java deleted file mode 100644 index 445533086..000000000 --- a/src/main/java/net/citizensnpcs/npc/entity/CitizensSpiderNPC.java +++ /dev/null @@ -1,45 +0,0 @@ -package net.citizensnpcs.npc.entity; - -import net.citizensnpcs.api.abstraction.World; -import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.npc.CitizensMobNPC; -import net.citizensnpcs.npc.CitizensNPC; - -public class CitizensSpiderNPC extends CitizensMobNPC { - - public CitizensSpiderNPC(int id, String name) { - super(id, name, EntitySpiderNPC.class); - } - - @Override - public Spider getBukkitEntity() { - return (Spider) getHandle().getBukkitEntity(); - } - - public static class EntitySpiderNPC extends EntitySpider implements NPCHandle { - private final CitizensNPC npc; - - public EntitySpiderNPC(World world) { - this(world, null); - } - - public EntitySpiderNPC(World world, NPC npc) { - super(world); - this.npc = (CitizensNPC) npc; - goalSelector = new PathfinderGoalSelector(); - targetSelector = new PathfinderGoalSelector(); - } - - @Override - public void z_() { - super.z_(); - if (npc != null) - npc.update(); - } - - @Override - public NPC getNPC() { - return npc; - } - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/entity/CitizensSquidNPC.java b/src/main/java/net/citizensnpcs/npc/entity/CitizensSquidNPC.java deleted file mode 100644 index bd486bf79..000000000 --- a/src/main/java/net/citizensnpcs/npc/entity/CitizensSquidNPC.java +++ /dev/null @@ -1,46 +0,0 @@ -package net.citizensnpcs.npc.entity; - -import net.citizensnpcs.api.abstraction.World; -import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.npc.CitizensMobNPC; -import net.citizensnpcs.npc.CitizensNPC; - -public class CitizensSquidNPC extends CitizensMobNPC { - - public CitizensSquidNPC(int id, String name) { - super(id, name, EntitySquidNPC.class); - } - - @Override - public Squid getBukkitEntity() { - return (Squid) getHandle().getBukkitEntity(); - } - - public static class EntitySquidNPC extends EntitySquid implements NPCHandle { - private final CitizensNPC npc; - - public EntitySquidNPC(World world) { - this(world, null); - } - - public EntitySquidNPC(World world, NPC npc) { - super(world); - this.npc = (CitizensNPC) npc; - goalSelector = new PathfinderGoalSelector(); - targetSelector = new PathfinderGoalSelector(); - } - - @Override - public void d_() { - if (npc != null) - npc.update(); - else - super.d_(); - } - - @Override - public NPC getNPC() { - return npc; - } - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/entity/CitizensVillagerNPC.java b/src/main/java/net/citizensnpcs/npc/entity/CitizensVillagerNPC.java deleted file mode 100644 index f7b437085..000000000 --- a/src/main/java/net/citizensnpcs/npc/entity/CitizensVillagerNPC.java +++ /dev/null @@ -1,45 +0,0 @@ -package net.citizensnpcs.npc.entity; - -import net.citizensnpcs.api.abstraction.World; -import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.npc.CitizensMobNPC; -import net.citizensnpcs.npc.CitizensNPC; - -public class CitizensVillagerNPC extends CitizensMobNPC { - - public CitizensVillagerNPC(int id, String name) { - super(id, name, EntityVillagerNPC.class); - } - - @Override - public Villager getBukkitEntity() { - return (Villager) getHandle().getBukkitEntity(); - } - - public static class EntityVillagerNPC extends EntityVillager implements NPCHandle { - private final CitizensNPC npc; - - public EntityVillagerNPC(World world) { - this(world, null); - } - - public EntityVillagerNPC(World world, NPC npc) { - super(world); - this.npc = (CitizensNPC) npc; - goalSelector = new PathfinderGoalSelector(); - targetSelector = new PathfinderGoalSelector(); - } - - @Override - public void z_() { - super.z_(); - if (npc != null) - npc.update(); - } - - @Override - public NPC getNPC() { - return npc; - } - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/entity/CitizensWolfNPC.java b/src/main/java/net/citizensnpcs/npc/entity/CitizensWolfNPC.java deleted file mode 100644 index 53f51e461..000000000 --- a/src/main/java/net/citizensnpcs/npc/entity/CitizensWolfNPC.java +++ /dev/null @@ -1,45 +0,0 @@ -package net.citizensnpcs.npc.entity; - -import net.citizensnpcs.api.abstraction.World; -import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.npc.CitizensMobNPC; -import net.citizensnpcs.npc.CitizensNPC; - -public class CitizensWolfNPC extends CitizensMobNPC { - - public CitizensWolfNPC(int id, String name) { - super(id, name, EntityWolfNPC.class); - } - - @Override - public Wolf getBukkitEntity() { - return (Wolf) getHandle().getBukkitEntity(); - } - - public static class EntityWolfNPC extends EntityWolf implements NPCHandle { - private final CitizensNPC npc; - - public EntityWolfNPC(World world) { - this(world, null); - } - - public EntityWolfNPC(World world, NPC npc) { - super(world); - this.npc = (CitizensNPC) npc; - goalSelector = new PathfinderGoalSelector(); - targetSelector = new PathfinderGoalSelector(); - } - - @Override - public void z_() { - super.z_(); - if (npc != null) - npc.update(); - } - - @Override - public NPC getNPC() { - return npc; - } - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/entity/CitizensZombieNPC.java b/src/main/java/net/citizensnpcs/npc/entity/CitizensZombieNPC.java deleted file mode 100644 index 2a6ff5d03..000000000 --- a/src/main/java/net/citizensnpcs/npc/entity/CitizensZombieNPC.java +++ /dev/null @@ -1,45 +0,0 @@ -package net.citizensnpcs.npc.entity; - -import net.citizensnpcs.api.abstraction.World; -import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.npc.CitizensMobNPC; -import net.citizensnpcs.npc.CitizensNPC; - -public class CitizensZombieNPC extends CitizensMobNPC { - - public CitizensZombieNPC(int id, String name) { - super(id, name, EntityZombieNPC.class); - } - - @Override - public Zombie getBukkitEntity() { - return (Zombie) getHandle().getBukkitEntity(); - } - - public static class EntityZombieNPC extends EntityZombie implements NPCHandle { - private final CitizensNPC npc; - - public EntityZombieNPC(World world) { - this(world, null); - } - - public EntityZombieNPC(World world, NPC npc) { - super(world); - this.npc = (CitizensNPC) npc; - goalSelector = new PathfinderGoalSelector(); - targetSelector = new PathfinderGoalSelector(); - } - - @Override - public void z_() { - super.z_(); - if (npc != null) - npc.update(); - } - - @Override - public NPC getNPC() { - return npc; - } - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/entity/EntityHumanNPC.java b/src/main/java/net/citizensnpcs/npc/entity/EntityHumanNPC.java index af633444a..f1f3d286d 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/EntityHumanNPC.java +++ b/src/main/java/net/citizensnpcs/npc/entity/EntityHumanNPC.java @@ -2,30 +2,36 @@ package net.citizensnpcs.npc.entity; import java.io.IOException; -import net.citizensnpcs.api.abstraction.World; +import net.citizensnpcs.api.abstraction.entity.NPCHolder; import net.citizensnpcs.api.npc.NPC; import net.citizensnpcs.npc.CitizensNPC; -import net.citizensnpcs.npc.network.NPCNetHandler; -import net.citizensnpcs.npc.network.NPCNetworkManager; -import net.citizensnpcs.npc.network.NPCSocket; +import net.citizensnpcs.npc.network.EmptyNetHandler; +import net.citizensnpcs.npc.network.EmptyNetworkManager; +import net.citizensnpcs.npc.network.EmptySocket; +import net.minecraft.server.EntityPlayer; +import net.minecraft.server.ItemInWorldManager; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.Navigation; +import net.minecraft.server.NetHandler; +import net.minecraft.server.NetworkManager; -public class EntityHumanNPC extends EntityPlayer implements NPCHandle { +public class EntityHumanNPC extends EntityPlayer implements NPCHolder { private CitizensNPC npc; - public EntityHumanNPC(MinecraftServer minecraftServer, World world, String string, + public EntityHumanNPC(MinecraftServer minecraftServer, net.minecraft.server.World world, String string, ItemInWorldManager itemInWorldManager, NPC npc) { super(minecraftServer, world, string, itemInWorldManager); this.npc = (CitizensNPC) npc; itemInWorldManager.setGameMode(0); - NPCSocket socket = new NPCSocket(); - NetworkManager netMgr = new NPCNetworkManager(socket, "npc mgr", new NetHandler() { + EmptySocket socket = new EmptySocket(); + NetworkManager netMgr = new EmptyNetworkManager(socket, "npc mgr", new NetHandler() { @Override public boolean c() { return false; } }); - netServerHandler = new NPCNetHandler(minecraftServer, netMgr, this); + netServerHandler = new EmptyNetHandler(minecraftServer, netMgr, this); netMgr.a(netServerHandler); try { diff --git a/src/main/java/net/citizensnpcs/npc/network/NPCNetHandler.java b/src/main/java/net/citizensnpcs/npc/network/NPCNetHandler.java deleted file mode 100644 index 125c4a9fb..000000000 --- a/src/main/java/net/citizensnpcs/npc/network/NPCNetHandler.java +++ /dev/null @@ -1,69 +0,0 @@ -package net.citizensnpcs.npc.network; - - -public class NPCNetHandler extends NetServerHandler { - - public NPCNetHandler(MinecraftServer minecraftServer, NetworkManager networkManager, EntityPlayer entityPlayer) { - super(minecraftServer, networkManager, entityPlayer); - } - - @Override - public void a() { - } - - @Override - public void a(Packet102WindowClick packet) { - } - - @Override - public void a(Packet106Transaction packet) { - } - - @Override - public void a(Packet10Flying packet) { - } - - @Override - public void a(Packet130UpdateSign packet) { - } - - @Override - public void a(Packet14BlockDig packet) { - } - - @Override - public void a(Packet15Place packet) { - } - - @Override - public void a(Packet16BlockItemSwitch packet) { - } - - @Override - public void a(Packet255KickDisconnect packet) { - } - - @Override - public void a(Packet28EntityVelocity packet) { - } - - @Override - public void a(Packet3Chat packet) { - } - - @Override - public void a(Packet51MapChunk packet) { - } - - @Override - public void a(String string, Object[] objects) { - } - - @Override - public void sendMessage(String string) { - } - - @Override - public void sendPacket(Packet packet) { - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/network/NPCNetworkManager.java b/src/main/java/net/citizensnpcs/npc/network/NPCNetworkManager.java deleted file mode 100644 index f6646c7da..000000000 --- a/src/main/java/net/citizensnpcs/npc/network/NPCNetworkManager.java +++ /dev/null @@ -1,48 +0,0 @@ -package net.citizensnpcs.npc.network; - -import java.lang.reflect.Field; -import java.net.Socket; - -public class NPCNetworkManager extends NetworkManager { - - public NPCNetworkManager(Socket socket, String string, NetHandler netHandler) { - super(socket, string, netHandler); - - try { - // the field above the 3 synchronized lists - Field f = NetworkManager.class.getDeclaredField("l"); - f.setAccessible(true); - f.set(this, false); - } catch (Exception e) { - } - } - - @Override - public void a() { - } - - @Override - public void a(NetHandler netHandler) { - } - - @Override - public void a(String s, Object... objects) { - } - - @Override - public void b() { - } - - @Override - public void d() { - } - - @Override - public int e() { - return 0; - } - - @Override - public void queue(Packet packet) { - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/npc/network/NPCSocket.java b/src/main/java/net/citizensnpcs/npc/network/NPCSocket.java deleted file mode 100644 index f6409fdc1..000000000 --- a/src/main/java/net/citizensnpcs/npc/network/NPCSocket.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.citizensnpcs.npc.network; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.Socket; - -public class NPCSocket extends Socket { - - @Override - public InputStream getInputStream() { - return new ByteArrayInputStream(new byte[10]); - } - - @Override - public OutputStream getOutputStream() { - return new ByteArrayOutputStream(); - } -} \ No newline at end of file diff --git a/src/main/java/net/citizensnpcs/spout/SpoutPlayer.java b/src/main/java/net/citizensnpcs/spout/SpoutPlayer.java index 893b4e837..a0b76cc9a 100644 --- a/src/main/java/net/citizensnpcs/spout/SpoutPlayer.java +++ b/src/main/java/net/citizensnpcs/spout/SpoutPlayer.java @@ -1,14 +1,14 @@ package net.citizensnpcs.spout; -import org.spout.vanilla.controller.VanillaControllerTypes; -import org.spout.vanilla.controller.living.player.VanillaPlayer; -import org.spout.vanilla.controller.source.HealthChangeReason; - import net.citizensnpcs.api.abstraction.Equipment; import net.citizensnpcs.api.abstraction.ItemStack; import net.citizensnpcs.api.abstraction.MobType; import net.citizensnpcs.api.abstraction.entity.Player; +import org.spout.vanilla.controller.VanillaControllerTypes; +import org.spout.vanilla.controller.living.player.VanillaPlayer; +import org.spout.vanilla.controller.source.HealthChangeReason; + public class SpoutPlayer extends SpoutEntity implements Player { private final VanillaPlayer player; @@ -24,7 +24,7 @@ public class SpoutPlayer extends SpoutEntity implements Player { @Override public MobType getType() { - return SpoutConverter.toMobType(VanillaControllerTypes.PLAYER); + return SpoutConverter.toMobType(VanillaControllerTypes.HUMAN); } @Override @@ -59,13 +59,13 @@ public class SpoutPlayer extends SpoutEntity implements Player { case CARRIED: return SpoutConverter.toItemStack(player.getInventory().getCurrentItem()); case HELMET: - return SpoutConverter.toItemStack(player.getInventory().getHelmet()); + return SpoutConverter.toItemStack(player.getInventory().getArmor().getHelmet().getItem()); case BOOTS: - return SpoutConverter.toItemStack(player.getInventory().getBoots()); + return SpoutConverter.toItemStack(player.getInventory().getArmor().getBoots().getItem()); case CHESTPLATE: - return SpoutConverter.toItemStack(player.getInventory().getChestPlate()); + return SpoutConverter.toItemStack(player.getInventory().getArmor().getChestPlate().getItem()); case LEGGINGS: - return SpoutConverter.toItemStack(player.getInventory().getLeggings()); + return SpoutConverter.toItemStack(player.getInventory().getArmor().getLeggings().getItem()); default: return null; } diff --git a/src/main/java/net/citizensnpcs/spout/SpoutServer.java b/src/main/java/net/citizensnpcs/spout/SpoutServer.java index bc0296f8f..5cbeed52a 100644 --- a/src/main/java/net/citizensnpcs/spout/SpoutServer.java +++ b/src/main/java/net/citizensnpcs/spout/SpoutServer.java @@ -1,12 +1,12 @@ package net.citizensnpcs.spout; +import net.citizensnpcs.api.abstraction.Server; + import org.spout.api.event.Event; import org.spout.api.event.HandlerList; import org.spout.api.event.Listener; import org.spout.api.scheduler.TaskPriority; -import net.citizensnpcs.api.abstraction.Server; - public class SpoutServer implements Server { private final CitizensSpout plugin; @@ -16,32 +16,33 @@ public class SpoutServer implements Server { @Override public void callEvent(Object event) { - plugin.getGame().getEventManager().callEvent((Event) event); + plugin.getEngine().getEventManager().callEvent((Event) event); } @Override public void registerEvents(Object listener) { - plugin.getGame().getEventManager().registerEvents((Listener) listener, plugin); + plugin.getEngine().getEventManager().registerEvents((Listener) listener, plugin); } @Override public void schedule(Runnable task) { - plugin.getGame().getScheduler().scheduleSyncDelayedTask(plugin, task); + plugin.getEngine().getScheduler().scheduleSyncDelayedTask(plugin, task); } @Override public void schedule(Runnable task, long delay) { - plugin.getGame().getScheduler().scheduleSyncDelayedTask(plugin, task, delay, TaskPriority.NORMAL); + plugin.getEngine().getScheduler().scheduleSyncDelayedTask(plugin, task, delay, TaskPriority.NORMAL); } @Override public void scheduleRepeating(Runnable task, long delay) { - plugin.getGame().getScheduler().scheduleSyncRepeatingTask(plugin, task, 0, delay, TaskPriority.NORMAL); + plugin.getEngine().getScheduler().scheduleSyncRepeatingTask(plugin, task, 0, delay, TaskPriority.NORMAL); } @Override public void scheduleRepeating(Runnable task, long initialDelay, long repeatDelay) { - plugin.getGame().getScheduler().scheduleSyncRepeatingTask(plugin, task, initialDelay, repeatDelay, TaskPriority.NORMAL); + plugin.getEngine().getScheduler() + .scheduleSyncRepeatingTask(plugin, task, initialDelay, repeatDelay, TaskPriority.NORMAL); } @Override diff --git a/src/main/java/net/citizensnpcs/trait/Controllable.java b/src/main/java/net/citizensnpcs/trait/Controllable.java index efb529921..d861ac5ac 100644 --- a/src/main/java/net/citizensnpcs/trait/Controllable.java +++ b/src/main/java/net/citizensnpcs/trait/Controllable.java @@ -1,14 +1,17 @@ package net.citizensnpcs.trait; import net.citizensnpcs.api.abstraction.EventHandler; +import net.citizensnpcs.api.abstraction.Listener; import net.citizensnpcs.api.attachment.Attachment; import net.citizensnpcs.api.event.NPCRightClickEvent; import net.citizensnpcs.api.exception.NPCLoadException; import net.citizensnpcs.api.npc.NPC; import net.citizensnpcs.api.util.DataKey; import net.citizensnpcs.npc.CitizensNPC; +import net.minecraft.server.EntityLiving; +import net.minecraft.server.EntityPlayer; -import org.mozilla.javascript.ContextFactory.Listener; +import org.bukkit.craftbukkit.entity.CraftPlayer; //TODO: reduce reliance on CitizensNPC public class Controllable extends Attachment implements Runnable, Listener, Toggleable { diff --git a/src/main/java/net/citizensnpcs/trait/LookClose.java b/src/main/java/net/citizensnpcs/trait/LookClose.java index ad28dc70a..bb28dca16 100644 --- a/src/main/java/net/citizensnpcs/trait/LookClose.java +++ b/src/main/java/net/citizensnpcs/trait/LookClose.java @@ -7,6 +7,7 @@ import java.util.List; import net.citizensnpcs.Settings.Setting; import net.citizensnpcs.api.abstraction.WorldVector; import net.citizensnpcs.api.abstraction.entity.Entity; +import net.citizensnpcs.api.abstraction.entity.LandMob; import net.citizensnpcs.api.abstraction.entity.Player; import net.citizensnpcs.api.attachment.Attachment; import net.citizensnpcs.api.exception.NPCLoadException; @@ -16,10 +17,10 @@ import net.citizensnpcs.api.util.DataKey; public class LookClose extends Attachment implements Runnable, Toggleable { private boolean enabled = Setting.DEFAULT_LOOK_CLOSE.asBoolean(); private Player lookingAt; - private final NPC npc; + private final LandMob entity; public LookClose(NPC npc) { - this.npc = npc; + this.entity = (LandMob) npc.getEntity(); } private void faceEntity(Entity from, Entity at) { @@ -50,23 +51,22 @@ public class LookClose extends Attachment implements Runnable, Toggleable { @Override public void run() { - if (!enabled || npc.getAI().hasDestination()) + if (!enabled || entity.hasDestination()) return; - if (hasInvalidTarget()) { + if (hasInvalidTarget()) findNewTarget(); - } - if (lookingAt != null) { - faceEntity(npc.getEntity(), lookingAt); - } + + if (lookingAt != null) + faceEntity(entity, lookingAt); } private void findNewTarget() { - List nearby = npc.getEntity().getNearbyEntities(2.5, 5, 2.5); + List nearby = entity.getNearbyEntities(2.5, 5, 2.5); Collections.sort(nearby, new Comparator() { @Override public int compare(Entity o1, Entity o2) { - double d1 = o1.getLocation().distanceSquared(npc.getEntity().getLocation()); - double d2 = o2.getLocation().distanceSquared(npc.getEntity().getLocation()); + double d1 = o1.getLocation().distanceSquared(entity.getLocation()); + double d2 = o2.getLocation().distanceSquared(entity.getLocation()); return Double.compare(d1, d2); } }); @@ -82,8 +82,8 @@ public class LookClose extends Attachment implements Runnable, Toggleable { private boolean hasInvalidTarget() { if (lookingAt == null) return true; - if (!lookingAt.isOnline() || lookingAt.getWorld() != npc.getEntity().getWorld() - || lookingAt.getLocation().distanceSquared(npc.getEntity().getLocation()) > 5) { + if (!lookingAt.isOnline() || lookingAt.getWorld() != entity.getWorld() + || lookingAt.getLocation().distanceSquared(entity.getLocation()) > 5) { lookingAt = null; return true; } diff --git a/src/main/java/net/citizensnpcs/trait/Sheared.java b/src/main/java/net/citizensnpcs/trait/Sheared.java index f8d87ef12..6bf5eef98 100644 --- a/src/main/java/net/citizensnpcs/trait/Sheared.java +++ b/src/main/java/net/citizensnpcs/trait/Sheared.java @@ -1,6 +1,5 @@ package net.citizensnpcs.trait; -import net.citizensnpcs.api.CitizensAPI; import net.citizensnpcs.api.abstraction.EventHandler; import net.citizensnpcs.api.abstraction.Listener; import net.citizensnpcs.api.abstraction.entity.Sheep; @@ -8,6 +7,9 @@ import net.citizensnpcs.api.attachment.Attachment; import net.citizensnpcs.api.exception.NPCLoadException; import net.citizensnpcs.api.npc.NPC; import net.citizensnpcs.api.util.DataKey; +import net.citizensnpcs.bukkit.BukkitConverter; + +import org.bukkit.event.player.PlayerShearEntityEvent; public class Sheared extends Attachment implements Toggleable, Listener { private final NPC npc; @@ -29,7 +31,7 @@ public class Sheared extends Attachment implements Toggleable, Listener { @EventHandler public void onPlayerShearEntityEvent(PlayerShearEntityEvent event) { - if (npc.equals(CitizensAPI.getNPCRegistry().getNPC(event.getEntity()))) + if (npc.equals(BukkitConverter.toNPC(event.getEntity()))) event.setCancelled(true); } diff --git a/src/main/java/net/citizensnpcs/trait/waypoint/LinearWaypointProvider.java b/src/main/java/net/citizensnpcs/trait/waypoint/LinearWaypointProvider.java index 5cc8f2cb1..8685b8e30 100644 --- a/src/main/java/net/citizensnpcs/trait/waypoint/LinearWaypointProvider.java +++ b/src/main/java/net/citizensnpcs/trait/waypoint/LinearWaypointProvider.java @@ -6,16 +6,19 @@ import java.util.List; import javax.xml.stream.Location; import net.citizensnpcs.api.abstraction.EventHandler; +import net.citizensnpcs.api.abstraction.WorldVector; import net.citizensnpcs.api.abstraction.entity.Player; import net.citizensnpcs.api.util.DataKey; import net.citizensnpcs.editor.Editor; import net.citizensnpcs.util.Messaging; import net.citizensnpcs.util.StringHelper; +import org.bukkit.Bukkit; +import org.bukkit.event.player.PlayerItemHeldEvent; + import com.google.common.collect.Lists; public class LinearWaypointProvider implements WaypointProvider, Iterable { - private final GenericWaypointCallback callback = new GenericWaypointCallback(this); private final List waypoints = Lists.newArrayList(); @Override @@ -92,11 +95,6 @@ public class LinearWaypointProvider implements WaypointProvider, Iterable iterator() { return waypoints.iterator(); @@ -114,7 +112,6 @@ public class LinearWaypointProvider implements WaypointProvider, Iterable