SPIGOT-4446: Legacy rotation methods don't work for wall mounted skulls

This commit is contained in:
md_5 2018-10-27 08:15:41 +11:00
parent 4a47be6164
commit d6b57bd963

View file

@ -12,6 +12,8 @@ import org.bukkit.SkullType;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.block.Skull;
import org.bukkit.block.data.BlockData;
import org.bukkit.block.data.Directional;
import org.bukkit.block.data.Rotatable;
import org.bukkit.craftbukkit.entity.CraftPlayer;
@ -106,13 +108,18 @@ public class CraftSkull extends CraftBlockEntityState<TileEntitySkull> implement
@Override
public BlockFace getRotation() {
return ((Rotatable) getBlockData()).getRotation();
BlockData blockData = getBlockData();
return (blockData instanceof Rotatable) ? ((Rotatable) blockData).getRotation() : ((Directional) blockData).getFacing();
}
@Override
public void setRotation(BlockFace rotation) {
Rotatable blockData = (Rotatable) getBlockData();
blockData.setRotation(rotation);
BlockData blockData = getBlockData();
if (blockData instanceof Rotatable) {
((Rotatable) blockData).setRotation(rotation);
} else {
((Directional) blockData).setFacing(rotation);
}
setBlockData(blockData);
}