package com.carpentersblocks.data; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; import com.carpentersblocks.tileentity.TEBase; public class Hatch { /** * 16-bit data components: * * [00000000] [0] [00] [0] [0] [000] * Unused Rigid Dir State Position Type */ public final static byte TYPE_HIDDEN = 0; public final static byte TYPE_WINDOW = 1; public final static byte TYPE_SCREEN = 2; public final static byte TYPE_FRENCH_WINDOW = 3; public final static byte TYPE_PANEL = 4; public final static byte STATE_CLOSED = 0; public final static byte STATE_OPEN = 1; public final static byte POSITION_LOW = 0; public final static byte POSITION_HIGH = 1; public final static byte DIR_Z_NEG = 0; public final static byte DIR_Z_POS = 1; public final static byte DIR_X_NEG = 2; public final static byte DIR_X_POS = 3; public final static byte HINGED_NONRIGID = 0; public final static byte HINGED_RIGID = 1; /** * Returns type. */ public static int getType(TEBase TE) { return TE.getData() & 0x7; } /** * Sets type. */ public static void setType(TEBase TE, int type) { int temp = (TE.getData() & ~0x7) | type; TE.setData(temp); } /** * Returns position (high or low). */ public static int getPos(TEBase TE) { return (TE.getData() & 0x8) >> 3; } /** * Sets position (high or low). */ public static void setPos(TEBase TE, int position) { int temp = (TE.getData() & ~0x8) | (position << 3); TE.setData(temp); } /** * Returns state (open or closed). */ public static int getState(TEBase TE) { return (TE.getData() & 0x10) >> 4; } /** * Sets state (open or closed). */ public static void setState(TEBase TE, int state) { int temp = (TE.getData() & ~0x10) | (state << 4); World world = TE.getWorldObj(); if (!world.isRemote) { world.playAuxSFXAtEntity((EntityPlayer)null, 1003, TE.xCoord, TE.yCoord, TE.zCoord, 0); } TE.setData(temp); } /** * Returns direction. */ public static int getDir(TEBase TE) { return (TE.getData() & 0x60) >> 5; } /** * Sets direction. */ public static void setDir(TEBase TE, int dir) { int temp = (TE.getData() & ~0x60) | (dir << 5); TE.setData(temp); } /** * Returns hatch rigidity (requires redstone for activation). */ public static int getRigidity(TEBase TE) { return (TE.getData() & 0x80) >> 7; } /** * Sets hatch rigidity (requires redstone for activation). */ public static void setRigidity(TEBase TE, int rigid) { int temp = (TE.getData() & ~0x80) | (rigid << 7); TE.setData(temp); } }