13
0
geforkt von Mirrors/Paper

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.

By: EdGruberman <ed@rjump.com>
Dieser Commit ist enthalten in:
CraftBukkit/Spigot 2013-08-30 00:24:26 -07:00
Ursprung a216c696e3
Commit 7333087027

Datei anzeigen

@ -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);