package buildcraft.api.properties; import java.util.Map; import com.google.common.collect.Maps; import net.minecraft.util.EnumFacing; import buildcraft.api.core.EnumColor; import buildcraft.api.enums.*; public final class BuildCraftProperties { public static final BuildCraftProperty<EnumFacing> BLOCK_FACING = BuildCraftProperty.create("facing", EnumFacing.Plane.HORIZONTAL.facings()); public static final BuildCraftProperty<EnumFacing> BLOCK_FACING_6 = BuildCraftProperty.create("facing", EnumFacing.class); public static final BuildCraftProperty<EnumColor> BLOCK_COLOR = BuildCraftProperty.create("color", EnumColor.class); public static final BuildCraftProperty<EnumSpring> SPRING_TYPE = BuildCraftProperty.create("type", EnumSpring.class); public static final BuildCraftProperty<EnumEngineType> ENGINE_TYPE = BuildCraftProperty.create("type", EnumEngineType.class); public static final BuildCraftProperty<EnumLaserTableType> LASER_TABLE_TYPE = BuildCraftProperty.create("type", EnumLaserTableType.class); public static final BuildCraftProperty<EnumMachineState> MACHINE_STATE = BuildCraftProperty.create("state", EnumMachineState.class); public static final BuildCraftProperty<EnumEnergyStage> ENERGY_STAGE = BuildCraftProperty.create("stage", EnumEnergyStage.class); public static final BuildCraftProperty<EnumBlueprintType> BLUEPRINT_TYPE = BuildCraftProperty.create("blueprint_type", EnumBlueprintType.class); public static final BuildCraftProperty<EnumDecoratedBlock> DECORATED_BLOCK = BuildCraftProperty.create("decoration_type", EnumDecoratedBlock.class); public static final BuildCraftProperty<Integer> GENERIC_PIPE_DATA = BuildCraftProperty.create("pipe_data", 0, 15); public static final BuildCraftProperty<Integer> LED_POWER = BuildCraftProperty.create("led_power", 0, 3); public static final BuildCraftProperty<Boolean> JOINED_BELOW = BuildCraftProperty.create("joined_below", false); public static final BuildCraftProperty<Boolean> MOVING = BuildCraftProperty.create("moving", false); public static final BuildCraftProperty<Boolean> LED_DONE = BuildCraftProperty.create("led_done", false); public static final BuildCraftProperty<Boolean> CONNECTED_UP = BuildCraftProperty.create("connected_up", false); public static final BuildCraftProperty<Boolean> CONNECTED_DOWN = BuildCraftProperty.create("connected_down", false); public static final BuildCraftProperty<Boolean> CONNECTED_EAST = BuildCraftProperty.create("connected_east", false); public static final BuildCraftProperty<Boolean> CONNECTED_WEST = BuildCraftProperty.create("connected_west", false); public static final BuildCraftProperty<Boolean> CONNECTED_NORTH = BuildCraftProperty.create("connected_north", false); public static final BuildCraftProperty<Boolean> CONNECTED_SOUTH = BuildCraftProperty.create("connected_south", false); public static final Map<EnumFacing, BuildCraftProperty<Boolean>> CONNECTED_MAP; // Unlisted properties // public static final PropertyDouble FLUID_HEIGHT_NE = new PropertyDouble("height_ne", 0, 1); // public static final PropertyDouble FLUID_HEIGHT_NW = new PropertyDouble("height_nw", 0, 1); // public static final PropertyDouble FLUID_HEIGHT_SE = new PropertyDouble("height_se", 0, 1); // public static final PropertyDouble FLUID_HEIGHT_SW = new PropertyDouble("height_sw", 0, 1); // public static final PropertyDouble FLUID_FLOW_DIRECTION = new PropertyDouble("direction", // Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY); public static final BuildCraftProperty<EnumFillerPattern> FILLER_PATTERN = BuildCraftProperty.create("pattern", EnumFillerPattern.class); // Block state setting flags -these are used by World.markAndNotifyBlock and World.setBlockState. These flags can be // added together to pass the additions public static final int UPDATE_NONE = 0; /** This updates the neighbouring blocks that the new block is set. It also updates the comparator output of this * block. */ public static final int UPDATE_NEIGHBOURS = 1; /** This will mark the block for an update next tick, as well as send an update to the client (if this is a server * world). */ public static final int MARK_BLOCK_FOR_UPDATE = 2; /** This will mark the block for an update, even if this is a client world. It is useless to use this if * world.isRemote returns false. */ public static final int UPDATE_EVEN_CLIENT = 4 + MARK_BLOCK_FOR_UPDATE; // 6 // Pre-added flags- pass these as-is to the World.markAndNotifyBlock and World.setBlockState methods. /** This will do what both {@link #UPDATE_NEIGHBOURS} and {@link #MARK_BLOCK_FOR_UPDATE} do. */ public static final int MARK_THIS_AND_NEIGHBOURS = UPDATE_NEIGHBOURS + MARK_BLOCK_FOR_UPDATE; /** This will update everything about this block. */ public static final int UPDATE_ALL = UPDATE_NEIGHBOURS + MARK_BLOCK_FOR_UPDATE + UPDATE_EVEN_CLIENT; static { Map<EnumFacing, BuildCraftProperty<Boolean>> map = Maps.newEnumMap(EnumFacing.class); map.put(EnumFacing.DOWN, CONNECTED_DOWN); map.put(EnumFacing.UP, CONNECTED_UP); map.put(EnumFacing.EAST, CONNECTED_EAST); map.put(EnumFacing.WEST, CONNECTED_WEST); map.put(EnumFacing.NORTH, CONNECTED_NORTH); map.put(EnumFacing.SOUTH, CONNECTED_SOUTH); CONNECTED_MAP = Maps.immutableEnumMap(map); } /** Deactivate constructor */ private BuildCraftProperties() {} }