summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEdGruberman <ed@rjump.com>2013-08-30 00:24:26 -0700
committerturt2live <travpc@gmail.com>2014-02-02 00:37:59 -0700
commit068d8a807b7978643fafe8009f86854db8c97606 (patch)
tree2dbb712b0b106952649215a5ab6885a7586e3afc /src
parent3e896afe6b2592de9b4129d7dc2cebe98dbb030c (diff)
downloadcraftbukkit-068d8a807b7978643fafe8009f86854db8c97606.tar
craftbukkit-068d8a807b7978643fafe8009f86854db8c97606.tar.gz
craftbukkit-068d8a807b7978643fafe8009f86854db8c97606.tar.lz
craftbukkit-068d8a807b7978643fafe8009f86854db8c97606.tar.xz
craftbukkit-068d8a807b7978643fafe8009f86854db8c97606.zip
Update clients when ItemFrame direction is set. Fixes BUKKIT-3371
Hanging entities are placed into the entity tracker and updates are sent out to clients for the initial placement. Thereafter data watchers are configured to monitor the item inside the frame. However, if the direction the ItemFrame facing changes the entity tracker will not send out updates. This commit removes and recreates the ItemFrame entity in the same way that was already done for Painting entities. This causes clients to be updated appropriately.
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftItemFrame.java14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItemFrame.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItemFrame.java
index 4cb611fd..5823da3f 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItemFrame.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItemFrame.java
@@ -1,11 +1,14 @@
package org.bukkit.craftbukkit.entity;
import net.minecraft.server.EntityItemFrame;
+import net.minecraft.server.WorldServer;
import org.apache.commons.lang.Validate;
import org.bukkit.Rotation;
+import org.bukkit.block.BlockFace;
import org.bukkit.craftbukkit.CraftServer;
+import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.craftbukkit.inventory.CraftItemStack;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.ItemFrame;
@@ -15,6 +18,17 @@ public class CraftItemFrame extends CraftHanging implements ItemFrame {
super(server, entity);
}
+ public boolean setFacingDirection(BlockFace face, boolean force) {
+ if (!super.setFacingDirection(face, force)) {
+ return false;
+ }
+
+ WorldServer world = ((CraftWorld) this.getWorld()).getHandle();
+ world.getTracker().untrackEntity(this.getHandle());
+ world.getTracker().track(this.getHandle());
+ return true;
+ }
+
public void setItem(org.bukkit.inventory.ItemStack item) {
if (item == null || item.getTypeId() == 0) {
getHandle().getDataWatcher().a(2, 5);