From ac055f0b4f413c82cb92afb851184b73dd33129e Mon Sep 17 00:00:00 2001 From: SpaceToad Date: Sat, 5 Apr 2014 17:31:59 +0200 Subject: [PATCH] made progress at resurecting Quarry, for #1561 --- common/buildcraft/BuildCraftFactory.java | 2 - .../buildcraft/api/filler/IFillerPattern.java | 6 +- common/buildcraft/builders/BuildingItem.java | 7 +- .../builders/TileAbstractBuilder.java | 16 +- common/buildcraft/builders/TileBuilder.java | 3 +- common/buildcraft/builders/TileFiller.java | 5 +- .../filler/pattern/FillerPattern.java | 25 +++ .../builders/filler/pattern/PatternBox.java | 2 +- .../builders/filler/pattern/PatternClear.java | 2 +- .../filler/pattern/PatternCylinder.java | 2 +- .../builders/filler/pattern/PatternFill.java | 2 +- .../filler/pattern/PatternFlatten.java | 2 +- .../builders/filler/pattern/PatternFrame.java | 2 +- .../filler/pattern/PatternHorizon.java | 2 +- .../filler/pattern/PatternPyramid.java | 2 +- .../filler/pattern/PatternStairs.java | 2 +- .../builders/urbanism/RenderBoxProvider.java | 8 +- .../core/blueprints/BptBuilderBlueprint.java | 4 +- common/buildcraft/factory/BlockFrame.java | 26 +-- common/buildcraft/factory/BlockQuarry.java | 16 ++ .../factory/FactoryProxyClient.java | 9 +- common/buildcraft/factory/SchematicFrame.java | 24 --- common/buildcraft/factory/TileQuarry.java | 196 +++++------------- 23 files changed, 144 insertions(+), 221 deletions(-) delete mode 100644 common/buildcraft/factory/SchematicFrame.java diff --git a/common/buildcraft/BuildCraftFactory.java b/common/buildcraft/BuildCraftFactory.java index f12af3b8..1e77cffc 100644 --- a/common/buildcraft/BuildCraftFactory.java +++ b/common/buildcraft/BuildCraftFactory.java @@ -42,7 +42,6 @@ import buildcraft.factory.FactoryProxy; import buildcraft.factory.FactoryProxyClient; import buildcraft.factory.GuiHandler; import buildcraft.factory.PumpDimensionList; -import buildcraft.factory.SchematicFrame; import buildcraft.factory.SchematicRefinery; import buildcraft.factory.SchematicTank; import buildcraft.factory.TileAutoWorkbench; @@ -145,7 +144,6 @@ public class BuildCraftFactory extends BuildCraftMod { FactoryProxy.proxy.initializeTileEntities(); - SchematicRegistry.registerSchematicBlock(frameBlock, SchematicFrame.class); SchematicRegistry.registerSchematicBlock(refineryBlock, SchematicRefinery.class); SchematicRegistry.registerSchematicBlock(tankBlock, SchematicTank.class); diff --git a/common/buildcraft/api/filler/IFillerPattern.java b/common/buildcraft/api/filler/IFillerPattern.java index 04b80756..6f783d14 100644 --- a/common/buildcraft/api/filler/IFillerPattern.java +++ b/common/buildcraft/api/filler/IFillerPattern.java @@ -8,8 +8,10 @@ */ package buildcraft.api.filler; +import net.minecraft.block.Block; import net.minecraft.util.IIcon; import buildcraft.core.Box; +import buildcraft.core.blueprints.Blueprint; import buildcraft.core.blueprints.Template; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -23,5 +25,7 @@ public interface IFillerPattern { public String getDisplayName(); - public Template getBlueprint (Box box); + public Template getTemplate (Box box); + + public Blueprint getBlueprint (Box box, Block block); } diff --git a/common/buildcraft/builders/BuildingItem.java b/common/buildcraft/builders/BuildingItem.java index ea79bc7a..36896f48 100755 --- a/common/buildcraft/builders/BuildingItem.java +++ b/common/buildcraft/builders/BuildingItem.java @@ -178,11 +178,8 @@ public class BuildingItem implements IBuilder { Block block = context.world().getBlock((int) destination.x, (int)destination.y, (int)destination.z); int meta = context.world().getBlockMetadata((int) destination.x, (int)destination.y, (int)destination.z); - context.world().playAuxSFXAtEntity( - null, - 2001, - (int) destination.x, - (int) destination.y, + context.world().playAuxSFXAtEntity(null, 2001, + (int) destination.x, (int) destination.y, (int) destination.z, Block.getIdFromBlock(block) + (meta << 12)); diff --git a/common/buildcraft/builders/TileAbstractBuilder.java b/common/buildcraft/builders/TileAbstractBuilder.java index 5f7996fa..f0cd4bc6 100755 --- a/common/buildcraft/builders/TileAbstractBuilder.java +++ b/common/buildcraft/builders/TileAbstractBuilder.java @@ -12,8 +12,10 @@ import java.util.ArrayList; import java.util.LinkedList; import net.minecraft.inventory.IInventory; +import net.minecraft.nbt.NBTTagCompound; import buildcraft.api.core.SafeTimeTracker; import buildcraft.api.mj.MjBattery; +import buildcraft.core.IBoxProvider; import buildcraft.core.LaserData; import buildcraft.core.TileBuildCraft; import buildcraft.core.network.NetworkData; @@ -21,7 +23,7 @@ import buildcraft.core.network.RPC; import buildcraft.core.network.RPCHandler; import buildcraft.core.network.RPCSide; -public abstract class TileAbstractBuilder extends TileBuildCraft implements IInventory { +public abstract class TileAbstractBuilder extends TileBuildCraft implements IInventory, IBoxProvider { public static double BREAK_ENERGY = 10; public static double BUILD_ENERGY = 20; @@ -83,5 +85,17 @@ public abstract class TileAbstractBuilder extends TileBuildCraft implements IInv mjStored -= quantity; } + @Override + public void readFromNBT(NBTTagCompound nbttagcompound) { + super.readFromNBT(nbttagcompound); + mjStored = nbttagcompound.getDouble("mjStored"); + } + + @Override + public void writeToNBT(NBTTagCompound nbttagcompound) { + super.writeToNBT(nbttagcompound); + + nbttagcompound.setDouble("mjStored", mjStored); + } } diff --git a/common/buildcraft/builders/TileBuilder.java b/common/buildcraft/builders/TileBuilder.java index 53bf7d70..b5f12a28 100644 --- a/common/buildcraft/builders/TileBuilder.java +++ b/common/buildcraft/builders/TileBuilder.java @@ -26,7 +26,6 @@ import buildcraft.api.gates.IAction; import buildcraft.core.BlockIndex; import buildcraft.core.Box; import buildcraft.core.Box.Kind; -import buildcraft.core.IBoxProvider; import buildcraft.core.IMachine; import buildcraft.core.LaserData; import buildcraft.core.blueprints.Blueprint; @@ -41,7 +40,7 @@ import buildcraft.core.network.RPCHandler; import buildcraft.core.network.RPCSide; import buildcraft.core.utils.Utils; -public class TileBuilder extends TileAbstractBuilder implements IMachine, IBoxProvider { +public class TileBuilder extends TileAbstractBuilder implements IMachine { private static int POWER_ACTIVATION = 50; diff --git a/common/buildcraft/builders/TileFiller.java b/common/buildcraft/builders/TileFiller.java index 05d72682..513da859 100644 --- a/common/buildcraft/builders/TileFiller.java +++ b/common/buildcraft/builders/TileFiller.java @@ -26,7 +26,6 @@ import buildcraft.builders.filler.pattern.PatternFill; import buildcraft.builders.triggers.ActionFiller; import buildcraft.core.Box; import buildcraft.core.Box.Kind; -import buildcraft.core.IBoxProvider; import buildcraft.core.IMachine; import buildcraft.core.blueprints.BptBuilderTemplate; import buildcraft.core.blueprints.BptContext; @@ -40,7 +39,7 @@ import buildcraft.core.triggers.ActionMachineControl; import buildcraft.core.triggers.ActionMachineControl.Mode; import buildcraft.core.utils.Utils; -public class TileFiller extends TileAbstractBuilder implements IMachine, IActionReceptor, IBoxProvider { +public class TileFiller extends TileAbstractBuilder implements IMachine, IActionReceptor { public IFillerPattern currentPattern = PatternFill.INSTANCE; @@ -105,7 +104,7 @@ public class TileFiller extends TileAbstractBuilder implements IMachine, IAction if (currentPattern != null && currentTemplate == null) { currentTemplate = new BptBuilderTemplate( - currentPattern.getBlueprint(box), getWorld(), box.xMin, + currentPattern.getTemplate(box), getWorld(), box.xMin, box.yMin, box.zMin); context = currentTemplate.getContext(); } diff --git a/common/buildcraft/builders/filler/pattern/FillerPattern.java b/common/buildcraft/builders/filler/pattern/FillerPattern.java index cbefa1fa..538cef5f 100644 --- a/common/buildcraft/builders/filler/pattern/FillerPattern.java +++ b/common/buildcraft/builders/filler/pattern/FillerPattern.java @@ -11,10 +11,14 @@ package buildcraft.builders.filler.pattern; import java.util.Map; import java.util.TreeMap; +import net.minecraft.block.Block; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.util.IIcon; import buildcraft.api.blueprints.SchematicMask; +import buildcraft.api.blueprints.SchematicRegistry; import buildcraft.api.filler.IFillerPattern; +import buildcraft.core.Box; +import buildcraft.core.blueprints.Blueprint; import buildcraft.core.blueprints.Template; import buildcraft.core.utils.StringUtils; @@ -97,4 +101,25 @@ public abstract class FillerPattern implements IFillerPattern { } } } + + @Override + public Blueprint getBlueprint (Box box, Block block) { + Blueprint result = new Blueprint (box.sizeX(), box.sizeY(), box.sizeZ()); + + Template tmpl = getTemplate(box); + + for (int x = 0; x < box.sizeX(); ++x) { + for (int y = 0; y < box.sizeY(); ++y) { + for (int z = 0; z < box.sizeZ(); ++z) { + if (tmpl.contents[x][y][z] != null) { + result.contents[x][y][z] = SchematicRegistry + .newSchematicBlock(block); + } + + } + } + } + + return result; + } } diff --git a/common/buildcraft/builders/filler/pattern/PatternBox.java b/common/buildcraft/builders/filler/pattern/PatternBox.java index 887a1734..b4d4d1a3 100644 --- a/common/buildcraft/builders/filler/pattern/PatternBox.java +++ b/common/buildcraft/builders/filler/pattern/PatternBox.java @@ -19,7 +19,7 @@ public class PatternBox extends FillerPattern { } @Override - public Template getBlueprint(Box box) { + public Template getTemplate(Box box) { Template result = new Template (box.sizeX(), box.sizeY(), box.sizeZ()); int xMin = 0; diff --git a/common/buildcraft/builders/filler/pattern/PatternClear.java b/common/buildcraft/builders/filler/pattern/PatternClear.java index 704d7d74..57fe27da 100644 --- a/common/buildcraft/builders/filler/pattern/PatternClear.java +++ b/common/buildcraft/builders/filler/pattern/PatternClear.java @@ -18,7 +18,7 @@ public class PatternClear extends FillerPattern { } @Override - public Template getBlueprint (Box box) { + public Template getTemplate (Box box) { int xMin = (int) box.pMin().x; int yMin = (int) box.pMin().y; int zMin = (int) box.pMin().z; diff --git a/common/buildcraft/builders/filler/pattern/PatternCylinder.java b/common/buildcraft/builders/filler/pattern/PatternCylinder.java index d58d544b..c856ac13 100644 --- a/common/buildcraft/builders/filler/pattern/PatternCylinder.java +++ b/common/buildcraft/builders/filler/pattern/PatternCylinder.java @@ -19,7 +19,7 @@ public class PatternCylinder extends FillerPattern { @Override - public Template getBlueprint(Box box) { + public Template getTemplate(Box box) { Template result = new Template (box.sizeX(), box.sizeY(), box.sizeZ()); int xMin = 0; diff --git a/common/buildcraft/builders/filler/pattern/PatternFill.java b/common/buildcraft/builders/filler/pattern/PatternFill.java index d7f2928f..4bf73b77 100644 --- a/common/buildcraft/builders/filler/pattern/PatternFill.java +++ b/common/buildcraft/builders/filler/pattern/PatternFill.java @@ -20,7 +20,7 @@ public class PatternFill extends FillerPattern { } @Override - public Template getBlueprint (Box box) { + public Template getTemplate (Box box) { Template bpt = new Template(box.sizeX(), box.sizeY(), box.sizeZ()); fill (0, 0, 0, box.sizeX() - 1, box.sizeY() - 1, box.sizeZ() - 1, bpt); diff --git a/common/buildcraft/builders/filler/pattern/PatternFlatten.java b/common/buildcraft/builders/filler/pattern/PatternFlatten.java index f482cdec..e7cd5ccf 100644 --- a/common/buildcraft/builders/filler/pattern/PatternFlatten.java +++ b/common/buildcraft/builders/filler/pattern/PatternFlatten.java @@ -19,7 +19,7 @@ public class PatternFlatten extends FillerPattern { } @Override - public Template getBlueprint (Box box) { + public Template getTemplate (Box box) { int xMin = (int) box.pMin().x; int yMin = 1; int zMin = (int) box.pMin().z; diff --git a/common/buildcraft/builders/filler/pattern/PatternFrame.java b/common/buildcraft/builders/filler/pattern/PatternFrame.java index 26bb72fb..07b7b868 100755 --- a/common/buildcraft/builders/filler/pattern/PatternFrame.java +++ b/common/buildcraft/builders/filler/pattern/PatternFrame.java @@ -20,7 +20,7 @@ public class PatternFrame extends FillerPattern { } @Override - public Template getBlueprint(Box box) { + public Template getTemplate(Box box) { Template template = new Template (box.sizeX(), box.sizeY(), box.sizeZ()); int xMin = 0; diff --git a/common/buildcraft/builders/filler/pattern/PatternHorizon.java b/common/buildcraft/builders/filler/pattern/PatternHorizon.java index 1329d845..c11d52a7 100644 --- a/common/buildcraft/builders/filler/pattern/PatternHorizon.java +++ b/common/buildcraft/builders/filler/pattern/PatternHorizon.java @@ -18,7 +18,7 @@ public class PatternHorizon extends FillerPattern { } @Override - public Template getBlueprint(Box box) { + public Template getTemplate(Box box) { /* int xMin = 0; int yMin = 0; diff --git a/common/buildcraft/builders/filler/pattern/PatternPyramid.java b/common/buildcraft/builders/filler/pattern/PatternPyramid.java index ad739f39..e26b06e5 100644 --- a/common/buildcraft/builders/filler/pattern/PatternPyramid.java +++ b/common/buildcraft/builders/filler/pattern/PatternPyramid.java @@ -22,7 +22,7 @@ public class PatternPyramid extends FillerPattern { boolean param1 = true; @Override - public Template getBlueprint (Box box) { + public Template getTemplate (Box box) { int xMin = (int) box.pMin().x; int yMin = (int) box.pMin().y; int zMin = (int) box.pMin().z; diff --git a/common/buildcraft/builders/filler/pattern/PatternStairs.java b/common/buildcraft/builders/filler/pattern/PatternStairs.java index 3d1db7c2..e2f19069 100644 --- a/common/buildcraft/builders/filler/pattern/PatternStairs.java +++ b/common/buildcraft/builders/filler/pattern/PatternStairs.java @@ -25,7 +25,7 @@ public class PatternStairs extends FillerPattern { int param4 = 0; @Override - public Template getBlueprint(Box box) { + public Template getTemplate(Box box) { int xMin = 0; int yMin = 0; int zMin = 0; diff --git a/common/buildcraft/builders/urbanism/RenderBoxProvider.java b/common/buildcraft/builders/urbanism/RenderBoxProvider.java index 02e58a11..1264f04b 100755 --- a/common/buildcraft/builders/urbanism/RenderBoxProvider.java +++ b/common/buildcraft/builders/urbanism/RenderBoxProvider.java @@ -46,16 +46,20 @@ public class RenderBoxProvider extends TileEntitySpecialRenderer { if (tileentity instanceof IBoxesProvider) { for (Box b : ((IBoxesProvider) tileentity).getBoxes()) { - RenderBox.doRender( + if (b.isVisible) { + RenderBox.doRender( TileEntityRendererDispatcher.instance.field_147553_e, getTexture(b.kind), b); + } } } else if (tileentity instanceof IBoxProvider) { Box b = ((IBoxProvider) tileentity).getBox(); - RenderBox.doRender( + if (b.isVisible) { + RenderBox.doRender( TileEntityRendererDispatcher.instance.field_147553_e, getTexture(b.kind), b); + } } GL11.glPopMatrix(); diff --git a/common/buildcraft/core/blueprints/BptBuilderBlueprint.java b/common/buildcraft/core/blueprints/BptBuilderBlueprint.java index d85998d5..f35dc157 100644 --- a/common/buildcraft/core/blueprints/BptBuilderBlueprint.java +++ b/common/buildcraft/core/blueprints/BptBuilderBlueprint.java @@ -183,7 +183,9 @@ public class BptBuilderBlueprint extends BptBuilderBase { } } } else { - if (checkRequirements(builder, (SchematicBlock) slot.schematic)) { + if (BlockUtil.isSoftBlock(world, slot.x, slot.y, slot.z) + && checkRequirements(builder, + (SchematicBlock) slot.schematic)) { useRequirements(builder, slot); iterator.remove(); diff --git a/common/buildcraft/factory/BlockFrame.java b/common/buildcraft/factory/BlockFrame.java index 90503215..ed126137 100644 --- a/common/buildcraft/factory/BlockFrame.java +++ b/common/buildcraft/factory/BlockFrame.java @@ -8,13 +8,6 @@ */ package buildcraft.factory; -import buildcraft.BuildCraftCore; -import buildcraft.core.CoreConstants; -import buildcraft.core.IFramePipeConnection; -import buildcraft.core.utils.Utils; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - import java.util.List; import java.util.Random; @@ -30,24 +23,18 @@ import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import buildcraft.BuildCraftCore; +import buildcraft.core.CoreConstants; +import buildcraft.core.IFramePipeConnection; +import buildcraft.core.utils.Utils; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; public class BlockFrame extends Block implements IFramePipeConnection { public BlockFrame() { super(Material.glass); setHardness(0.5F); - setTickRandomly(true); - } - - @Override - public void updateTick(World world, int i, int j, int k, Random random) { - if (world.isRemote) - return; - - int meta = world.getBlockMetadata(i, j, k); - if (meta == 1 && random.nextInt(10) > 5) { - world.setBlockToAir(i, j, k); - } } @Override @@ -101,6 +88,7 @@ public class BlockFrame extends Block implements IFramePipeConnection { return AxisAlignedBB.getBoundingBox((double) i + xMin, (double) j + yMin, (double) k + zMin, (double) i + xMax, (double) j + yMax, (double) k + zMax); } + @Override @SuppressWarnings({ "all" }) // @Override (client only) public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int i, int j, int k) { diff --git a/common/buildcraft/factory/BlockQuarry.java b/common/buildcraft/factory/BlockQuarry.java index 2b9e2b30..2357d127 100644 --- a/common/buildcraft/factory/BlockQuarry.java +++ b/common/buildcraft/factory/BlockQuarry.java @@ -19,6 +19,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import buildcraft.BuildCraftFactory; @@ -208,4 +209,19 @@ public class BlockQuarry extends BlockBuildCraft { textureTop = par1IconRegister.registerIcon("buildcraft:quarry_top"); textureFront = par1IconRegister.registerIcon("buildcraft:quarry_front"); } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public boolean isSideSolid(IBlockAccess world, int x, int y, int z, ForgeDirection side) { + return false; + } + + @Override + public int getLightValue(IBlockAccess world, int x, int y, int z) { + return 1; + } } diff --git a/common/buildcraft/factory/FactoryProxyClient.java b/common/buildcraft/factory/FactoryProxyClient.java index 19e54624..771a6980 100644 --- a/common/buildcraft/factory/FactoryProxyClient.java +++ b/common/buildcraft/factory/FactoryProxyClient.java @@ -8,7 +8,12 @@ */ package buildcraft.factory; +import java.lang.reflect.Method; + +import net.minecraft.util.IIcon; +import net.minecraft.world.World; import buildcraft.BuildCraftFactory; +import buildcraft.builders.RenderBuilder; import buildcraft.core.EntityBlock; import buildcraft.core.render.RenderVoid; import buildcraft.core.render.RenderingEntityBlocks; @@ -20,9 +25,6 @@ import buildcraft.factory.render.RenderRefinery; import buildcraft.factory.render.RenderTank; import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.client.registry.RenderingRegistry; -import java.lang.reflect.Method; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; public class FactoryProxyClient extends FactoryProxy { @@ -48,6 +50,7 @@ public class FactoryProxyClient extends FactoryProxy { RenderingEntityBlocks.blockByEntityRenders.put(new EntityRenderIndex(BuildCraftFactory.hopperBlock, 0), new RenderHopper()); } + ClientRegistry.bindTileEntitySpecialRenderer(TileQuarry.class, new RenderBuilder()); } @Override diff --git a/common/buildcraft/factory/SchematicFrame.java b/common/buildcraft/factory/SchematicFrame.java deleted file mode 100644 index 65c7032f..00000000 --- a/common/buildcraft/factory/SchematicFrame.java +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Copyright (c) 2011-2014, SpaceToad and the BuildCraft Team - * http://www.mod-buildcraft.com - * - * BuildCraft is distributed under the terms of the Minecraft Mod Public - * License 1.0, or MMPL. Please check the contents of the license located in - * http://www.mod-buildcraft.com/MMPL-1.0.txt - */ -package buildcraft.factory; - -import java.util.LinkedList; - -import net.minecraft.item.ItemStack; -import buildcraft.api.blueprints.SchematicBlock; -import buildcraft.api.blueprints.IBuilderContext; - -public class SchematicFrame extends SchematicBlock { - - @Override - public void addRequirements(IBuilderContext context, LinkedList requirements) { - - } - -} diff --git a/common/buildcraft/factory/TileQuarry.java b/common/buildcraft/factory/TileQuarry.java index 674056d1..7881c045 100644 --- a/common/buildcraft/factory/TileQuarry.java +++ b/common/buildcraft/factory/TileQuarry.java @@ -8,7 +8,6 @@ */ package buildcraft.factory; -import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Set; @@ -27,33 +26,28 @@ import net.minecraftforge.common.ForgeChunkManager.Type; import net.minecraftforge.common.util.ForgeDirection; import buildcraft.BuildCraftCore; import buildcraft.BuildCraftFactory; -import buildcraft.api.blueprints.SchematicRegistry; import buildcraft.api.core.IAreaProvider; +import buildcraft.api.filler.FillerManager; import buildcraft.api.gates.IAction; -import buildcraft.api.power.IPowerReceptor; -import buildcraft.api.power.PowerHandler; -import buildcraft.api.power.PowerHandler.PowerReceiver; -import buildcraft.builders.BuildingItem; import buildcraft.builders.TileAbstractBuilder; import buildcraft.core.Box; +import buildcraft.core.Box.Kind; import buildcraft.core.CoreConstants; import buildcraft.core.DefaultAreaProvider; import buildcraft.core.IMachine; -import buildcraft.core.LaserData; import buildcraft.core.blueprints.Blueprint; +import buildcraft.core.blueprints.BptBuilderBase; import buildcraft.core.blueprints.BptBuilderBlueprint; -import buildcraft.core.blueprints.BuildingSlot; import buildcraft.core.network.NetworkData; import buildcraft.core.network.PacketUpdate; import buildcraft.core.proxy.CoreProxy; -import buildcraft.core.robots.EntityRobotBuilder; import buildcraft.core.utils.BlockUtil; import buildcraft.core.utils.Utils; import com.google.common.collect.Lists; import com.google.common.collect.Sets; -public class TileQuarry extends TileAbstractBuilder implements IMachine, IPowerReceptor { +public class TileQuarry extends TileAbstractBuilder implements IMachine { public @NetworkData Box box = new Box(); @@ -65,30 +59,17 @@ public class TileQuarry extends TileAbstractBuilder implements IMachine, IPowerR double headPosX, headPosY, headPosZ; public @NetworkData double speed = 0.03; - public @NetworkData - boolean builderDone = false; - public EntityRobotBuilder builder; - private BptBuilderBlueprint blueprintBuilder; + + private BptBuilderBase builder; public EntityMechanicalArm arm; - public PowerHandler powerHandler; boolean isDigging = false; - public static final int MAX_ENERGY = 15000; - private static final PowerHandler.PerditionCalculator PERDITION = new PowerHandler.PerditionCalculator(2 * BuildCraftFactory.miningMultiplier); - public TileQuarry() { - powerHandler = new PowerHandler(this, PowerHandler.Type.MACHINE); - initPowerProvider(); - } - - private void initPowerProvider() { - float mj = 25 * BuildCraftFactory.miningMultiplier; - powerHandler.configure(50 * BuildCraftFactory.miningMultiplier, 100 * BuildCraftFactory.miningMultiplier, mj, MAX_ENERGY * BuildCraftFactory.miningMultiplier); - powerHandler.setPerdition(PERDITION); + public TileQuarry () { + box.kind = Kind.STRIPES; } public void createUtilsIfNeeded() { - if (blueprintBuilder == null) { - + if (builder == null) { if (!box.isInitialized()) { setBoundaries(loadDefaultBoundaries); } @@ -96,7 +77,7 @@ public class TileQuarry extends TileAbstractBuilder implements IMachine, IPowerR initializeBlueprintBuilder(); } - if (builderDone) { + if (builder != null && builder.isDone(this)) { box.isVisible = false; if (arm == null) { @@ -126,9 +107,8 @@ public class TileQuarry extends TileAbstractBuilder implements IMachine, IPowerR public EntityPlayer placedBy; private void createArm() { - - worldObj.spawnEntityInWorld(new EntityMechanicalArm(worldObj, box.xMin + CoreConstants.PIPE_MAX_POS, yCoord + blueprintBuilder.blueprint.sizeY - 1 - + CoreConstants.PIPE_MIN_POS, box.zMin + CoreConstants.PIPE_MAX_POS, blueprintBuilder.blueprint.sizeX - 2 + CoreConstants.PIPE_MIN_POS * 2, blueprintBuilder.blueprint.sizeZ + worldObj.spawnEntityInWorld(new EntityMechanicalArm(worldObj, box.xMin + CoreConstants.PIPE_MAX_POS, yCoord + builder.blueprint.sizeY - 1 + + CoreConstants.PIPE_MIN_POS, box.zMin + CoreConstants.PIPE_MAX_POS, builder.blueprint.sizeX - 2 + CoreConstants.PIPE_MIN_POS * 2, builder.blueprint.sizeZ - 2 + CoreConstants.PIPE_MIN_POS * 2, this)); } @@ -141,25 +121,26 @@ public class TileQuarry extends TileAbstractBuilder implements IMachine, IPowerR public void updateEntity() { super.updateEntity(); - if (!isAlive && !worldObj.isRemote) { + if (worldObj.isRemote) { return; } - if (isAlive && worldObj.isRemote) { + if (!isAlive) { return; } if (inProcess) { - double energyToUse = 2 + powerHandler.getEnergyStored() / 500; + double energyToUse = 2 + mjStored / 500; - double energy = powerHandler.useEnergy(energyToUse, energyToUse, true); - - if (energy > 0) { - moveHead(0.1 + energy / 200F); + if (mjStored > energyToUse) { + mjStored -= energyToUse; + moveHead(0.1 + energyToUse / 200F); } } if (!worldObj.isRemote && inProcess) { + // TODO: Don't send an update at each tick!!!! At most once every + // 20 ~ 25 ticks sendNetworkUpdate(); } @@ -169,66 +150,22 @@ public class TileQuarry extends TileAbstractBuilder implements IMachine, IPowerR createUtilsIfNeeded(); - if (blueprintBuilder != null) { - //builderDone = !blueprintIterator.hasNext(); - //if (!builderDone) { - // buildFrame(); - // return; - //} else if (builder != null && builder.done()) { - // killBuilder(); - //} + if (builder != null) { + if (!builder.isDone(this)) { + builder.buildNextSlot(worldObj, this, xCoord, yCoord, zCoord); + } else { + dig(); + } } - - if (builder == null) { - dig(); - } - } - - private void killBuilder() { - builder.setDead(); - builder = null; - } - - @Override - public void doWork(PowerHandler workProvider) { - } - - protected void buildFrame() { - BuildingSlot schematic = blueprintBuilder.getNextBlock(getWorld(), this); - - if (schematic == null) { - return; - } - - float mj = 25 * BuildCraftFactory.miningMultiplier; - powerHandler.configure(50 * BuildCraftFactory.miningMultiplier, 100 * BuildCraftFactory.miningMultiplier, mj, MAX_ENERGY * BuildCraftFactory.miningMultiplier); - - if (powerHandler.useEnergy(mj, mj, true) != mj) { - return; - } - - //if (builder == null) { - // builder = new EntityRobotBuilder(worldObj, box); - // worldObj.spawnEntityInWorld(builder); - //} - - //if (builder.readyToBuild()) { - // while (blueprintIterator.hasNext()) { - // if (builder.scheduleContruction(blueprintIterator.next())) { - // powerHandler.useEnergy(0, 25, true); - // break; - // } - // } - //} } protected void dig() { - powerHandler.configure(100 * BuildCraftFactory.miningMultiplier, 500 * BuildCraftFactory.miningMultiplier, BuildCraftFactory.MINING_MJ_COST_PER_BLOCK, MAX_ENERGY * BuildCraftFactory.miningMultiplier); - float mj = BuildCraftFactory.MINING_MJ_COST_PER_BLOCK * BuildCraftFactory.miningMultiplier; - if (powerHandler.useEnergy(mj, mj, true) != mj) { + if (mjStored < mj) { return; + } else { + mjStored -= mj; } if (!findTarget(true)) { @@ -300,18 +237,18 @@ public class TileQuarry extends TileAbstractBuilder implements IMachine, IPowerR private void createColumnVisitList() { visitList.clear(); - Integer[][] columnHeights = new Integer[blueprintBuilder.blueprint.sizeX - 2][blueprintBuilder.blueprint.sizeZ - 2]; - boolean[][] blockedColumns = new boolean[blueprintBuilder.blueprint.sizeX - 2][blueprintBuilder.blueprint.sizeZ - 2]; + Integer[][] columnHeights = new Integer[builder.blueprint.sizeX - 2][builder.blueprint.sizeZ - 2]; + boolean[][] blockedColumns = new boolean[builder.blueprint.sizeX - 2][builder.blueprint.sizeZ - 2]; for (int searchY = yCoord + 3; searchY >= 0; --searchY) { int startX, endX, incX; if (searchY % 2 == 0) { startX = 0; - endX = blueprintBuilder.blueprint.sizeX - 2; + endX = builder.blueprint.sizeX - 2; incX = 1; } else { - startX = blueprintBuilder.blueprint.sizeX - 3; + startX = builder.blueprint.sizeX - 3; endX = -1; incX = -1; } @@ -321,10 +258,10 @@ public class TileQuarry extends TileAbstractBuilder implements IMachine, IPowerR if (searchX % 2 == searchY % 2) { startZ = 0; - endZ = blueprintBuilder.blueprint.sizeZ - 2; + endZ = builder.blueprint.sizeZ - 2; incZ = 1; } else { - startZ = blueprintBuilder.blueprint.sizeZ - 3; + startZ = builder.blueprint.sizeZ - 3; endZ = -1; incZ = -1; } @@ -356,7 +293,7 @@ public class TileQuarry extends TileAbstractBuilder implements IMachine, IPowerR // Stop at two planes - generally any obstructions will have been found and will force a recompute prior to this - if (visitList.size() > blueprintBuilder.blueprint.sizeZ * blueprintBuilder.blueprint.sizeX * 2) { + if (visitList.size() > builder.blueprint.sizeZ * builder.blueprint.sizeX * 2) { return; } } @@ -369,8 +306,7 @@ public class TileQuarry extends TileAbstractBuilder implements IMachine, IPowerR public void readFromNBT(NBTTagCompound nbttagcompound) { super.readFromNBT(nbttagcompound); - powerHandler.readFromNBT(nbttagcompound); - initPowerProvider(); + if (nbttagcompound.hasKey("box")) { box.initialize(nbttagcompound.getCompoundTag("box")); @@ -407,8 +343,6 @@ public class TileQuarry extends TileAbstractBuilder implements IMachine, IPowerR public void writeToNBT(NBTTagCompound nbttagcompound) { super.writeToNBT(nbttagcompound); - powerHandler.writeToNBT(nbttagcompound); - nbttagcompound.setInteger("targetX", targetX); nbttagcompound.setInteger("targetY", targetY); nbttagcompound.setInteger("targetZ", targetZ); @@ -534,10 +468,6 @@ public class TileQuarry extends TileAbstractBuilder implements IMachine, IPowerR arm.setDead(); } - if (builder != null) { - builder.setDead(); - } - arm = null; } @@ -639,28 +569,10 @@ public class TileQuarry extends TileAbstractBuilder implements IMachine, IPowerR } private void initializeBlueprintBuilder() { - Blueprint blueprint = new Blueprint (box.sizeX(), box.sizeY(), box.sizeZ()); + Blueprint bpt = FillerManager.registry.getPattern("buildcraft:frame") + .getBlueprint(box, BuildCraftFactory.frameBlock); - for (int it = 0; it < 2; it++) { - for (int i = 0; i < blueprint.sizeX; ++i) { - blueprint.contents [i][it * (box.sizeY() - 1)][0] = SchematicRegistry.newSchematicBlock(BuildCraftFactory.frameBlock); - blueprint.contents [i][it * (box.sizeY() - 1)][blueprint.sizeZ - 1] = SchematicRegistry.newSchematicBlock(BuildCraftFactory.frameBlock); - } - - for (int k = 0; k < blueprint.sizeZ; ++k) { - blueprint.contents [0][it * (box.sizeY() - 1)][k] = SchematicRegistry.newSchematicBlock(BuildCraftFactory.frameBlock); - blueprint.contents [blueprint.sizeX - 1][it * (box.sizeY() - 1)][k] = SchematicRegistry.newSchematicBlock(BuildCraftFactory.frameBlock); - } - } - - for (int h = 1; h < box.sizeY(); ++h) { - blueprint.contents [0][h][0] = SchematicRegistry.newSchematicBlock(BuildCraftFactory.frameBlock); - blueprint.contents [0][h][blueprint.sizeZ - 1] = SchematicRegistry.newSchematicBlock(BuildCraftFactory.frameBlock); - blueprint.contents [blueprint.sizeX - 1][h][0] = SchematicRegistry.newSchematicBlock(BuildCraftFactory.frameBlock); - blueprint.contents [blueprint.sizeX - 1][h][blueprint.sizeZ - 1] = SchematicRegistry.newSchematicBlock(BuildCraftFactory.frameBlock); - } - - blueprintBuilder = new BptBuilderBlueprint(blueprint, worldObj, box.xMin, yCoord, box.zMin); //ForgeDirection.NORTH + builder = new BptBuilderBlueprint(bpt, worldObj, box.xMin, yCoord, box.zMin); } @Override @@ -693,16 +605,10 @@ public class TileQuarry extends TileAbstractBuilder implements IMachine, IPowerR } public void reinitalize() { - builderDone = false; initializeBlueprintBuilder(); isDigging = true; } - @Override - public PowerReceiver getPowerReceiver(ForgeDirection side) { - return powerHandler.getPowerReceiver(); - } - @Override public boolean manageFluids() { return false; @@ -715,17 +621,17 @@ public class TileQuarry extends TileAbstractBuilder implements IMachine, IPowerR @Override public int getSizeInventory() { - return 0; + return 1; } @Override public ItemStack getStackInSlot(int i) { - return null; + return new ItemStack(BuildCraftFactory.frameBlock); } @Override public ItemStack decrStackSize(int i, int j) { - return null; + return new ItemStack(BuildCraftFactory.frameBlock, j); } @Override @@ -882,20 +788,12 @@ public class TileQuarry extends TileAbstractBuilder implements IMachine, IPowerR } @Override - public void addBuildingItem(BuildingItem item) { - // TODO Auto-generated method stub - + public AxisAlignedBB getRenderBoundingBox() { + return new Box (this).extendToEncompass(box).expand(50).getBoundingBox(); } @Override - public ArrayList getBuilders() { - // TODO Auto-generated method stub - return null; - } - - @Override - public LinkedList getPathLaser() { - // TODO Auto-generated method stub - return null; + public Box getBox() { + return box; } }