All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bukkit.craftbukkit.entity.CraftHanging Maven / Gradle / Ivy

There is a newer version: 2.4.0
Show newest version
package org.bukkit.craftbukkit.entity;

import net.minecraft.server.EntityHanging;
import net.minecraft.server.EnumDirection;
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, 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) {
    EntityHanging hanging = getHandle();
    EnumDirection dir = hanging.direction;
    switch (face) {
      case SOUTH:
      default:
        getHandle().setDirection(EnumDirection.SOUTH);
        break;
      case WEST:
        getHandle().setDirection(EnumDirection.WEST);
        break;
      case NORTH:
        getHandle().setDirection(EnumDirection.NORTH);
        break;
      case EAST:
        getHandle().setDirection(EnumDirection.EAST);
        break;
    }
    if (!force && !hanging.survives()) {
      // Revert since it doesn't fit
      hanging.setDirection(dir);
      return false;
    }
    return true;
  }

  public BlockFace getFacing() {
    EnumDirection direction = this.getHandle().direction;
    if (direction == null) return BlockFace.SELF;
    switch (direction) {
      case SOUTH:
      default:
        return BlockFace.SOUTH;
      case WEST:
        return BlockFace.WEST;
      case NORTH:
        return BlockFace.NORTH;
      case EAST:
        return BlockFace.EAST;
    }
  }

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

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

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




© 2015 - 2025 Weber Informatics LLC | Privacy Policy