mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
126 lines
4.2 KiB
Java
126 lines
4.2 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 };
|
|
public static final int[] refineryDimensions = new int[] { 1, 1, 9, 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;
|
|
}
|
|
}
|