From 9667ce84aa56b1a1e41d8ac8188d0d41c682914e Mon Sep 17 00:00:00 2001 From: Alkalus <3060479+draknyte1@users.noreply.github.com> Date: Thu, 18 Apr 2019 17:21:03 +1000 Subject: + Basic loot pool for Deep Earth Drilling Platform. + Added Runite and Granite Ores. --- ...chMetaTileEntity_BedrockMiningPlatformBase.java | 146 +++++++++++++++++++++ 1 file changed, 146 insertions(+) (limited to 'src/Java/gtPlusPlus/xmod/gregtech/common/tileentities') diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatformBase.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatformBase.java index 9ac67cf874..3d2094c8fa 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatformBase.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatformBase.java @@ -27,7 +27,10 @@ import gtPlusPlus.api.objects.Logger; import gtPlusPlus.api.objects.minecraft.BlockPos; import gtPlusPlus.core.block.ModBlocks; import gtPlusPlus.core.lib.CORE; +import gtPlusPlus.core.material.ELEMENT; import gtPlusPlus.core.material.Material; +import gtPlusPlus.core.material.ORES; +import gtPlusPlus.core.util.math.MathUtils; import gtPlusPlus.core.util.minecraft.FluidUtils; import gtPlusPlus.core.util.minecraft.ItemUtils; import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList; @@ -156,8 +159,23 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G this.putMiningPipesFromInputsInController(); if (!this.tryConsumeDrillingFluid()) { + Logger.INFO("No drilling Fluid."); return false; } + + if (this.mRuntime % 2 == 0) { + if (!this.tryConsumePyrotheum()) { + Logger.INFO("No tryConsumePyrotheum Fluid."); + return false; + } + } + else { + if (!this.tryConsumeCryotheum()) { + Logger.INFO("No tryConsumeCryotheum Fluid."); + return false; + } + } + if (this.oreBlockPositions.isEmpty()) { // Hit bedrock Either retract pipe or Dig! @@ -171,6 +189,134 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G } // Full Power! else { + + //We assume this drill head is in a supported location at Y 5 or less. It should also be touching bedrock. + ItemStack[] aOutputs = new ItemStack[] { + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().SILVER.getOre(1), + ELEMENT.getInstance().SILVER.getOre(1), + ELEMENT.getInstance().SILVER.getOre(1), + ELEMENT.getInstance().SILVER.getOre(1), + ELEMENT.getInstance().ALUMINIUM.getOre(1), + ELEMENT.getInstance().ALUMINIUM.getOre(1), + ELEMENT.getInstance().ALUMINIUM.getOre(1), + ELEMENT.getInstance().ALUMINIUM.getOre(1), + ELEMENT.getInstance().ALUMINIUM.getOre(1), + ELEMENT.getInstance().ALUMINIUM.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().ZINC.getOre(1), + ELEMENT.getInstance().ZINC.getOre(1), + ELEMENT.getInstance().ZINC.getOre(1), + ELEMENT.getInstance().ZINC.getOre(1), + ELEMENT.getInstance().NICKEL.getOre(1), + ELEMENT.getInstance().NICKEL.getOre(1), + ELEMENT.getInstance().NICKEL.getOre(1), + ELEMENT.getInstance().NICKEL.getOre(1), + ItemUtils.getItemStackOfAmountFromOreDict("oreBauxite", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreBauxite", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreBauxite", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRuby", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRuby", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRuby", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreSapphire", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreSapphire", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreSapphire", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreThorium", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreThorium", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreTungstate", 1), + ELEMENT.STANDALONE.RUNITE.getOre(1), + ELEMENT.STANDALONE.GRANITE.getOre(1), + ORES.AGARDITE_CD.getOre(1), + ORES.ALBURNITE.getOre(1), + ORES.CERITE.getOre(1), + ORES.FLUORCAPHITE.getOre(1), + ORES.HIBONITE.getOre(1), + ORES.MIESSIITE.getOre(1), + ORES.ZIMBABWEITE.getOre(1), + ORES.SAMARSKITE_YB.getOre(1), + }; + + int aChance = MathUtils.randInt(0, 10000); + if (aChance <= 100) { + ItemStack aChance1 = ItemUtils.getSimpleStack(aOutputs[MathUtils.randInt(0, aOutputs.length-1)], MathUtils.randInt(0, 3)); + if (ItemUtils.checkForInvalidItems(aChance1)) { + this.addOutput(aChance1); + } + ItemStack aChance2 = ItemUtils.getSimpleStack(aOutputs[MathUtils.randInt(0, aOutputs.length-1)], MathUtils.randInt(0, 3)); + if (ItemUtils.checkForInvalidItems(aChance2)) { + this.addOutput(aChance2); + } + ItemStack aChance3 = ItemUtils.getSimpleStack(aOutputs[MathUtils.randInt(0, aOutputs.length-1)], MathUtils.randInt(0, 3)); + if (ItemUtils.checkForInvalidItems(aChance3)) { + this.addOutput(aChance3); + } + } didWork[g] = true; } } -- cgit From 9ee4e1bff55c1af2bd313a97b71f6c722c5be703 Mon Sep 17 00:00:00 2001 From: Alkalus <3060479+draknyte1@users.noreply.github.com> Date: Thu, 18 Apr 2019 18:25:45 +1000 Subject: $ Small bit of work on the Deep Earth Drilling Platform. --- .../core/handler/AchievementHandler.java | 3 +- ...chMetaTileEntity_BedrockMiningPlatformBase.java | 282 +++++++++++++++++++-- 2 files changed, 262 insertions(+), 23 deletions(-) (limited to 'src/Java/gtPlusPlus/xmod/gregtech/common/tileentities') diff --git a/src/Java/gtPlusPlus/core/handler/AchievementHandler.java b/src/Java/gtPlusPlus/core/handler/AchievementHandler.java index 4cd5431ebd..9053875058 100644 --- a/src/Java/gtPlusPlus/core/handler/AchievementHandler.java +++ b/src/Java/gtPlusPlus/core/handler/AchievementHandler.java @@ -19,6 +19,7 @@ import gtPlusPlus.core.material.ELEMENT; import gtPlusPlus.core.util.minecraft.ItemUtils; import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList; import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase; +import gtPlusPlus.xmod.gregtech.common.items.MetaGeneratedGregtechTools; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.stats.Achievement; @@ -43,7 +44,7 @@ public class AchievementHandler { GT_Log.out.println("Initializing GT++ achievements"); //register first - this.registerAchievement(aBaseAchievementName, 0, 0, GT_MetaGenerated_Tool_01.INSTANCE.getToolWithStats(GT_MetaGenerated_Tool_01.HARDHAMMER, 1, Materials.Neutronium, Materials.Osmium, null), "", true); + this.registerAchievement(aBaseAchievementName, 0, 0, MetaGeneratedGregtechTools.INSTANCE.getToolWithStats(MetaGeneratedGregtechTools.ANGLE_GRINDER, 1, Materials.Osmium, Materials.Osmium, null), "", true); //Useful Info boolean cores = CORE.ConfigSwitches.requireControlCores; diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatformBase.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatformBase.java index 3d2094c8fa..44095aed62 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatformBase.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatformBase.java @@ -1,5 +1,7 @@ package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production.bedrock; +import static gregtech.api.GregTech_API.sBlockCasings4; + import java.util.ArrayList; import java.util.HashMap; @@ -116,25 +118,180 @@ 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]); - } } 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); - } } public boolean checkRecipe(final ItemStack aStack) { - this.setElectricityStats(); + //this.setElectricityStats(); boolean[] didWork = new boolean[5]; - - final int oldYHead = this.yHead[0]; + + if (!this.tryConsumeDrillingFluid()) { + Logger.INFO("No drilling Fluid."); + return false; + } + + if (MathUtils.isNumberEven((int) this.mProductionModifier)) { + if (!this.tryConsumePyrotheum()) { + Logger.INFO("No tryConsumePyrotheum Fluid."); + return false; + } + else { + mProductionModifier++; + Logger.INFO("tryConsumePyrotheum Fluid. "+(int) this.mProductionModifier); + } + } + else { + if (!this.tryConsumeCryotheum()) { + Logger.INFO("No tryConsumeCryotheum Fluid."); + return false; + } + else { + mProductionModifier++; + Logger.INFO("tryConsumeCryotheum Fluid. "+(int) this.mProductionModifier); + } + } + + for (int i = 0; i < 5; i++) { + //We assume this drill head is in a supported location at Y 5 or less. It should also be touching bedrock. + ItemStack[] aOutputs = new ItemStack[] { + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().SILVER.getOre(1), + ELEMENT.getInstance().SILVER.getOre(1), + ELEMENT.getInstance().SILVER.getOre(1), + ELEMENT.getInstance().SILVER.getOre(1), + ELEMENT.getInstance().ALUMINIUM.getOre(1), + ELEMENT.getInstance().ALUMINIUM.getOre(1), + ELEMENT.getInstance().ALUMINIUM.getOre(1), + ELEMENT.getInstance().ALUMINIUM.getOre(1), + ELEMENT.getInstance().ALUMINIUM.getOre(1), + ELEMENT.getInstance().ALUMINIUM.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().ZINC.getOre(1), + ELEMENT.getInstance().ZINC.getOre(1), + ELEMENT.getInstance().ZINC.getOre(1), + ELEMENT.getInstance().ZINC.getOre(1), + ELEMENT.getInstance().NICKEL.getOre(1), + ELEMENT.getInstance().NICKEL.getOre(1), + ELEMENT.getInstance().NICKEL.getOre(1), + ELEMENT.getInstance().NICKEL.getOre(1), + ItemUtils.getItemStackOfAmountFromOreDict("oreBauxite", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreBauxite", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreBauxite", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRuby", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRuby", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRuby", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreSapphire", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreSapphire", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreSapphire", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreThorium", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreThorium", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreTungstate", 1), + ELEMENT.STANDALONE.RUNITE.getOre(1), + ELEMENT.STANDALONE.GRANITE.getOre(1), + ORES.AGARDITE_CD.getOre(1), + ORES.ALBURNITE.getOre(1), + ORES.CERITE.getOre(1), + ORES.FLUORCAPHITE.getOre(1), + ORES.HIBONITE.getOre(1), + ORES.MIESSIITE.getOre(1), + ORES.ZIMBABWEITE.getOre(1), + ORES.SAMARSKITE_YB.getOre(1), + }; + + int aChance = MathUtils.randInt(0, 10000); + if (aChance <= 100) { + ItemStack aChance1 = ItemUtils.getSimpleStack(aOutputs[MathUtils.randInt(0, aOutputs.length-1)], MathUtils.randInt(0, 3)); + if (ItemUtils.checkForInvalidItems(aChance1)) { + this.addOutput(aChance1); + } + ItemStack aChance2 = ItemUtils.getSimpleStack(aOutputs[MathUtils.randInt(0, aOutputs.length-1)], MathUtils.randInt(0, 3)); + if (ItemUtils.checkForInvalidItems(aChance2)) { + this.addOutput(aChance2); + } + ItemStack aChance3 = ItemUtils.getSimpleStack(aOutputs[MathUtils.randInt(0, aOutputs.length-1)], MathUtils.randInt(0, 3)); + if (ItemUtils.checkForInvalidItems(aChance3)) { + this.addOutput(aChance3); + } + Logger.INFO("Tried to add some loot to DEDP."); + } + didWork[i] = true; + + } + + + + /*final int oldYHead = this.yHead[0]; if (!this.checkPipesAndSetYHead() || !this.isEnergyEnough()) { this.stopMachine(); return false; @@ -168,12 +325,18 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G Logger.INFO("No tryConsumePyrotheum Fluid."); return false; } + else { + Logger.INFO("tryConsumePyrotheum Fluid."); + } } else { if (!this.tryConsumeCryotheum()) { Logger.INFO("No tryConsumeCryotheum Fluid."); return false; } + else { + Logger.INFO("tryConsumeCryotheum Fluid."); + } } @@ -321,8 +484,11 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G } } } + else { + didWork[g] = true; + } } - } + }*/ // Fail recipe handling if one pipe didn't handle properly, to try again // next run. @@ -332,7 +498,14 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G return false; } } - // Logger.INFO("[Bedrock Miner] Success? [x]"); + + this.mEUt = 8000; + this.mMaxProgresstime = 10; + this.mEfficiencyIncrease = 10000; + //this.mProgresstime = (this.mMaxProgresstime > this.mProgresstime ? this.mProgresstime + 1 : 0); + + updateSlots(); + Logger.INFO("[Bedrock Miner] Success? [x]"); return true; } @@ -428,16 +601,16 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G boolean g = (this.getBaseMetaTileEntity().getWorld().getTotalWorldTime() % 2 == 0); consumed = (g ? tryConsumePyrotheum() : tryConsumeCryotheum()); if (consumed) { - increaseProduction(g ? 2 : 1); + //increaseProduction(g ? 2 : 1); } else { - lowerProduction(g ? 5 : 3); + //lowerProduction(g ? 5 : 3); } return consumed; } private boolean tryConsumePyrotheum() { - return this.depleteInput(FluidUtils.getFluidStack("pyrotheum", 2)); + return this.depleteInput(FluidUtils.getFluidStack("pyrotheum", 4)); } private boolean tryConsumeCryotheum() { @@ -528,11 +701,11 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G } boolean didWork[] = new boolean[3]; - if (this.checkBlockAndMeta(this.xCenter[pipe], this.yHead[pipe] - 1, this.zCenter[pipe], Blocks.bedrock, + /*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]) { @@ -571,7 +744,72 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G public boolean checkMachine(final IGregTechTileEntity aBaseMetaTileEntity, final ItemStack aStack) { this.updateCoordinates(); - for (int xOff = -1 + this.back.offsetX; xOff <= 1 + this.back.offsetX; ++xOff) { + + + + int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX; + int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ; + int tAmount = 0; + if (!aBaseMetaTileEntity.getAirOffset(xDir, 0, zDir)) { + return false; + } else { + + Block aCasing = Block.getBlockFromItem(getCasingBlockItem().getItem()); + + for (int i = -1; i < 2; ++i) { + for (int j = -1; j < 2; ++j) { + for (int h = -1; h < 2; ++h) { + if (h != 0 || (xDir + i != 0 || zDir + j != 0) && (i != 0 || j != 0)) { + IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + i, + h, zDir + j); + Block aBlock = aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j); + int aMeta = aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j); + + if (!this.addToMachineList(tTileEntity, 48)) { + if (aBlock != aCasing) { + Logger.INFO("Found Bad Casing"); + return false; + } + if (aMeta != 3) { + Logger.INFO("Found Bad Meta"); + return false; + } + } + ++tAmount; + + + + /*if (!isValidBlockForStructure(tTileEntity, 48, true, aBlock, aMeta, sBlockCasings4, 0)) { + Logger.INFO("Bad centrifuge casing"); + return false; + }*/ + + } + } + } + } + return tAmount >= 10; + } + + + + + + + + + + + + + + + + + + + + /*for (int xOff = -1 + this.back.offsetX; xOff <= 1 + this.back.offsetX; ++xOff) { for (int zOff = -1 + this.back.offsetZ; zOff <= 1 + this.back.offsetZ; ++zOff) { if (xOff != 0 || zOff != 0) { final Block tBlock = aBaseMetaTileEntity.getBlockOffset(xOff, 0, zOff); @@ -582,7 +820,7 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G && !this.addInputToMachineList(tTileEntity, this.casingTextureIndex) && !this.addOutputToMachineList(tTileEntity, this.casingTextureIndex) && !this.addEnergyInputToMachineList(tTileEntity, this.casingTextureIndex)) { - Logger.INFO("[Bedrock Miner] Found bad blosck in Structure."); + Logger.INFO("[Bedrock Miner] Found bad block in Structure."); if (tBlock != null) { //Logger.INFO("[Bedrock Miner] Found "+(new ItemStack(tBlock, tBlock.getDamageValue(aBaseMetaTileEntity.getWorld(), xOff, 0, zOff))).getDisplayName()+", expected "+this.getCasingBlockItem().get(0L, new Object[0]).getDisplayName()); } @@ -612,12 +850,12 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G } } Logger.INFO("[Bedrock Miner] Built."); - return true; + return true;*/ } private void updateCoordinates() { this.xDrill = this.getBaseMetaTileEntity().getXCoord(); - this.yDrill = this.getBaseMetaTileEntity().getYCoord(); + this.yDrill = this.getBaseMetaTileEntity().getYCoord()-1; this.zDrill = this.getBaseMetaTileEntity().getZCoord(); this.back = ForgeDirection.getOrientation((int) this.getBaseMetaTileEntity().getBackFacing()); @@ -641,7 +879,7 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G private boolean checkPipesAndSetYHead() { for (int g = 0; g < 5; g++) { - this.yHead[g] = this.yDrill - 1; + this.yHead[g] = this.yDrill -5; // Logger.INFO("[Bedrock Miner] Set yHead["+g+"] to // "+this.yHead[g]+"."); while (this.checkBlockAndMeta(this.xCenter[g], this.yHead[g], this.zCenter[g], @@ -650,7 +888,7 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G } if (this.checkBlockAndMeta(this.xCenter[g], this.yHead[g], this.zCenter[g], GregtechMetaTileEntity_BedrockMiningPlatformBase.miningPipeTipBlock, 32767) - || ++this.yHead[g] == this.yDrill) { + || ++this.yHead[g] == this.yDrill || GT_Utility.isBlockAir(this.getBaseMetaTileEntity().getWorld(), this.xCenter[g], this.yHead[g], this.zCenter[g])) { continue; } this.getBaseMetaTileEntity().getWorld().setBlock(this.xCenter[g], this.yHead[g], this.zCenter[g], -- cgit From 04198555e3af515fd8e7910dd0575f7e428e5a6b Mon Sep 17 00:00:00 2001 From: Alkalus <3060479+draknyte1@users.noreply.github.com> Date: Sat, 20 Apr 2019 13:01:30 +1000 Subject: % Tweaked DEDP outputs. $ Fixed IC2 Hazmat ASM throwing IncompatibleClassChangeError. --- .../transformers/ClassTransformer_IC2_Hazmat.java | 2 +- ...chMetaTileEntity_BedrockMiningPlatformBase.java | 662 ++++++++++----------- 2 files changed, 308 insertions(+), 356 deletions(-) (limited to 'src/Java/gtPlusPlus/xmod/gregtech/common/tileentities') diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_Hazmat.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_Hazmat.java index 4bb7ef7d46..f7cab7d092 100644 --- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_Hazmat.java +++ b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_IC2_Hazmat.java @@ -83,7 +83,7 @@ public class ClassTransformer_IC2_Hazmat { FMLRelaunchLog.log("[GT++ ASM] IC2 Hazmat Patch", Level.INFO, "Injecting " + aMethodName + "."); if (aMethodName.equals("hasCompleteHazmat")) { - mv = cw.visitMethod(ACC_PUBLIC, "hasCompleteHazmat", "(L"+aEntityLivingBase+";)Z", null, null); + mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "hasCompleteHazmat", "(L"+aEntityLivingBase+";)Z", null, null); mv.visitCode(); Label l0 = new Label(); mv.visitLabel(l0); diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatformBase.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatformBase.java index 44095aed62..fb4884e278 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatformBase.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatformBase.java @@ -1,18 +1,9 @@ package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production.bedrock; -import static gregtech.api.GregTech_API.sBlockCasings4; - import java.util.ArrayList; import java.util.HashMap; -import net.minecraft.block.Block; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.ChunkPosition; - +import gregtech.api.GregTech_API; import gregtech.api.enums.GT_Values; import gregtech.api.enums.Textures; import gregtech.api.gui.GT_GUIContainer_MultiMachine; @@ -24,19 +15,28 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockB import gregtech.api.objects.GT_RenderedTexture; import gregtech.api.util.GT_ModHandler; import gregtech.api.util.GT_Utility; - +import gregtech.common.GT_Worldgen_GT_Ore_Layer; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.api.objects.data.AutoMap; +import gtPlusPlus.api.objects.data.Pair; import gtPlusPlus.api.objects.minecraft.BlockPos; import gtPlusPlus.core.block.ModBlocks; -import gtPlusPlus.core.lib.CORE; +import gtPlusPlus.core.lib.LoadedMods; import gtPlusPlus.core.material.ELEMENT; import gtPlusPlus.core.material.Material; import gtPlusPlus.core.material.ORES; import gtPlusPlus.core.util.math.MathUtils; import gtPlusPlus.core.util.minecraft.FluidUtils; import gtPlusPlus.core.util.minecraft.ItemUtils; +import gtPlusPlus.core.util.minecraft.MiningUtils; import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList; +import net.minecraft.block.Block; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.ChunkPosition; import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.oredict.OreDictionary; public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends GT_MetaTileEntity_MultiBlockBase { @@ -46,7 +46,7 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G private static final Block miningPipeTipBlock; private final ArrayList oreBlockPositions; - protected double mProductionModifier = 100; + protected double mProductionModifier = 0; private Block casingBlock; private int casingMeta; @@ -141,8 +141,7 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G return false; } else { - mProductionModifier++; - Logger.INFO("tryConsumePyrotheum Fluid. "+(int) this.mProductionModifier); + mProductionModifier++; } } else { @@ -151,344 +150,14 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G return false; } else { - mProductionModifier++; - Logger.INFO("tryConsumeCryotheum Fluid. "+(int) this.mProductionModifier); + mProductionModifier++; } } for (int i = 0; i < 5; i++) { - //We assume this drill head is in a supported location at Y 5 or less. It should also be touching bedrock. - ItemStack[] aOutputs = new ItemStack[] { - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().COPPER.getOre(1), - ELEMENT.getInstance().COPPER.getOre(1), - ELEMENT.getInstance().COPPER.getOre(1), - ELEMENT.getInstance().COPPER.getOre(1), - ELEMENT.getInstance().COPPER.getOre(1), - ELEMENT.getInstance().COPPER.getOre(1), - ELEMENT.getInstance().COPPER.getOre(1), - ELEMENT.getInstance().COPPER.getOre(1), - ELEMENT.getInstance().COPPER.getOre(1), - ELEMENT.getInstance().COPPER.getOre(1), - ELEMENT.getInstance().COPPER.getOre(1), - ELEMENT.getInstance().COPPER.getOre(1), - ELEMENT.getInstance().COPPER.getOre(1), - ELEMENT.getInstance().GOLD.getOre(1), - ELEMENT.getInstance().GOLD.getOre(1), - ELEMENT.getInstance().GOLD.getOre(1), - ELEMENT.getInstance().GOLD.getOre(1), - ELEMENT.getInstance().GOLD.getOre(1), - ELEMENT.getInstance().GOLD.getOre(1), - ELEMENT.getInstance().GOLD.getOre(1), - ELEMENT.getInstance().SILVER.getOre(1), - ELEMENT.getInstance().SILVER.getOre(1), - ELEMENT.getInstance().SILVER.getOre(1), - ELEMENT.getInstance().SILVER.getOre(1), - ELEMENT.getInstance().ALUMINIUM.getOre(1), - ELEMENT.getInstance().ALUMINIUM.getOre(1), - ELEMENT.getInstance().ALUMINIUM.getOre(1), - ELEMENT.getInstance().ALUMINIUM.getOre(1), - ELEMENT.getInstance().ALUMINIUM.getOre(1), - ELEMENT.getInstance().ALUMINIUM.getOre(1), - ELEMENT.getInstance().TIN.getOre(1), - ELEMENT.getInstance().TIN.getOre(1), - ELEMENT.getInstance().TIN.getOre(1), - ELEMENT.getInstance().TIN.getOre(1), - ELEMENT.getInstance().TIN.getOre(1), - ELEMENT.getInstance().TIN.getOre(1), - ELEMENT.getInstance().TIN.getOre(1), - ELEMENT.getInstance().ZINC.getOre(1), - ELEMENT.getInstance().ZINC.getOre(1), - ELEMENT.getInstance().ZINC.getOre(1), - ELEMENT.getInstance().ZINC.getOre(1), - ELEMENT.getInstance().NICKEL.getOre(1), - ELEMENT.getInstance().NICKEL.getOre(1), - ELEMENT.getInstance().NICKEL.getOre(1), - ELEMENT.getInstance().NICKEL.getOre(1), - ItemUtils.getItemStackOfAmountFromOreDict("oreBauxite", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreBauxite", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreBauxite", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreRuby", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreRuby", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreRuby", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreSapphire", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreSapphire", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreSapphire", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreThorium", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreThorium", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreTungstate", 1), - ELEMENT.STANDALONE.RUNITE.getOre(1), - ELEMENT.STANDALONE.GRANITE.getOre(1), - ORES.AGARDITE_CD.getOre(1), - ORES.ALBURNITE.getOre(1), - ORES.CERITE.getOre(1), - ORES.FLUORCAPHITE.getOre(1), - ORES.HIBONITE.getOre(1), - ORES.MIESSIITE.getOre(1), - ORES.ZIMBABWEITE.getOre(1), - ORES.SAMARSKITE_YB.getOre(1), - }; - - int aChance = MathUtils.randInt(0, 10000); - if (aChance <= 100) { - ItemStack aChance1 = ItemUtils.getSimpleStack(aOutputs[MathUtils.randInt(0, aOutputs.length-1)], MathUtils.randInt(0, 3)); - if (ItemUtils.checkForInvalidItems(aChance1)) { - this.addOutput(aChance1); - } - ItemStack aChance2 = ItemUtils.getSimpleStack(aOutputs[MathUtils.randInt(0, aOutputs.length-1)], MathUtils.randInt(0, 3)); - if (ItemUtils.checkForInvalidItems(aChance2)) { - this.addOutput(aChance2); - } - ItemStack aChance3 = ItemUtils.getSimpleStack(aOutputs[MathUtils.randInt(0, aOutputs.length-1)], MathUtils.randInt(0, 3)); - if (ItemUtils.checkForInvalidItems(aChance3)) { - this.addOutput(aChance3); - } - Logger.INFO("Tried to add some loot to DEDP."); - } - didWork[i] = true; - + process(); + didWork[i] = true; } - - - - /*final int oldYHead = this.yHead[0]; - if (!this.checkPipesAndSetYHead() || !this.isEnergyEnough()) { - this.stopMachine(); - return false; - } - if (this.yHead[0] != oldYHead) { - this.oreBlockPositions.clear(); - } - - for (int g = 0; g < 5; g++) { - if (this.isPickingPipes[g]) { - if (this.tryPickPipe(g)) { - this.mOutputItems = new ItemStack[] { GT_Utility.copyAmount(1L, - new Object[] { GregtechMetaTileEntity_BedrockMiningPlatformBase.miningPipe }) }; - didWork[g] = true; - continue; - } - this.isPickingPipes[g] = false; - this.stopMachine(); - didWork[g] = false; - } - else { - this.putMiningPipesFromInputsInController(); - - if (!this.tryConsumeDrillingFluid()) { - Logger.INFO("No drilling Fluid."); - return false; - } - - if (this.mRuntime % 2 == 0) { - if (!this.tryConsumePyrotheum()) { - Logger.INFO("No tryConsumePyrotheum Fluid."); - return false; - } - else { - Logger.INFO("tryConsumePyrotheum Fluid."); - } - } - else { - if (!this.tryConsumeCryotheum()) { - Logger.INFO("No tryConsumeCryotheum Fluid."); - return false; - } - else { - Logger.INFO("tryConsumeCryotheum Fluid."); - } - } - - - if (this.oreBlockPositions.isEmpty()) { - // Hit bedrock Either retract pipe or Dig! - if (!this.tryLowerPipe(g)) { - // Mining Head is too high, we best retract. - if (!mMiningHeads.isEmpty() && mMiningHeads.containsKey(g) && mMiningHeads.get(g).yPos >= 6) { - for (int r = 0; r < 5; r++) { - this.isPickingPipes[r] = true; - } - didWork[g] = this.isPickingPipes[g]; - } - // Full Power! - else { - - //We assume this drill head is in a supported location at Y 5 or less. It should also be touching bedrock. - ItemStack[] aOutputs = new ItemStack[] { - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().IRON.getOre(1), - ELEMENT.getInstance().COPPER.getOre(1), - ELEMENT.getInstance().COPPER.getOre(1), - ELEMENT.getInstance().COPPER.getOre(1), - ELEMENT.getInstance().COPPER.getOre(1), - ELEMENT.getInstance().COPPER.getOre(1), - ELEMENT.getInstance().COPPER.getOre(1), - ELEMENT.getInstance().COPPER.getOre(1), - ELEMENT.getInstance().COPPER.getOre(1), - ELEMENT.getInstance().COPPER.getOre(1), - ELEMENT.getInstance().COPPER.getOre(1), - ELEMENT.getInstance().COPPER.getOre(1), - ELEMENT.getInstance().COPPER.getOre(1), - ELEMENT.getInstance().COPPER.getOre(1), - ELEMENT.getInstance().GOLD.getOre(1), - ELEMENT.getInstance().GOLD.getOre(1), - ELEMENT.getInstance().GOLD.getOre(1), - ELEMENT.getInstance().GOLD.getOre(1), - ELEMENT.getInstance().GOLD.getOre(1), - ELEMENT.getInstance().GOLD.getOre(1), - ELEMENT.getInstance().GOLD.getOre(1), - ELEMENT.getInstance().SILVER.getOre(1), - ELEMENT.getInstance().SILVER.getOre(1), - ELEMENT.getInstance().SILVER.getOre(1), - ELEMENT.getInstance().SILVER.getOre(1), - ELEMENT.getInstance().ALUMINIUM.getOre(1), - ELEMENT.getInstance().ALUMINIUM.getOre(1), - ELEMENT.getInstance().ALUMINIUM.getOre(1), - ELEMENT.getInstance().ALUMINIUM.getOre(1), - ELEMENT.getInstance().ALUMINIUM.getOre(1), - ELEMENT.getInstance().ALUMINIUM.getOre(1), - ELEMENT.getInstance().TIN.getOre(1), - ELEMENT.getInstance().TIN.getOre(1), - ELEMENT.getInstance().TIN.getOre(1), - ELEMENT.getInstance().TIN.getOre(1), - ELEMENT.getInstance().TIN.getOre(1), - ELEMENT.getInstance().TIN.getOre(1), - ELEMENT.getInstance().TIN.getOre(1), - ELEMENT.getInstance().ZINC.getOre(1), - ELEMENT.getInstance().ZINC.getOre(1), - ELEMENT.getInstance().ZINC.getOre(1), - ELEMENT.getInstance().ZINC.getOre(1), - ELEMENT.getInstance().NICKEL.getOre(1), - ELEMENT.getInstance().NICKEL.getOre(1), - ELEMENT.getInstance().NICKEL.getOre(1), - ELEMENT.getInstance().NICKEL.getOre(1), - ItemUtils.getItemStackOfAmountFromOreDict("oreBauxite", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreBauxite", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreBauxite", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreRuby", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreRuby", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreRuby", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreSapphire", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreSapphire", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreSapphire", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreThorium", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreThorium", 1), - ItemUtils.getItemStackOfAmountFromOreDict("oreTungstate", 1), - ELEMENT.STANDALONE.RUNITE.getOre(1), - ELEMENT.STANDALONE.GRANITE.getOre(1), - ORES.AGARDITE_CD.getOre(1), - ORES.ALBURNITE.getOre(1), - ORES.CERITE.getOre(1), - ORES.FLUORCAPHITE.getOre(1), - ORES.HIBONITE.getOre(1), - ORES.MIESSIITE.getOre(1), - ORES.ZIMBABWEITE.getOre(1), - ORES.SAMARSKITE_YB.getOre(1), - }; - - int aChance = MathUtils.randInt(0, 10000); - if (aChance <= 100) { - ItemStack aChance1 = ItemUtils.getSimpleStack(aOutputs[MathUtils.randInt(0, aOutputs.length-1)], MathUtils.randInt(0, 3)); - if (ItemUtils.checkForInvalidItems(aChance1)) { - this.addOutput(aChance1); - } - ItemStack aChance2 = ItemUtils.getSimpleStack(aOutputs[MathUtils.randInt(0, aOutputs.length-1)], MathUtils.randInt(0, 3)); - if (ItemUtils.checkForInvalidItems(aChance2)) { - this.addOutput(aChance2); - } - ItemStack aChance3 = ItemUtils.getSimpleStack(aOutputs[MathUtils.randInt(0, aOutputs.length-1)], MathUtils.randInt(0, 3)); - if (ItemUtils.checkForInvalidItems(aChance3)) { - this.addOutput(aChance3); - } - } - didWork[g] = true; - } - } - } - else { - didWork[g] = true; - } - } - }*/ // Fail recipe handling if one pipe didn't handle properly, to try again // next run. @@ -500,12 +169,9 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G } this.mEUt = 8000; - this.mMaxProgresstime = 10; + this.mMaxProgresstime = 1; this.mEfficiencyIncrease = 10000; - //this.mProgresstime = (this.mMaxProgresstime > this.mProgresstime ? this.mProgresstime + 1 : 0); - updateSlots(); - Logger.INFO("[Bedrock Miner] Success? [x]"); return true; } @@ -547,13 +213,15 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G private void setElectricityStats() { //this.mEfficiency = this.getCurrentEfficiency((ItemStack) null); this.mEfficiencyIncrease = 10000; - final int overclock = 1 << GT_Utility.getTier(this.getMaxInputVoltage()) - 1; - this.mEUt = -12 * overclock * overclock; + final int overclock = 8 << GT_Utility.getTier(this.getMaxInputVoltage()); + //this.mEUt = -12 * overclock * overclock; + Logger.INFO("Trying to set EU to "+(12 * overclock * overclock)); int mCombinedAvgTime = 0; for (int g = 0; g < 5; g++) { mCombinedAvgTime += (this.isPickingPipes[g] ? 80 : this.getBaseProgressTime()) / overclock; } - this.mMaxProgresstime = (mCombinedAvgTime / 5); + Logger.INFO("Trying to set Max Time to "+(mCombinedAvgTime)); + //this.mMaxProgresstime = (mCombinedAvgTime / 5); } /* @@ -979,4 +647,288 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G miningPipeBlock = ModBlocks.blockFakeMiningPipe; miningPipeTipBlock = ModBlocks.blockFakeMiningHead; } + + + + + + + + + + + + + + + + + + + + + + + + + + private AutoMap mOutputs; + + public void process() { + ItemStack aOutput = generateOutputWithchance(); + if (aOutput != null) { + this.addOutput(aOutput); + Logger.INFO("Mined some "+aOutput.getDisplayName()); + } + this.updateSlots(); + } + + public ItemStack generateOutputWithchance() { + int aChance = MathUtils.randInt(0, 7500); + if (aChance < 100) { + return generateOutput(); + } + else { + return null; + } + } + + public ItemStack generateOutput() { + AutoMap aData = generateOreForOutput(); + int aMax = aData.size()-1; + return aData.get(MathUtils.randInt(0, aMax)); + } + + /** + * Here we generate valid ores and also a basic loot set + */ + + public AutoMap generateOreForOutput() { + + if (mOutputs != null) { + return mOutputs; + } + + AutoMap aOverWorldOres = MiningUtils.getOresForDim(0); + AutoMap aNetherOres = MiningUtils.getOresForDim(-1); + AutoMap aEndOres = MiningUtils.getOresForDim(1); + + AutoMap aTempMap = new AutoMap(); + Block tOreBlock = GregTech_API.sBlockOres1; + Logger.INFO("Ore Map contains "+aTempMap.size()+" values. [Initial]"); + + for (GT_Worldgen_GT_Ore_Layer layer : aOverWorldOres) { + if (layer.mEnabled) { + ItemStack aTempOreStack1 = ItemUtils.simpleMetaStack(tOreBlock, layer.mPrimaryMeta, 1); + ItemStack aTempOreStack2 = ItemUtils.simpleMetaStack(tOreBlock, layer.mSecondaryMeta, 1); + ItemStack aTempOreStack3 = ItemUtils.simpleMetaStack(tOreBlock, layer.mBetweenMeta, 1); + ItemStack aTempOreStack4 = ItemUtils.simpleMetaStack(tOreBlock, layer.mSporadicMeta, 1); + aTempMap.put(aTempOreStack1); + aTempMap.put(aTempOreStack2); + aTempMap.put(aTempOreStack3); + aTempMap.put(aTempOreStack4); + aTempMap.put(aTempOreStack1); + aTempMap.put(aTempOreStack2); + aTempMap.put(aTempOreStack3); + aTempMap.put(aTempOreStack4); + aTempMap.put(aTempOreStack1); + aTempMap.put(aTempOreStack2); + aTempMap.put(aTempOreStack3); + aTempMap.put(aTempOreStack4); + } + } + Logger.INFO("Ore Map contains "+aTempMap.size()+" values. [Overworld]"); + for (GT_Worldgen_GT_Ore_Layer layer : aNetherOres) { + if (layer.mEnabled) { + ItemStack aTempOreStack1 = ItemUtils.simpleMetaStack(tOreBlock, layer.mPrimaryMeta, 1); + ItemStack aTempOreStack2 = ItemUtils.simpleMetaStack(tOreBlock, layer.mSecondaryMeta, 1); + ItemStack aTempOreStack3 = ItemUtils.simpleMetaStack(tOreBlock, layer.mBetweenMeta, 1); + ItemStack aTempOreStack4 = ItemUtils.simpleMetaStack(tOreBlock, layer.mSporadicMeta, 1); + aTempMap.put(aTempOreStack1); + aTempMap.put(aTempOreStack2); + aTempMap.put(aTempOreStack3); + aTempMap.put(aTempOreStack4); + aTempMap.put(aTempOreStack1); + aTempMap.put(aTempOreStack2); + aTempMap.put(aTempOreStack3); + aTempMap.put(aTempOreStack4); + } + } + Logger.INFO("Ore Map contains "+aTempMap.size()+" values. [Nether]"); + for (GT_Worldgen_GT_Ore_Layer layer : aEndOres) { + if (layer.mEnabled) { + ItemStack aTempOreStack1 = ItemUtils.simpleMetaStack(tOreBlock, layer.mPrimaryMeta, 1); + ItemStack aTempOreStack2 = ItemUtils.simpleMetaStack(tOreBlock, layer.mSecondaryMeta, 1); + ItemStack aTempOreStack3 = ItemUtils.simpleMetaStack(tOreBlock, layer.mBetweenMeta, 1); + ItemStack aTempOreStack4 = ItemUtils.simpleMetaStack(tOreBlock, layer.mSporadicMeta, 1); + aTempMap.put(aTempOreStack1); + aTempMap.put(aTempOreStack2); + aTempMap.put(aTempOreStack3); + aTempMap.put(aTempOreStack4); + } + } + Logger.INFO("Ore Map contains "+aTempMap.size()+" values. [End]"); + + addOreTypeToMap(ELEMENT.getInstance().IRON, 200, aTempMap); + addOreTypeToMap(ELEMENT.getInstance().COPPER, 175, aTempMap); + addOreTypeToMap(ELEMENT.getInstance().TIN, 150, aTempMap); + addOreTypeToMap(ELEMENT.getInstance().GOLD, 150, aTempMap); + addOreTypeToMap(ELEMENT.getInstance().SILVER, 110, aTempMap); + addOreTypeToMap(ELEMENT.getInstance().NICKEL, 40, aTempMap); + addOreTypeToMap(ELEMENT.getInstance().ZINC, 40, aTempMap); + addOreTypeToMap(ELEMENT.getInstance().LEAD, 40, aTempMap); + addOreTypeToMap(ELEMENT.getInstance().ALUMINIUM, 30, aTempMap); + addOreTypeToMap(ELEMENT.getInstance().THORIUM, 20, aTempMap); + Logger.INFO("Ore Map contains "+aTempMap.size()+" values. [Extra Common Ores]"); + + AutoMap> mMixedOreData = new AutoMap>(); + mMixedOreData.put(new Pair("oreRuby", 30)); + mMixedOreData.put(new Pair("oreSapphire", 25)); + mMixedOreData.put(new Pair("oreEmerald", 25)); + mMixedOreData.put(new Pair("oreLapis", 40)); + mMixedOreData.put(new Pair("oreRedstone", 40)); + + if (LoadedMods.Thaumcraft || (OreDictionary.doesOreNameExist("oreAmber") && OreDictionary.doesOreNameExist("oreCinnabar"))) { + mMixedOreData.put(new Pair("oreAmber", 20)); + mMixedOreData.put(new Pair("oreCinnabar", 20)); + } + if (LoadedMods.Railcraft || OreDictionary.doesOreNameExist("oreSaltpeter")) { + mMixedOreData.put(new Pair("oreSaltpeter", 10)); + } + if (LoadedMods.IndustrialCraft2 || OreDictionary.doesOreNameExist("oreUranium")) { + mMixedOreData.put(new Pair("oreUranium", 10)); + } + if (OreDictionary.doesOreNameExist("oreSulfur")) { + mMixedOreData.put(new Pair("oreSulfur", 15)); + } + if (OreDictionary.doesOreNameExist("oreSilicon")) { + mMixedOreData.put(new Pair("oreSilicon", 15)); + } + if (OreDictionary.doesOreNameExist("oreApatite")) { + mMixedOreData.put(new Pair("oreApatite", 25)); + } + + mMixedOreData.put(new Pair("oreFirestone", 2)); + mMixedOreData.put(new Pair("oreBismuth", 20)); + mMixedOreData.put(new Pair("oreLithium", 20)); + mMixedOreData.put(new Pair("oreManganese", 20)); + mMixedOreData.put(new Pair("oreBeryllium", 20)); + mMixedOreData.put(new Pair("oreCoal", 75)); + mMixedOreData.put(new Pair("oreLignite", 75)); + mMixedOreData.put(new Pair("oreSalt", 15)); + mMixedOreData.put(new Pair("oreCalcite", 15)); + mMixedOreData.put(new Pair("oreBauxite", 20)); + mMixedOreData.put(new Pair("oreAlmandine", 15)); + mMixedOreData.put(new Pair("oreGraphite", 25)); + mMixedOreData.put(new Pair("oreGlauconite", 15)); + mMixedOreData.put(new Pair("orePyrolusite", 15)); + mMixedOreData.put(new Pair("oreGrossular", 15)); + mMixedOreData.put(new Pair("oreTantalite", 15)); + + for (Pair g : mMixedOreData) { + for (int i=0; i aMyOreMaterials = new AutoMap(); + aMyOreMaterials.add(ORES.CROCROITE); + aMyOreMaterials.add(ORES.GEIKIELITE); + aMyOreMaterials.add(ORES.NICHROMITE); + aMyOreMaterials.add(ORES.TITANITE); + aMyOreMaterials.add(ORES.ZIMBABWEITE); + aMyOreMaterials.add(ORES.ZIRCONILITE); + aMyOreMaterials.add(ORES.GADOLINITE_CE); + aMyOreMaterials.add(ORES.GADOLINITE_Y); + aMyOreMaterials.add(ORES.LEPERSONNITE); + aMyOreMaterials.add(ORES.SAMARSKITE_Y); + aMyOreMaterials.add(ORES.SAMARSKITE_YB); + aMyOreMaterials.add(ORES.XENOTIME); + aMyOreMaterials.add(ORES.YTTRIAITE); + aMyOreMaterials.add(ORES.YTTRIALITE); + aMyOreMaterials.add(ORES.YTTROCERITE); + aMyOreMaterials.add(ORES.ZIRCON); + aMyOreMaterials.add(ORES.POLYCRASE); + aMyOreMaterials.add(ORES.ZIRCOPHYLLITE); + aMyOreMaterials.add(ORES.ZIRKELITE); + aMyOreMaterials.add(ORES.LANTHANITE_LA); + aMyOreMaterials.add(ORES.LANTHANITE_CE); + aMyOreMaterials.add(ORES.LANTHANITE_ND); + aMyOreMaterials.add(ORES.AGARDITE_Y); + aMyOreMaterials.add(ORES.AGARDITE_CD); + aMyOreMaterials.add(ORES.AGARDITE_LA); + aMyOreMaterials.add(ORES.AGARDITE_ND); + aMyOreMaterials.add(ORES.HIBONITE); + aMyOreMaterials.add(ORES.CERITE); + aMyOreMaterials.add(ORES.FLUORCAPHITE); + aMyOreMaterials.add(ORES.FLORENCITE); + aMyOreMaterials.add(ORES.CRYOLITE); + aMyOreMaterials.add(ORES.LAUTARITE); + aMyOreMaterials.add(ORES.LAFOSSAITE); + aMyOreMaterials.add(ORES.DEMICHELEITE_BR); + aMyOreMaterials.add(ORES.COMANCHEITE); + aMyOreMaterials.add(ORES.PERROUDITE); + aMyOreMaterials.add(ORES.HONEAITE); + aMyOreMaterials.add(ORES.ALBURNITE); + aMyOreMaterials.add(ORES.MIESSIITE); + aMyOreMaterials.add(ORES.KASHINITE); + aMyOreMaterials.add(ORES.IRARSITE); + aMyOreMaterials.add(ORES.RADIOBARITE); + aMyOreMaterials.add(ORES.DEEP_EARTH_REACTOR_FUEL_DEPOSIT); + + for (Material aOreType : aMyOreMaterials) { + if (aOreType == ORES.DEEP_EARTH_REACTOR_FUEL_DEPOSIT || aOreType == ORES.RADIOBARITE) { + addOreTypeToMap(aOreType, 4, aTempMap); + } + else { + addOreTypeToMap(aOreType, 7, aTempMap); + } + } + + //Cleanup Map + Logger.INFO("Ore Map contains "+aTempMap.size()+" values. [GT++]"); + AutoMap aCleanUp = new AutoMap(); + for (ItemStack verify : aTempMap) { + if (!ItemUtils.checkForInvalidItems(verify)) { + aCleanUp.put(verify); + } + } + Logger.INFO("Cleanup Map contains "+aCleanUp.size()+" values."); + for (ItemStack remove : aCleanUp) { + aTempMap.remove(remove); + } + + //Generate Massive Map + AutoMap aFinalMap = new AutoMap(); + for (ItemStack aTempItem : aTempMap) { + int aTempMulti = MathUtils.randInt(20, 50); + for (int i=0;i aMap) { + for (int i=0; i