Hbm-s-Nuclear-Tech-GIT/com/hbm/handler/MultiblockHandler.java

125 lines
4.1 KiB
Java

package com.hbm.handler;
import com.hbm.interfaces.IDummy;
import com.hbm.tileentity.TileEntityDummy;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
public class MultiblockHandler {
public enum EnumDirection { North, East, South, West };
// 2 5 3 4
// -z +x +z -x
public static int EnumToInt(EnumDirection dir) {
if(dir == EnumDirection.North)
return 2;
if(dir == EnumDirection.East)
return 5;
if(dir == EnumDirection.South)
return 3;
if(dir == EnumDirection.West)
return 4;
return 0;
}
public static EnumDirection IntToEnum(int dir) {
if(dir == 2)
return EnumDirection.North;
if(dir == 5)
return EnumDirection.East;
if(dir == 3)
return EnumDirection.South;
if(dir == 4)
return EnumDirection.West;
return EnumDirection.North;
}
//Approved!
//pos x, neg x, pos y, neg y, pos z, neg z
public static final int[] iGenDimensionNorth = new int[] { 1, 1, 2, 0, 3, 2 };
public static final int[] iGenDimensionEast = new int[] { 2, 3, 2, 0, 1, 1 };
public static final int[] iGenDimensionSouth = new int[] { 1, 1, 2, 0, 2, 3 };
public static final int[] iGenDimensionWest = new int[] { 3, 2, 2, 0, 1, 1 };
public static final int[] centDimension = new int[] { 0, 0, 2, 0, 0, 0 };
public static final int[] cyclDimension = new int[] { 1, 1, 5, 0, 1, 1 };
public static final int[] wellDimension = new int[] { 1, 1, 5, 0, 1, 1 };
public static final int[] flareDimension = new int[] { 1, 1, 9, 0, 1, 1 };
public static final int[] drillDimension = new int[] { 1, 1, 3, 0, 1, 1 };
public static final int[] assemblerDimensionNorth = new int[] { 2, 1, 2, 0, 1, 2 };
public static final int[] assemblerDimensionEast = new int[] { 2, 1, 2, 0, 2, 1 };
public static final int[] assemblerDimensionSouth = new int[] { 1, 2, 2, 0, 2, 1 };
public static final int[] assemblerDimensionWest = new int[] { 1, 2, 2, 0, 1, 2 };
public static final int[] chemplantDimensionNorth = new int[] { 2, 1, 2, 0, 1, 2 };
public static final int[] chemplantDimensionEast = new int[] { 2, 1, 2, 0, 2, 1 };
public static final int[] chemplantDimensionSouth = new int[] { 1, 2, 2, 0, 2, 1 };
public static final int[] chemplantDimensionWest = new int[] { 1, 2, 2, 0, 1, 2 };
public static final int[] fluidTankDimensionNS = new int[] { 1, 1, 2, 0, 2, 2 };
public static final int[] fluidTankDimensionEW = new int[] { 2, 2, 2, 0, 1, 1 };
//Approved!
public static boolean checkSpace(World world, int x, int y, int z, int[] i) {
boolean placable = true;
for(int a = x - i[1]; a <= x + i[0]; a++) {
for(int b = y - i[3]; b <= y + i[2]; b++) {
for(int c = z - i[5]; c <= z + i[4]; c++) {
if(!(a == x && b == y && c == z)) {
Block block = world.getBlock(a, b, c);
if(block != Blocks.air && !block.isReplaceable(world, a, b, c)) {
placable = false;
}
}
}
}
}
return placable;
}
public static boolean fillUp(World world, int x, int y, int z, int[] i, Block block) {
boolean placable = true;
for(int a = x - i[1]; a <= x + i[0]; a++) {
for(int b = y - i[3]; b <= y + i[2]; b++) {
for(int c = z - i[5]; c <= z + i[4]; c++) {
if(!(a == x && b == y && c == z)) {
if(!world.isRemote)
world.setBlock(a, b, c, block);
TileEntity te = world.getTileEntity(a, b, c);
if(te instanceof TileEntityDummy) {
TileEntityDummy dummy = (TileEntityDummy)te;
dummy.targetX = x;
dummy.targetY = y;
dummy.targetZ = z;
}
}
}
}
}
return placable;
}
public static boolean removeAll(World world, int x, int y, int z, int[] i) {
boolean placable = true;
for(int a = x - i[1]; a <= x + i[0]; a++) {
for(int b = y - i[3]; b <= y + i[2]; b++) {
for(int c = z - i[5]; c <= z + i[4]; c++) {
if(!(a == x && b == y && c == z)) {
if(world.getBlock(a, b, c) instanceof IDummy)
if(!world.isRemote) {
world.func_147480_a(a, b, c, false);
}
}
}
}
}
return placable;
}
}