Newer
Older
ultramine_bukkit / src / main / java / org / bukkit / craftbukkit / entity / CraftHanging.java
@vlad20012 vlad20012 on 24 Feb 2017 2 KB initial
package org.bukkit.craftbukkit.entity;

import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Hanging;

public class CraftHanging extends CraftEntity implements Hanging
{
	public CraftHanging(CraftServer server, net.minecraft.entity.EntityHanging entity)
	{
		super(server, entity);
	}

	public BlockFace getAttachedFace()
	{
		return getFacing().getOppositeFace();
	}

	public void setFacingDirection(BlockFace face)
	{
		setFacingDirection(face, false);
	}

	public boolean setFacingDirection(BlockFace face, boolean force)
	{
		Block block = getLocation().getBlock().getRelative(getAttachedFace()).getRelative(face.getOppositeFace()).getRelative(getFacing());
		net.minecraft.entity.EntityHanging hanging = getHandle();
		int x = hanging.field_146063_b, y = hanging.field_146064_c, z = hanging.field_146062_d, dir = hanging.hangingDirection;
		hanging.field_146063_b = block.getX();
		hanging.field_146064_c = block.getY();
		hanging.field_146062_d = block.getZ();
		switch(face)
		{
		case SOUTH:
		default:
			getHandle().setDirection(0);
			break;
		case WEST:
			getHandle().setDirection(1);
			break;
		case NORTH:
			getHandle().setDirection(2);
			break;
		case EAST:
			getHandle().setDirection(3);
			break;
		}
		if(!force && !hanging.onValidSurface())
		{
			// Revert since it doesn't fit
			hanging.field_146063_b = x;
			hanging.field_146064_c = y;
			hanging.field_146062_d = z;
			hanging.setDirection(dir);
			return false;
		}
		return true;
	}

	public BlockFace getFacing()
	{
		switch(this.getHandle().hangingDirection)
		{
		case 0:
		default:
			return BlockFace.SOUTH;
		case 1:
			return BlockFace.WEST;
		case 2:
			return BlockFace.NORTH;
		case 3:
			return BlockFace.EAST;
		}
	}

	@Override
	public net.minecraft.entity.EntityHanging getHandle()
	{
		return (net.minecraft.entity.EntityHanging) entity;
	}

	@Override
	public String toString()
	{
		return "CraftHanging";
	}

	public EntityType getType()
	{
		return EntityType.UNKNOWN;
	}
}