Newer
Older
ultramine_bukkit / src / main / java / org / bukkit / craftbukkit / entity / CraftPainting.java
@vlad20012 vlad20012 on 24 Feb 2017 2 KB initial
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;
	}
}