From 9b1a53fcabc00771d1924f60cb52aaeebcd00ead Mon Sep 17 00:00:00 2001 From: fullwall Date: Wed, 12 Sep 2012 21:18:47 +0800 Subject: [PATCH] Workaround for metadata issue --- .../npc/entity/EntityHumanNPC.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/main/java/net/citizensnpcs/npc/entity/EntityHumanNPC.java b/src/main/java/net/citizensnpcs/npc/entity/EntityHumanNPC.java index 47c030307..a7c2adaa4 100644 --- a/src/main/java/net/citizensnpcs/npc/entity/EntityHumanNPC.java +++ b/src/main/java/net/citizensnpcs/npc/entity/EntityHumanNPC.java @@ -2,6 +2,7 @@ package net.citizensnpcs.npc.entity; import java.io.IOException; import java.net.Socket; +import java.util.List; import net.citizensnpcs.api.event.NPCPushEvent; import net.citizensnpcs.api.npc.NPC; @@ -20,6 +21,11 @@ import net.minecraft.server.NetHandler; import net.minecraft.server.NetworkManager; import net.minecraft.server.World; +import org.bukkit.Bukkit; +import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.entity.CraftPlayer; +import org.bukkit.metadata.MetadataValue; +import org.bukkit.plugin.Plugin; import org.bukkit.util.Vector; public class EntityHumanNPC extends EntityPlayer implements NPCHolder { @@ -71,6 +77,35 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder { return npc; } + @Override + public CraftPlayer getBukkitEntity() { + if (npc == null) + return super.getBukkitEntity(); + if (bukkitEntity != null) + return (CraftPlayer) bukkitEntity; + return (CraftPlayer) (bukkitEntity = new CraftPlayer(((CraftServer) Bukkit.getServer()), this) { + @Override + public void setMetadata(String metadataKey, MetadataValue newMetadataValue) { + server.getEntityMetadata().setMetadata(this, metadataKey, newMetadataValue); + } + + @Override + public List getMetadata(String metadataKey) { + return server.getEntityMetadata().getMetadata(this, metadataKey); + } + + @Override + public boolean hasMetadata(String metadataKey) { + return server.getEntityMetadata().hasMetadata(this, metadataKey); + } + + @Override + public void removeMetadata(String metadataKey, Plugin owningPlugin) { + server.getEntityMetadata().removeMetadata(this, metadataKey, owningPlugin); + } + }); + } + @Override public void h_() { super.h_();