From ae58175abe181d2b560b897d467ba29296af4a89 Mon Sep 17 00:00:00 2001 From: fullwall Date: Sat, 26 Mar 2016 01:45:13 +0800 Subject: [PATCH] Fix PlayerAnimation START_USE_ITEM --- src/main/java/net/citizensnpcs/npc/CitizensNPC.java | 5 +++-- .../net/citizensnpcs/npc/CitizensNPCRegistry.java | 1 + .../java/net/citizensnpcs/util/PlayerAnimation.java | 13 +++++++++++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/citizensnpcs/npc/CitizensNPC.java b/src/main/java/net/citizensnpcs/npc/CitizensNPC.java index ec15a9bbb..50c9602b3 100644 --- a/src/main/java/net/citizensnpcs/npc/CitizensNPC.java +++ b/src/main/java/net/citizensnpcs/npc/CitizensNPC.java @@ -287,8 +287,9 @@ public class CitizensNPC extends AbstractNPC { nameVisibility = OptionStatus.ALWAYS; getEntity().setCustomName(getFullName()); } - if (getEntity() instanceof Player && data().has(NPC.SCOREBOARD_FAKE_TEAM_NAME_METADATA)) { - String teamName = data().get(NPC.SCOREBOARD_FAKE_TEAM_NAME_METADATA); + String teamName = data().get(NPC.SCOREBOARD_FAKE_TEAM_NAME_METADATA, ""); + if (getEntity() instanceof Player + && Bukkit.getScoreboardManager().getMainScoreboard().getTeam(teamName) != null) { Team team = Bukkit.getScoreboardManager().getMainScoreboard().getTeam(teamName); team.setOption(Option.NAME_TAG_VISIBILITY, nameVisibility); if (data().has(NPC.GLOWING_COLOR_METADATA)) { diff --git a/src/main/java/net/citizensnpcs/npc/CitizensNPCRegistry.java b/src/main/java/net/citizensnpcs/npc/CitizensNPCRegistry.java index a8236fb1e..f56b6f9a8 100644 --- a/src/main/java/net/citizensnpcs/npc/CitizensNPCRegistry.java +++ b/src/main/java/net/citizensnpcs/npc/CitizensNPCRegistry.java @@ -45,6 +45,7 @@ public class CitizensNPCRegistry implements NPCRegistry { Preconditions.checkNotNull(name, "name cannot be null"); Preconditions.checkNotNull(type, "type cannot be null"); CitizensNPC npc = getByType(type, uuid, id, name); + if (npc == null) throw new IllegalStateException("Could not create NPC."); npcs.put(npc.getId(), npc); diff --git a/src/main/java/net/citizensnpcs/util/PlayerAnimation.java b/src/main/java/net/citizensnpcs/util/PlayerAnimation.java index 70a5b2994..6f39ecc2f 100644 --- a/src/main/java/net/citizensnpcs/util/PlayerAnimation.java +++ b/src/main/java/net/citizensnpcs/util/PlayerAnimation.java @@ -12,6 +12,7 @@ import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.trait.ArmorStandTrait; import net.minecraft.server.v1_9_R1.BlockPosition; import net.minecraft.server.v1_9_R1.EntityPlayer; +import net.minecraft.server.v1_9_R1.EnumHand; import net.minecraft.server.v1_9_R1.Packet; import net.minecraft.server.v1_9_R1.PacketPlayOutAnimation; import net.minecraft.server.v1_9_R1.PacketPlayOutBed; @@ -112,10 +113,18 @@ public enum PlayerAnimation { radius); } }, - START_USE_ITEM { + START_USE_MAINHAND_ITEM { @Override protected void playAnimation(EntityPlayer player, int radius) { - player.f(true); + player.c(EnumHand.MAIN_HAND); + sendPacketNearby(new PacketPlayOutEntityMetadata(player.getId(), player.getDataWatcher(), true), player, + radius); + } + }, + START_USE_OFFHAND_ITEM { + @Override + protected void playAnimation(EntityPlayer player, int radius) { + player.c(EnumHand.OFF_HAND); sendPacketNearby(new PacketPlayOutEntityMetadata(player.getId(), player.getDataWatcher(), true), player, radius); }