package org.bukkit.craftbukkit.entity; import org.bukkit.Art; import org.bukkit.block.BlockFace; import org.bukkit.craftbukkit.CraftArt; import org.bukkit.craftbukkit.CraftServer; import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.entity.EntityType; import org.bukkit.entity.Painting; public class CraftPainting extends CraftHanging implements Painting { public CraftPainting(CraftServer server, net.minecraft.entity.item.EntityPainting entity) { super(server, entity); } public Art getArt() { net.minecraft.entity.item.EntityPainting.EnumArt art = getHandle().art; return CraftArt.NotchToBukkit(art); } public boolean setArt(Art art) { return setArt(art, false); } public boolean setArt(Art art, boolean force) { net.minecraft.entity.item.EntityPainting painting = this.getHandle(); net.minecraft.entity.item.EntityPainting.EnumArt oldArt = painting.art; painting.art = CraftArt.BukkitToNotch(art); painting.setDirection(painting.hangingDirection); if(!force && !painting.onValidSurface()) { // Revert painting since it doesn't fit painting.art = oldArt; painting.setDirection(painting.hangingDirection); return false; } this.update(); return true; } public boolean setFacingDirection(BlockFace face, boolean force) { if(super.setFacingDirection(face, force)) { update(); return true; } return false; } private void update() { net.minecraft.world.WorldServer world = ((CraftWorld) getWorld()).getHandle(); net.minecraft.entity.item.EntityPainting painting = new net.minecraft.entity.item.EntityPainting(world); painting.field_146063_b = getHandle().field_146063_b; painting.field_146064_c = getHandle().field_146064_c; painting.field_146062_d = getHandle().field_146062_d; painting.art = getHandle().art; painting.setDirection(getHandle().hangingDirection); getHandle().setDead(); getHandle().velocityChanged = true; // because this occurs when the painting is broken, so it might be important world.spawnEntityInWorld(painting); this.entity = painting; } @Override public net.minecraft.entity.item.EntityPainting getHandle() { return (net.minecraft.entity.item.EntityPainting) entity; } @Override public String toString() { return "CraftPainting{art=" + getArt() + "}"; } public EntityType getType() { return EntityType.PAINTING; } }