blob: 8555f83925b19b255f9a4a1f5eb8152edfafa4a8 [file] [log] [blame] [raw]
package net.glowstone.entity;
import java.util.EnumMap;
import java.util.Map;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.bukkit.Location;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Hanging;
public abstract class GlowHangingEntity extends GlowEntity implements Hanging {
protected HangingFace facing = HangingFace.SOUTH;
public GlowHangingEntity(Location location, BlockFace clickedface) {
super(location);
facing = HangingFace.getByBlockFace(clickedface);
}
@Override
public BlockFace getAttachedFace() {
return facing.getBlockFace().getOppositeFace();
}
@Override
public BlockFace getFacing() {
return facing.getBlockFace();
}
protected int getYaw() {
switch (getFacing()) {
case WEST:
return 64;
case NORTH:
return -128;
case EAST:
return -64;
default:
return 0;
}
}
@Getter
@AllArgsConstructor
public enum HangingFace {
SOUTH(BlockFace.SOUTH),
WEST(BlockFace.WEST),
NORTH(BlockFace.NORTH),
EAST(BlockFace.EAST);
private static final Map<BlockFace, HangingFace> byBlockFace = new EnumMap<>(BlockFace.class);
static {
for (HangingFace hangingFace : values()) {
byBlockFace.put(hangingFace.blockFace, hangingFace);
}
}
private BlockFace blockFace;
public static HangingFace getByBlockFace(BlockFace by) {
return byBlockFace.getOrDefault(by, SOUTH);
}
}
}