diff options
Diffstat (limited to 'src')
5 files changed, 310 insertions, 25 deletions
diff --git a/src/Java/gtPlusPlus/api/objects/minecraft/BlockPos.java b/src/Java/gtPlusPlus/api/objects/minecraft/BlockPos.java index 7ee71e7c9f..5f0d3a2117 100644 --- a/src/Java/gtPlusPlus/api/objects/minecraft/BlockPos.java +++ b/src/Java/gtPlusPlus/api/objects/minecraft/BlockPos.java @@ -31,6 +31,14 @@ public class BlockPos implements Serializable{ this.world = DimensionManager.getWorld(dim); } + public BlockPos(int x, int y, int z, World dim){ + this.xPos = x; + this.yPos = y; + this.zPos = z; + this.dim = dim.provider.dimensionId; + this.world = dim; + } + public String getLocationString() { return "[X: "+this.xPos+"][Y: "+this.yPos+"][Z: "+this.zPos+"][Dim: "+this.dim+"]"; } diff --git a/src/Java/gtPlusPlus/core/block/ModBlocks.java b/src/Java/gtPlusPlus/core/block/ModBlocks.java index 50d403f3b2..09bf3eb4af 100644 --- a/src/Java/gtPlusPlus/core/block/ModBlocks.java +++ b/src/Java/gtPlusPlus/core/block/ModBlocks.java @@ -11,6 +11,8 @@ import gtPlusPlus.core.block.base.BlockBaseOre; import gtPlusPlus.core.block.general.*; import gtPlusPlus.core.block.general.antigrief.BlockWitherProof; import gtPlusPlus.core.block.machine.*; +import gtPlusPlus.core.block.machine.bedrock.Mining_Head_Fake; +import gtPlusPlus.core.block.machine.bedrock.Mining_Pipe_Fake; import gtPlusPlus.core.fluids.FluidRegistryHandler; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.Utils; @@ -18,6 +20,9 @@ import net.minecraftforge.fluids.Fluid; public final class ModBlocks { + public static Block blockFakeMiningPipe; + public static Block blockFakeMiningHead; + public static Block blockFishTrap; public static Block blockWorkbench; public static Block blockWorkbenchAdvanced; @@ -89,6 +94,9 @@ public final class ModBlocks { blockCompressedObsidian = new BlockCompressedObsidian(); blockNet = new BlockNet(); + blockFakeMiningPipe = new Mining_Pipe_Fake(); + blockFakeMiningHead = new Mining_Head_Fake(); + } diff --git a/src/Java/gtPlusPlus/core/block/machine/bedrock/Mining_Head_Fake.java b/src/Java/gtPlusPlus/core/block/machine/bedrock/Mining_Head_Fake.java new file mode 100644 index 0000000000..cd20c8dab3 --- /dev/null +++ b/src/Java/gtPlusPlus/core/block/machine/bedrock/Mining_Head_Fake.java @@ -0,0 +1,99 @@ +package gtPlusPlus.core.block.machine.bedrock; + +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EnumCreatureType; +import net.minecraft.world.Explosion; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +import gtPlusPlus.core.creative.AddToCreativeTab; +import gtPlusPlus.core.lib.CORE; +import gtPlusPlus.core.util.Utils; + +public class Mining_Head_Fake extends Block{ + + public Mining_Head_Fake(){ + super(Material.lava); + this.setBlockName(Utils.sanitizeString("blockMiningHeadFake")); + this.setBlockTextureName(CORE.MODID + ":" + "blockFrameGt"); + this.setCreativeTab(AddToCreativeTab.tabBlock); + this.setHardness(-1F); + this.setResistance(50000.0F); + this.setHarvestLevel("pickaxe", 10); + this.setStepSound(soundTypeMetal); + //LanguageRegistry.addName(this, "Wither Cage"); + GameRegistry.registerBlock(this, Utils.sanitizeString("blockMiningHeadFake")); + } + + public String GetProperName(){ + return "Hardened Mining Head"; + } + + @Override + @SideOnly(Side.CLIENT) + public int getRenderBlockPass(){ + return 1; + } + + @Override + public boolean isOpaqueCube(){ + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(final IIconRegister iIcon){ + this.blockIcon = iIcon.registerIcon(CORE.MODID + ":" + "blockFrameGt"); + } + + @Override + public void onBlockExploded(final World world, final int x, final int y, final int z, final Explosion explosion){ + //prevent from being destroyed by wither and nukes. + } + + @Override + public void onBlockDestroyedByExplosion(final World p_149723_1_, final int p_149723_2_, + final int p_149723_3_, final int p_149723_4_, final Explosion p_149723_5_) { + + } + + @Override + public boolean canDropFromExplosion(final Explosion p_149659_1_) { + return false; + } + + @Override + public boolean canEntityDestroy(final IBlockAccess world, final int x, final int y, final int z, + final Entity entity) { + return false; + } + + + //Colour Handling + private static final int mWitherColour = Utils.rgbtoHexValue(175, 64, 32); + + @Override + public int colorMultiplier(final IBlockAccess par1IBlockAccess, final int par2, final int par3, final int par4){ + return mWitherColour; + } + + @Override + public int getRenderColor(final int aMeta) { + return mWitherColour; + } + + @Override + public boolean canCreatureSpawn(final EnumCreatureType type, final IBlockAccess world, final int x, final int y, final int z) { + return false; + } + + + +} diff --git a/src/Java/gtPlusPlus/core/block/machine/bedrock/Mining_Pipe_Fake.java b/src/Java/gtPlusPlus/core/block/machine/bedrock/Mining_Pipe_Fake.java new file mode 100644 index 0000000000..64215c0274 --- /dev/null +++ b/src/Java/gtPlusPlus/core/block/machine/bedrock/Mining_Pipe_Fake.java @@ -0,0 +1,99 @@ +package gtPlusPlus.core.block.machine.bedrock; + +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EnumCreatureType; +import net.minecraft.world.Explosion; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +import gtPlusPlus.core.creative.AddToCreativeTab; +import gtPlusPlus.core.lib.CORE; +import gtPlusPlus.core.util.Utils; + +public class Mining_Pipe_Fake extends Block{ + + public Mining_Pipe_Fake(){ + super(Material.cactus); + this.setBlockName(Utils.sanitizeString("blockMiningPipeFake")); + this.setBlockTextureName(CORE.MODID + ":" + "blockFrameGt"); + this.setCreativeTab(AddToCreativeTab.tabBlock); + this.setHardness(-1F); + this.setResistance(50000.0F); + this.setHarvestLevel("pickaxe", 8); + this.setStepSound(soundTypeMetal); + //LanguageRegistry.addName(this, "Wither Cage"); + GameRegistry.registerBlock(this, Utils.sanitizeString("blockMiningPipeFake")); + } + + public String GetProperName(){ + return "Hardened Mining Pipe"; + } + + @Override + @SideOnly(Side.CLIENT) + public int getRenderBlockPass(){ + return 1; + } + + @Override + public boolean isOpaqueCube(){ + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(final IIconRegister iIcon){ + this.blockIcon = iIcon.registerIcon(CORE.MODID + ":" + "blockFrameGt"); + } + + @Override + public void onBlockExploded(final World world, final int x, final int y, final int z, final Explosion explosion){ + //prevent from being destroyed by wither and nukes. + } + + @Override + public void onBlockDestroyedByExplosion(final World p_149723_1_, final int p_149723_2_, + final int p_149723_3_, final int p_149723_4_, final Explosion p_149723_5_) { + + } + + @Override + public boolean canDropFromExplosion(final Explosion p_149659_1_) { + return false; + } + + @Override + public boolean canEntityDestroy(final IBlockAccess world, final int x, final int y, final int z, + final Entity entity) { + return false; + } + + + //Colour Handling + private static final int mWitherColour = Utils.rgbtoHexValue(32, 32, 32); + + @Override + public int colorMultiplier(final IBlockAccess par1IBlockAccess, final int par2, final int par3, final int par4){ + return mWitherColour; + } + + @Override + public int getRenderColor(final int aMeta) { + return mWitherColour; + } + + @Override + public boolean canCreatureSpawn(final EnumCreatureType type, final IBlockAccess world, final int x, final int y, final int z) { + return false; + } + + + +} diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/bedrock/GregtechMetaTileEntity_BedrockMiningPlatformBase.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/bedrock/GregtechMetaTileEntity_BedrockMiningPlatformBase.java index 5282c7d759..740ed1104d 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/bedrock/GregtechMetaTileEntity_BedrockMiningPlatformBase.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/bedrock/GregtechMetaTileEntity_BedrockMiningPlatformBase.java @@ -6,6 +6,10 @@ import net.minecraft.tileentity.TileEntity; import gregtech.common.blocks.GT_TileEntity_Ores; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.api.objects.minecraft.BlockPos; +import gtPlusPlus.core.block.ModBlocks; +import gtPlusPlus.core.lib.CORE; +import gtPlusPlus.core.util.minecraft.FluidUtils; import gregtech.common.blocks.GT_Block_Ores_Abstract; import gregtech.api.enums.ItemList; @@ -32,6 +36,8 @@ import gregtech.api.GregTech_API; import net.minecraftforge.common.util.ForgeDirection; import net.minecraft.world.ChunkPosition; import java.util.ArrayList; +import java.util.HashMap; + import net.minecraft.block.Block; import net.minecraft.item.ItemStack; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; @@ -45,6 +51,7 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G private static final Block miningPipeTipBlock; private final ArrayList<ChunkPosition> oreBlockPositions; + private double mProductionModifier = 100; private Block casingBlock; private int casingMeta; @@ -107,7 +114,7 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G public void saveNBTData(final NBTTagCompound aNBT) { super.saveNBTData(aNBT); - + aNBT.setDouble("mProductionModifier", mProductionModifier); for (int g=0;g<5;g++) { aNBT.setBoolean("isPickingPipes"+g, this.isPickingPipes[g]); } @@ -115,6 +122,7 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G public void loadNBTData(final NBTTagCompound aNBT) { super.loadNBTData(aNBT); + this.mProductionModifier = aNBT.getDouble("mProductionModifier"); for (int g=0;g<5;g++) { this.isPickingPipes[g] = aNBT.getBoolean("isPickingPipes"+g); } @@ -122,7 +130,7 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G public boolean checkRecipe(final ItemStack aStack) { this.setElectricityStats(); - + boolean[] didWork = new boolean[5]; final int oldYHead = this.yHead[0]; @@ -133,7 +141,7 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G if (this.yHead[0] != oldYHead) { this.oreBlockPositions.clear(); } - + for (int g=0;g<5;g++) { if (this.isPickingPipes[g]) { if (this.tryPickPipe(g)) { @@ -146,21 +154,30 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G didWork[g] = false; } else { this.putMiningPipesFromInputsInController(); - /*if (!this.tryConsumeDrillingFluid()) { + + if (!this.tryConsumeDrillingFluid()) { return false; - }*/ + } + if (this.oreBlockPositions.isEmpty()) { + //Hit bedrock Either retract pipe or Dig! if (!this.tryLowerPipe(g)) { - //Hit bedrock Either retract pipe or Dig! - //this.isPickingPipes[g] = true; - //didWork[g] = this.isPickingPipes[g]; - didWork[g] = true; + //Mining Head is too high, we best retract. + if (mMiningHeads.get(g).yPos >= 6) { + for (int r=0;r<5;r++) { + this.isPickingPipes[r] = true; + } + didWork[g] = this.isPickingPipes[g]; + } + //Full Power! + else { + didWork[g] = true; + } } - //this.fillMineListIfEmpty(); } } } - + //Fail recipe handling if one pipe didn't handle properly, to try again next run. for (boolean y : didWork) { if (!y) { @@ -185,17 +202,18 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G private boolean tryPickPipe(int pipe) { if (this.yHead[pipe] == this.yDrill) { - return false; + return false; } boolean didWork[] = new boolean[3]; - didWork[0] = this.checkBlockAndMeta(this.xCenter[pipe], this.yHead[pipe] + 1, this.zCenter[pipe], GregtechMetaTileEntity_BedrockMiningPlatformBase.miningPipeBlock, 32767); + didWork[0] = this.checkBlockAndMeta(this.xCenter[pipe], this.yHead[pipe] + 1, this.zCenter[pipe],GregtechMetaTileEntity_BedrockMiningPlatformBase.miningPipeBlock, 32767); if (didWork[0]) { didWork[1] = this.getBaseMetaTileEntity().getWorld().setBlock(this.xCenter[pipe], this.yHead[pipe] + 1, this.zCenter[pipe],GregtechMetaTileEntity_BedrockMiningPlatformBase.miningPipeTipBlock); } if (didWork[1]) { + mMiningHeads.put(pipe, new BlockPos(this.xCenter[pipe], this.yHead[pipe] + 1, this.zCenter[pipe], this.getBaseMetaTileEntity().getWorld())); didWork[2] = this.getBaseMetaTileEntity().getWorld().setBlockToAir(this.xCenter[pipe], this.yHead[pipe], this.zCenter[pipe]); } - + if (didWork[0] && didWork[1] && didWork[2]) { return true; } @@ -268,7 +286,46 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G } private boolean tryConsumeDrillingFluid() { - return this.depleteInput(new FluidStack(ItemList.sDrillingFluid, 2000)); + boolean consumed = false; + boolean g = (this.getBaseMetaTileEntity().getWorld().getTotalWorldTime() % 2 == 0); + consumed = (g ? tryConsumePyrotheum() : tryConsumeCryotheum()); + if (consumed) { + increaseProduction(g ? 2 : 1); + } + else { + lowerProduction(g ? 5 : 3); + } + return consumed; + } + + private boolean tryConsumePyrotheum() { + return this.depleteInput(FluidUtils.getFluidStack("pyrotheum", 2)); + } + + private boolean tryConsumeCryotheum() { + return this.depleteInput(FluidUtils.getFluidStack("cryotheum", 4)); + } + + private boolean lowerProduction(int reduce) { + if ((mProductionModifier-reduce) >= 10){ + this.mProductionModifier -= reduce; + return true; + } + else { + this.mProductionModifier = 10; + return false; + } + } + + private boolean increaseProduction(int increase) { + if ((mProductionModifier+increase) <= 150){ + this.mProductionModifier += increase; + return true; + } + else { + this.mProductionModifier = 150; + return false; + } } private void putMiningPipesFromInputsInController() { @@ -335,30 +392,36 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G } } + private HashMap<Integer, BlockPos> mMiningHeads = new HashMap<Integer, BlockPos>(); + private boolean tryLowerPipe(int pipe) { if (!this.isHasMiningPipes()) { Logger.INFO("[Bedrock Miner] No Pipes to Lower."); return false; } - boolean didWork[] = new boolean[2]; - + boolean didWork[] = new boolean[3]; + if (this.checkBlockAndMeta(this.xCenter[pipe], this.yHead[pipe] - 1, this.zCenter[pipe], Blocks.bedrock, 32767)) { //Logger.INFO("[Bedrock Miner] Pipe "+pipe+" is at Bedrock."); return false; } didWork[0] = this.getBaseMetaTileEntity().getWorld().setBlock(this.xCenter[pipe], this.yHead[pipe] - 1, this.zCenter[pipe], GregtechMetaTileEntity_BedrockMiningPlatformBase.miningPipeTipBlock); + if (didWork[0]) { + mMiningHeads.put(pipe, new BlockPos(this.xCenter[pipe], this.yHead[pipe] - 1, this.zCenter[pipe], this.getBaseMetaTileEntity().getWorld())); + } + didWork[1] = (this.yHead[pipe] != this.yDrill); if (didWork[1]) { didWork[2] = this.getBaseMetaTileEntity().getWorld().setBlock(this.xCenter[pipe], this.yHead[pipe], this.zCenter[pipe], GregtechMetaTileEntity_BedrockMiningPlatformBase.miningPipeBlock); } - + if (didWork[0] && didWork[1] && didWork[2]) { this.getBaseMetaTileEntity().decrStackSize(1, 1); Logger.INFO("[Bedrock Miner] Lowered Pipe "+pipe+"."); return true; } - + Logger.INFO("[Bedrock Miner] Issue when lowering Pipe "+pipe+". 1: "+didWork[0]+" | 2: "+didWork[1]+" | 3: "+didWork[2]); return false; } @@ -511,20 +574,28 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G protected String[] getDescriptionInternal(final String tierSuffix) { final String casings = this.getCasingBlockItem().get(0L, new Object[0]).getDisplayName(); return new String[]{"Controller Block for the Experimental Deep Earth Drilling Platform - MK " + ((tierSuffix != null) ? tierSuffix : ""), - "Size(WxHxD): 3x7x3, Controller (Front middle bottom)", "3x1x3 Base of " + casings, + "Size(WxHxD): 3x7x3, Controller (Front middle bottom)", + "3x1x3 Base of " + casings, "1x3x1 " + casings + " pillar (Center of base)", "1x3x1 " + this.getFrameMaterial().mName + " Frame Boxes (Each pillar side and on top)", - "1x Input Hatch for drilling fluid (Any bottom layer casing)", + "2x Input Hatch (Any bottom layer casing)", "1x Input Bus for mining pipes (Any bottom layer casing; not necessary)", - "1x Output Bus (Any bottom layer casing)", "1x Maintenance Hatch (Any bottom layer casing)", + "1x Output Bus (Any bottom layer casing)", + "1x Maintenance Hatch (Any bottom layer casing)", "1x " + GT_Values.VN[this.getMinTier()] + "+ Energy Hatch (Any bottom layer casing)", - "Radius is " + (this.getRadiusInChunks() << 4) + " blocks"}; + "Radius is " + (this.getRadiusInChunks() << 4) + " blocks", + "Every tick, this machine altenates betweem consumption of Pyrotheum & Cryotheum", + "Pyrotheum is used to bore through the Mantle of the world", + "Cryotheum is used to keep the internal components cool", + CORE.GT_Tooltip}; } static { miningPipe = GT_ModHandler.getIC2Item("miningPipe", 0L); miningPipeTip = GT_ModHandler.getIC2Item("miningPipeTip", 0L); - miningPipeBlock = GT_Utility.getBlockFromStack(GregtechMetaTileEntity_BedrockMiningPlatformBase.miningPipe); - miningPipeTipBlock = GT_Utility.getBlockFromStack(GregtechMetaTileEntity_BedrockMiningPlatformBase.miningPipeTip); + //miningPipeBlock = GT_Utility.getBlockFromStack(GregtechMetaTileEntity_BedrockMiningPlatformBase.miningPipe); + //miningPipeTipBlock = GT_Utility.getBlockFromStack(GregtechMetaTileEntity_BedrockMiningPlatformBase.miningPipeTip); + miningPipeBlock = ModBlocks.blockFakeMiningPipe; + miningPipeTipBlock = ModBlocks.blockFakeMiningHead; } }
\ No newline at end of file |