diff --git a/src/main/java/com/hbm/items/tool/ItemRBMKTool.java b/src/main/java/com/hbm/items/tool/ItemRBMKTool.java index c87459e28..f914a68bf 100644 --- a/src/main/java/com/hbm/items/tool/ItemRBMKTool.java +++ b/src/main/java/com/hbm/items/tool/ItemRBMKTool.java @@ -53,10 +53,11 @@ public class ItemRBMKTool extends Item { int[] pos = ((BlockDummyable)b).findCore(world, x, y, z); - TileEntityRBMKConsole mirror = (TileEntityRBMKConsole)world.getTileEntity(pos[0], pos[1], pos[2]); + TileEntityRBMKConsole console = (TileEntityRBMKConsole)world.getTileEntity(pos[0], pos[1], pos[2]); int tx = stack.stackTagCompound.getInteger("posX"); int ty = stack.stackTagCompound.getInteger("posY"); int tz = stack.stackTagCompound.getInteger("posZ"); + console.setTarget(tx, ty, tz); } return true; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKAbsorber.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKAbsorber.java index 73dd62315..e2bdfe27f 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKAbsorber.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKAbsorber.java @@ -2,6 +2,7 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import net.minecraft.init.Blocks; import net.minecraft.util.MathHelper; @@ -42,4 +43,9 @@ public class TileEntityRBMKAbsorber extends TileEntityRBMKBase { super.onMelt(reduce); } + + @Override + public ColumnType getConsoleType() { + return ColumnType.ABSORBER; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java index adf553ab7..1c5d328fb 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java @@ -17,6 +17,7 @@ import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -376,4 +377,10 @@ public abstract class TileEntityRBMKBase extends TileEntity implements INBTPacke } } } + + public abstract ColumnType getConsoleType(); + + public NBTTagCompound getNBTForConsole() { + return null; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBlank.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBlank.java index 369b932a1..6ee65aa94 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBlank.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBlank.java @@ -2,6 +2,7 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import net.minecraft.init.Blocks; import net.minecraft.util.MathHelper; @@ -42,4 +43,9 @@ public class TileEntityRBMKBlank extends TileEntityRBMKBase { super.onMelt(reduce); } + + @Override + public ColumnType getConsoleType() { + return ColumnType.BLANK; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java index a66e2a396..990cb0d7d 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java @@ -11,6 +11,7 @@ import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; import com.hbm.inventory.FluidTank; import com.hbm.lib.Library; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; @@ -242,4 +243,9 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I super.onMelt(reduce); } + + @Override + public ColumnType getConsoleType() { + return ColumnType.BOILER; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java index ad6a3327c..38f9066eb 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java @@ -4,9 +4,17 @@ import com.hbm.tileentity.TileEntityMachineBase; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; public class TileEntityRBMKConsole extends TileEntityMachineBase { + + private int targetX; + private int targetY; + private int targetZ; + + public RBMKColumn[][] columns = new RBMKColumn[15][15]; public TileEntityRBMKConsole() { super(0); @@ -20,6 +28,32 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase { @Override public void updateEntity() { + if(!worldObj.isRemote) { + + if(this.worldObj.getTotalWorldTime() % 10 == 0) { + rescan(); + } + } + } + + private void rescan() { + + for(int i = -7; i <= 7; i++) { + for(int j = -7; j <= 7; j++) { + + TileEntity te = worldObj.getTileEntity(targetX + i, targetY, targetZ + j); + + if(te instanceof TileEntityRBMKBase) { + + TileEntityRBMKBase rbmk = (TileEntityRBMKBase)te; + + columns[i + 7][j + 7] = new RBMKColumn(rbmk.getConsoleType(), rbmk.getNBTForConsole()); + + } else { + columns[i + 7][j + 7] = null; + } + } + } } @Override @@ -32,4 +66,37 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase { public double getMaxRenderDistanceSquared() { return 65536.0D; } + + public void setTarget(int x, int y, int z) { + this.targetX = x; + this.targetY = y; + this.targetZ = z; + this.markDirty(); + } + + public static class RBMKColumn { + + public ColumnType type; + public NBTTagCompound data; + + public RBMKColumn(ColumnType type) { + this.type = type; + } + + public RBMKColumn(ColumnType type, NBTTagCompound data) { + this.type = type; + this.data = data; + } + } + + public static enum ColumnType { + BLANK, + FUEL, + CONTROL, + CONTROL_AUTO, + BOILER, + MODERATOR, + ABSORBER, + REFLECTOR + } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlAuto.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlAuto.java index 8252f5ab9..07f2dbe02 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlAuto.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlAuto.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.interfaces.IControlReceiver; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlManual.RBMKColor; import net.minecraft.entity.player.EntityPlayer; @@ -120,4 +121,9 @@ public class TileEntityRBMKControlAuto extends TileEntityRBMKControl implements QUAD_UP, QUAD_DOWN } + + @Override + public ColumnType getConsoleType() { + return ColumnType.CONTROL_AUTO; + } } \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java index 9dc9971b4..1593ee916 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.interfaces.IControlReceiver; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; @@ -67,4 +68,9 @@ public class TileEntityRBMKControlManual extends TileEntityRBMKControl implement BLUE, PURPLE } + + @Override + public ColumnType getConsoleType() { + return ColumnType.CONTROL; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKModerator.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKModerator.java index c636fed7b..23189ae17 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKModerator.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKModerator.java @@ -2,6 +2,7 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import net.minecraft.init.Blocks; import net.minecraft.util.MathHelper; @@ -41,4 +42,9 @@ public class TileEntityRBMKModerator extends TileEntityRBMKBase { super.onMelt(reduce); } + + @Override + public ColumnType getConsoleType() { + return ColumnType.MODERATOR; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKReflector.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKReflector.java index 8551dae7d..83bb01852 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKReflector.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKReflector.java @@ -2,6 +2,7 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import net.minecraft.init.Blocks; import net.minecraft.util.MathHelper; @@ -40,4 +41,9 @@ public class TileEntityRBMKReflector extends TileEntityRBMKBase { super.onMelt(reduce); } + + @Override + public ColumnType getConsoleType() { + return ColumnType.REFLECTOR; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java index 900024478..99a8cefbb 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; import com.hbm.items.machine.ItemRBMKRod; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; @@ -223,4 +224,9 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM super.onMelt(reduce); } + + @Override + public ColumnType getConsoleType() { + return ColumnType.FUEL; + } } diff --git a/src/main/java/com/hbm/world/dungeon/Bunker.java b/src/main/java/com/hbm/world/dungeon/Bunker.java index 687c5b3f5..c248b5a3a 100644 --- a/src/main/java/com/hbm/world/dungeon/Bunker.java +++ b/src/main/java/com/hbm/world/dungeon/Bunker.java @@ -38,35 +38,6 @@ public class Bunker extends WorldGenerator }; } - public boolean LocationIsValidSpawn(World world, int x, int y, int z) - { - - Block checkBlock = world.getBlock(x, y - 1, z); - Block blockAbove = world.getBlock(x, y , z); - Block blockBelow = world.getBlock(x, y - 2, z); - - for (Block i : GetValidSpawnBlocks()) - { - if (blockAbove != Blocks.air) - { - return false; - } - if (checkBlock == i) - { - return true; - } - else if (checkBlock == Blocks.snow_layer && blockBelow == i) - { - return true; - } - else if (checkBlock.getMaterial() == Material.plants && blockBelow == i) - { - return true; - } - } - return false; - } - @Override public boolean generate(World world, Random rand, int x, int y, int z) { @@ -84,10 +55,6 @@ public class Bunker extends WorldGenerator public boolean generate_r0(World world, Random rand, int x, int y, int z) { y += 1; - if(!LocationIsValidSpawn(world, x, y, z) || !LocationIsValidSpawn(world, x + 3, y, z) || !LocationIsValidSpawn(world, x + 3, y, z + 5) || !LocationIsValidSpawn(world, x, y, z + 5)) - { - return false; - } for(int i = 0; i < 11; i++) {