diff options
-rw-r--r-- | patch.diff | 3087 |
1 files changed, 0 insertions, 3087 deletions
diff --git a/patch.diff b/patch.diff deleted file mode 100644 index db06287d97..0000000000 --- a/patch.diff +++ /dev/null @@ -1,3087 +0,0 @@ -From 9c09b6ebe1bfbef3d694b98b5e8c00f4fb37142e Mon Sep 17 00:00:00 2001 -From: Dream-Master <dream-master@gmx.net> -Date: Sat, 7 Oct 2017 22:49:34 +0200 -Subject: [PATCH] cherry pick Commit: f5abfcefe8d77e2c3c6284bff72de25c0a0ef774 - [f5abfce] - -The right method to find out whether the machine should break the block. ---- - .../common/tileentities/machines/basic/GT_MetaTileEntity_Pump.java | 2 +- - .../machines/multi/GT_MetaTileEntity_ConcreteBackfillerBase.java | 3 +-- - 2 files changed, 2 insertions(+), 3 deletions(-) - -diff --git a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Pump.java b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Pump.java -index cec1c5a..3bc1045 100644 ---- a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Pump.java -+++ b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Pump.java -@@ -201,7 +201,7 @@ public class GT_MetaTileEntity_Pump extends GT_MetaTileEntity_Hatch { - if (yHead <= 0) { - return false; - } -- if ((!consumeFluid(getBaseMetaTileEntity().getXCoord(), yHead - 1, getBaseMetaTileEntity().getZCoord())) && (!getBaseMetaTileEntity().getAir(getBaseMetaTileEntity().getXCoord(), yHead - 1, getBaseMetaTileEntity().getZCoord()))) { -+ if ((!consumeFluid(getBaseMetaTileEntity().getXCoord(), yHead - 1, getBaseMetaTileEntity().getZCoord())) && (!getBaseMetaTileEntity().getBlock(getBaseMetaTileEntity().getXCoord(), yHead - 1, getBaseMetaTileEntity().getZCoord()).isAir(getBaseMetaTileEntity().getWorld(), getBaseMetaTileEntity().getXCoord(), yHead - 1, getBaseMetaTileEntity().getZCoord()))) { - - return false; - } -diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_ConcreteBackfillerBase.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_ConcreteBackfillerBase.java -index 3fa1a98..3f44900 100644 ---- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_ConcreteBackfillerBase.java -+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_ConcreteBackfillerBase.java -@@ -92,8 +92,7 @@ public abstract class GT_MetaTileEntity_ConcreteBackfillerBase extends GT_MetaTi - - private boolean isRefillableBlock(int aX, int aY, int aZ){ - IGregTechTileEntity aBaseTile = getBaseMetaTileEntity(); -- if (aBaseTile.getTileEntity(aX, aY, aZ) != null) return false; -- if (!aBaseTile.getAir(aX, aY, aZ) && aBaseTile.getBlock(aX, aY, aZ).getMaterial().isSolid()) return false; -+ if (!aBaseTile.getBlock(aX, aY, aZ).isAir(aBaseTile.getWorld(), aX, aY, aZ) || aBaseTile.getBlock(aX, aY, aZ).getMaterial().isSolid()) return false; - if (!GT_Utility.setBlockByFakePlayer(getFakePlayer(aBaseTile), aX, aY, aZ, GregTech_API.sBlockConcretes, 8, true)) return false; - return true; - } --- -1.9.5.msysgit.0 - -From 74199106670216396a0d2a9c9892969b13930e3e Mon Sep 17 00:00:00 2001 -From: Dream-Master <dream-master@gmx.net> -Date: Tue, 12 Sep 2017 23:18:27 +0200 -Subject: [PATCH] cherry pick bd305c45b038819de2a0e61166da7344dbc770c7 - 69d557908f447be138102676309e48e5f95b32b9 - -Fix localization of Item Distributor #1211 -https://github.com/Blood-Asp/GT5-Unofficial/pull/1211 ---- - src/main/java/gregtech/api/util/GT_LanguageManager.java | 1 + - .../tileentities/automation/GT_MetaTileEntity_ItemDistributor.java | 2 +- - 2 files changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/main/java/gregtech/api/util/GT_LanguageManager.java b/src/main/java/gregtech/api/util/GT_LanguageManager.java -index 58e6d91..b2d977e 100644 ---- a/src/main/java/gregtech/api/util/GT_LanguageManager.java -+++ b/src/main/java/gregtech/api/util/GT_LanguageManager.java -@@ -316,6 +316,7 @@ public class GT_LanguageManager { - // addStringLocalization("Interaction_DESCRIPTION_Index_208", "Grab"); - // addStringLocalization("Interaction_DESCRIPTION_Index_209", "Grab"); - // addStringLocalization("Interaction_DESCRIPTION_Index_210", "Grab"); -+ addStringLocalization("Interaction_DESCRIPTION_Index_211", "Items per side: "); - - } - -diff --git a/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_ItemDistributor.java b/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_ItemDistributor.java -index 8239dc1..5fa3bc8 100644 ---- a/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_ItemDistributor.java -+++ b/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_ItemDistributor.java -@@ -153,7 +153,7 @@ public class GT_MetaTileEntity_ItemDistributor extends GT_MetaTileEntity_Buffer - //Adjust items per side by 1 or -1, constrained to the cyclic interval [0, 127] - itemsPerSide[aSide] += aPlayer.isSneaking() ? -1 : 1; - itemsPerSide[aSide] = (byte) ((itemsPerSide[aSide] + 128) % 128); -- GT_Utility.sendChatToPlayer(aPlayer, trans("110", "Items per side: " + itemsPerSide[aSide])); -+ GT_Utility.sendChatToPlayer(aPlayer, trans("211", "Items per side: ") + itemsPerSide[aSide]); - } - - @Override --- -1.9.5.msysgit.0 - -From 9956fee4454bc9ec54f5a0ed04e37d6589cbaf19 Mon Sep 17 00:00:00 2001 -From: Dream-Master <dream-master@gmx.net> -Date: Tue, 12 Sep 2017 23:16:04 +0200 -Subject: [PATCH] cherry pick - -dae15665ccb54a0a8d6a76ffcc7d48eae0abec15 - -Odp speed improving #1209 -https://github.com/Blood-Asp/GT5-Unofficial/pull/1209 ---- - .../multi/GT_MetaTileEntity_OreDrillingPlant1.java | 8 +- - .../multi/GT_MetaTileEntity_OreDrillingPlant2.java | 7 +- - .../multi/GT_MetaTileEntity_OreDrillingPlant3.java | 7 +- - .../multi/GT_MetaTileEntity_OreDrillingPlant4.java | 8 +- - .../GT_MetaTileEntity_OreDrillingPlantBase.java | 287 ++++++++++++++++++--- - 5 files changed, 274 insertions(+), 43 deletions(-) - -diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlant1.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlant1.java -index 8d1f683..bd1c079 100644 ---- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlant1.java -+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlant1.java -@@ -1,4 +1,3 @@ -- - package gregtech.common.tileentities.machines.multi; - - import gregtech.api.enums.ItemList; -@@ -49,4 +48,9 @@ public class GT_MetaTileEntity_OreDrillingPlant1 extends GT_MetaTileEntity_OreDr - protected int getMinTier() { - return 2; - } --} -+ -+ @Override -+ protected int getBaseProgressTime() { -+ return 960; -+ } -+} -\ No newline at end of file -diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlant2.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlant2.java -index 2b161fe..272ea64 100644 ---- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlant2.java -+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlant2.java -@@ -48,4 +48,9 @@ public class GT_MetaTileEntity_OreDrillingPlant2 extends GT_MetaTileEntity_OreDr - protected int getMinTier() { - return 3; - } --} -+ -+ @Override -+ protected int getBaseProgressTime() { -+ return 800; -+ } -+} -\ No newline at end of file -diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlant3.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlant3.java -index 1be6391..f89c578 100644 ---- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlant3.java -+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlant3.java -@@ -48,4 +48,9 @@ public class GT_MetaTileEntity_OreDrillingPlant3 extends GT_MetaTileEntity_OreDr - protected int getMinTier() { - return 4; - } --} -+ -+ @Override -+ protected int getBaseProgressTime() { -+ return 640; -+ } -+} -\ No newline at end of file -diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlant4.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlant4.java -index 2488bc1..4059735 100644 ---- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlant4.java -+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlant4.java -@@ -1,4 +1,3 @@ -- - package gregtech.common.tileentities.machines.multi; - - import gregtech.api.enums.ItemList; -@@ -49,4 +48,9 @@ public class GT_MetaTileEntity_OreDrillingPlant4 extends GT_MetaTileEntity_OreDr - protected int getMinTier() { - return 5; - } --} -+ -+ @Override -+ protected int getBaseProgressTime() { -+ return 480; -+ } -+} -\ No newline at end of file -diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlantBase.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlantBase.java -index c34d8b0..a227ab7 100644 ---- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlantBase.java -+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlantBase.java -@@ -1,16 +1,18 @@ - package gregtech.common.tileentities.machines.multi; - --import static gregtech.api.enums.GT_Values.V; --import static gregtech.api.enums.GT_Values.VN; -- --import java.util.ArrayList; -- -+import gregtech.api.GregTech_API; - import gregtech.api.enums.ItemList; - import gregtech.api.enums.Materials; - import gregtech.api.enums.OrePrefixes; -+import gregtech.api.enums.Textures; - import gregtech.api.gui.GT_GUIContainer_MultiMachine; -+import gregtech.api.interfaces.ITexture; - import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Energy; -+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; -+import gregtech.api.objects.GT_RenderedTexture; - import gregtech.api.objects.ItemData; -+import gregtech.api.util.GT_ModHandler; - import gregtech.api.util.GT_OreDictUnificator; - import gregtech.api.util.GT_Recipe; - import gregtech.api.util.GT_Utility; -@@ -20,40 +22,106 @@ import net.minecraft.block.Block; - import net.minecraft.entity.player.InventoryPlayer; - import net.minecraft.init.Blocks; - import net.minecraft.item.ItemStack; -+import net.minecraft.nbt.NBTTagCompound; - import net.minecraft.tileentity.TileEntity; - import net.minecraft.world.ChunkPosition; -+import net.minecraftforge.common.util.ForgeDirection; - import net.minecraftforge.fluids.FluidStack; - --public abstract class GT_MetaTileEntity_OreDrillingPlantBase extends GT_MetaTileEntity_DrillerBase { -+import java.util.ArrayList; -+ -+import static gregtech.api.enums.GT_Values.*; -+ -+public abstract class GT_MetaTileEntity_OreDrillingPlantBase extends GT_MetaTileEntity_MultiBlockBase { -+ private static final ItemStack miningPipe = GT_ModHandler.getIC2Item("miningPipe", 0); -+ private static final ItemStack miningPipeTip = GT_ModHandler.getIC2Item("miningPipeTip", 0); -+ private static final Block miningPipeBlock = GT_Utility.getBlockFromStack(miningPipe); -+ private static final Block miningPipeTipBlock = GT_Utility.getBlockFromStack(miningPipeTip); - - private final ArrayList<ChunkPosition> oreBlockPositions = new ArrayList<>(); - -+ private Block casingBlock; -+ private int casingMeta; -+ private int frameMeta; -+ private int casingTextureIndex; -+ -+ private ForgeDirection back; -+ private int xDrill, yDrill, zDrill, xCenter, zCenter, yHead; -+ -+ private boolean isPickingPipes; -+ - public GT_MetaTileEntity_OreDrillingPlantBase(int aID, String aName, String aNameRegional) { - super(aID, aName, aNameRegional); -+ initFields(); - } - - public GT_MetaTileEntity_OreDrillingPlantBase(String aName) { - super(aName); -+ initFields(); -+ } -+ -+ private void initFields() { -+ casingBlock = getCasingBlockItem().getBlock(); -+ casingMeta = getCasingBlockItem().get(0).getItemDamage(); -+ int frameId = 4096 + getFrameMaterial().mMetaItemSubID; -+ frameMeta = GregTech_API.METATILEENTITIES[frameId] != null ? GregTech_API.METATILEENTITIES[frameId].getTileEntityBaseType() : W; -+ casingTextureIndex = getCasingTextureIndex(); -+ isPickingPipes = false; -+ } -+ -+ public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex, boolean aActive, boolean aRedstone) { -+ if (aSide == aFacing) -+ return new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[casingTextureIndex],new GT_RenderedTexture(aActive ? Textures.BlockIcons.OVERLAY_FRONT_ORE_DRILL_ACTIVE : Textures.BlockIcons.OVERLAY_FRONT_ORE_DRILL)}; -+ return new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[casingTextureIndex]}; - } - -- @Override - public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) { - return new GT_GUIContainer_MultiMachine(aPlayerInventory, aBaseMetaTileEntity, getLocalName(), "OreDrillingPlant.png"); - } - - @Override -- protected boolean workingDownward(ItemStack aStack, int xDrill, int yDrill, int zDrill, int xPipe, int zPipe, int yHead, int oldYHead){ -+ public void saveNBTData(NBTTagCompound aNBT) { -+ super.saveNBTData(aNBT); -+ aNBT.setBoolean("isPickingPipes", isPickingPipes); -+ } -+ -+ @Override -+ public void loadNBTData(NBTTagCompound aNBT) { -+ super.loadNBTData(aNBT); -+ isPickingPipes = aNBT.getBoolean("isPickingPipes"); -+ } -+ -+ @Override -+ public boolean checkRecipe(ItemStack aStack) { -+ setElectricityStats(); -+ int oldYHead = yHead; -+ if (!checkPipesAndSetYHead() || !isEnergyEnough()) { -+ stopMachine(); -+ return false; -+ } - if (yHead != oldYHead) oreBlockPositions.clear(); -+ if (isPickingPipes) { -+ if (tryPickPipe()) { -+ mOutputItems = new ItemStack[] {GT_Utility.copyAmount(1, miningPipe)}; -+ return true; -+ } else { -+ isPickingPipes = false; -+ stopMachine(); -+ return false; -+ } -+ } - -- fillMineListIfEmpty(xDrill, yDrill, zDrill, xPipe, zPipe, yHead); -+ putMiningPipesFromInputsInController(); -+ if (!tryConsumeDrillingFluid()) return false; -+ -+ fillMineListIfEmpty(); - if (oreBlockPositions.isEmpty()) { - if (!tryLowerPipe()) { -- if (waitForPipes()) return false; - isPickingPipes = true; - return true; - } - //new layer - fill again -- fillMineListIfEmpty(xDrill, yDrill, zDrill, xPipe, zPipe, yHead); -+ fillMineListIfEmpty(); - } - - ChunkPosition oreBlockPos = null; -@@ -64,7 +132,6 @@ public abstract class GT_MetaTileEntity_OreDrillingPlantBase extends GT_MetaTile - oreBlock = getBaseMetaTileEntity().getBlock(oreBlockPos.chunkPosX, oreBlockPos.chunkPosY, oreBlockPos.chunkPosZ); - } - -- if (!tryConsumeDrillingFluid()) return false; - if (oreBlock != null && oreBlock != Blocks.air) { - ArrayList<ItemStack> oreBlockDrops = getBlockDrops(oreBlock, oreBlockPos.chunkPosX, oreBlockPos.chunkPosY, oreBlockPos.chunkPosZ); - getBaseMetaTileEntity().getWorld().setBlockToAir(oreBlockPos.chunkPosX, oreBlockPos.chunkPosY, oreBlockPos.chunkPosZ); -@@ -74,29 +141,29 @@ public abstract class GT_MetaTileEntity_OreDrillingPlantBase extends GT_MetaTile - return true; - } - -- @Override -- protected boolean checkHatches(){ -- return !mMaintenanceHatches.isEmpty() && !mInputHatches.isEmpty() && !mOutputBusses.isEmpty() && !mEnergyHatches.isEmpty(); -+ private boolean isEnergyEnough() { -+ long requiredEnergy = 512 + getMaxInputVoltage() * 4; -+ for (GT_MetaTileEntity_Hatch_Energy energyHatch : mEnergyHatches) { -+ requiredEnergy -= energyHatch.getEUVar(); -+ if (requiredEnergy <= 0) return true; -+ } -+ return false; - } - -- @Override -- protected void setElectricityStats() { -+ private boolean tryPickPipe() { -+ if (yHead == yDrill) return false; -+ if (checkBlockAndMeta(xCenter, yHead + 1, zCenter, miningPipeBlock, W)) -+ getBaseMetaTileEntity().getWorld().setBlock(xCenter, yHead + 1, zCenter, miningPipeTipBlock); -+ getBaseMetaTileEntity().getWorld().setBlockToAir(xCenter, yHead, zCenter); -+ return true; -+ } -+ -+ private void setElectricityStats() { - this.mEfficiency = getCurrentEfficiency(null); - this.mEfficiencyIncrease = 10000; -- //T1 = 12; T2 = 48; T3 = 192; T4 = 768 -- this.mEUt = 3 * (1 << (getMinTier() << 1)); -- //T1 = 960; T2 = 480; T3 = 240; T4 = 120 -- this.mMaxProgresstime = (isPickingPipes ? 80 : 1920) / (1 << getMinTier()); -- -- long voltage = getMaxInputVoltage(); -- long overclockEu = V[Math.max(1, GT_Utility.getTier(voltage)) - 1]; -- while (this.mEUt <= overclockEu) { -- this.mEUt *= 4; -- this.mMaxProgresstime /= 2; -- } -- -- this.mEUt = -this.mEUt; -- this.mMaxProgresstime = Math.max(1, this.mMaxProgresstime); -+ int overclock = 1 << GT_Utility.getTier(getMaxInputVoltage()) - 1; -+ this.mEUt = -12 * overclock * overclock; -+ this.mMaxProgresstime = (isPickingPipes ? 80 : getBaseProgressTime()) / overclock; - } - - private ItemStack[] getOutputByDrops(ArrayList<ItemStack> oreBlockDrops) { -@@ -149,17 +216,37 @@ public abstract class GT_MetaTileEntity_OreDrillingPlantBase extends GT_MetaTile - } - - private boolean tryConsumeDrillingFluid() { -- if (!depleteInput(new FluidStack(ItemList.sDrillingFluid, 2000))) { -- mMaxProgresstime = 0; -- return false; -+ return depleteInput(new FluidStack(ItemList.sDrillingFluid, 2000)); -+ } -+ -+ private void putMiningPipesFromInputsInController() { -+ int maxPipes = miningPipe.getMaxStackSize(); -+ if (isHasMiningPipes(maxPipes)) return; -+ -+ ItemStack pipes = getStackInSlot(1); -+ for (ItemStack storedItem : getStoredInputs()) { -+ if (!storedItem.isItemEqual(miningPipe)) continue; -+ -+ if (pipes == null) { -+ setInventorySlotContents(1, GT_Utility.copy(miningPipe)); -+ pipes = getStackInSlot(1); -+ } -+ -+ if (pipes.stackSize == maxPipes) break; -+ -+ int needPipes = maxPipes - pipes.stackSize; -+ int transferPipes = storedItem.stackSize < needPipes ? storedItem.stackSize : needPipes; -+ -+ pipes.stackSize += transferPipes; -+ storedItem.stackSize -= transferPipes; - } -- return true; -+ updateSlots(); - } - -- private void fillMineListIfEmpty(int xDrill, int yDrill, int zDrill, int xPipe, int zPipe, int yHead) { -+ private void fillMineListIfEmpty() { - if (!oreBlockPositions.isEmpty()) return; - -- tryAddOreBlockToMineList(xPipe, yHead - 1, zPipe); -+ tryAddOreBlockToMineList(xCenter, yHead - 1, zCenter); - if (yHead == yDrill) return; //skip controller block layer - - int radius = getRadiusInChunks() << 4; -@@ -184,8 +271,134 @@ public abstract class GT_MetaTileEntity_OreDrillingPlantBase extends GT_MetaTile - } - } - -+ private boolean tryLowerPipe() { -+ if (!isHasMiningPipes()) return false; -+ -+ if (yHead <= 0) return false; -+ if (checkBlockAndMeta(xCenter, yHead - 1, zCenter, Blocks.bedrock, W)) return false; -+ -+ getBaseMetaTileEntity().getWorld().setBlock(xCenter, yHead - 1, zCenter, miningPipeTipBlock); -+ if (yHead != yDrill) getBaseMetaTileEntity().getWorld().setBlock(xCenter, yHead, zCenter, miningPipeBlock); -+ -+ getBaseMetaTileEntity().decrStackSize(1, 1); -+ return true; -+ } -+ -+ private boolean isHasMiningPipes() { -+ return isHasMiningPipes(1); -+ } -+ -+ private boolean isHasMiningPipes(int minCount) { -+ ItemStack pipe = getStackInSlot(1); -+ return pipe != null && pipe.stackSize > minCount - 1 && pipe.isItemEqual(miningPipe); -+ } -+ -+ @Override -+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) { -+ updateCoordinates(); -+ //check base layer -+ for (int xOff = -1 + back.offsetX; xOff <= 1 + back.offsetX; xOff++) { -+ for (int zOff = -1 + back.offsetZ; zOff <= 1 + back.offsetZ; zOff++) { -+ if (xOff == 0 && zOff == 0) continue; -+ -+ IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xOff, 0, zOff); -+ if (!checkCasingBlock(xOff, 0, zOff) -+ && !addMaintenanceToMachineList(tTileEntity, casingTextureIndex) -+ && !addInputToMachineList(tTileEntity, casingTextureIndex) -+ && !addOutputToMachineList(tTileEntity, casingTextureIndex) -+ && !addEnergyInputToMachineList(tTileEntity, casingTextureIndex)) -+ return false; -+ } -+ } -+ if (mMaintenanceHatches.isEmpty() || mInputHatches.isEmpty() || mOutputBusses.isEmpty() || mEnergyHatches.isEmpty()) return false; -+ if (GT_Utility.getTier(getMaxInputVoltage()) < getMinTier()) return false; -+ //check tower -+ for (int yOff = 1; yOff < 4; yOff++) { -+ if (!checkCasingBlock(back.offsetX, yOff, back.offsetZ) -+ || !checkFrameBlock(back.offsetX + 1, yOff, back.offsetZ) -+ || !checkFrameBlock(back.offsetX - 1, yOff, back.offsetZ) -+ || !checkFrameBlock(back.offsetX, yOff, back.offsetZ + 1) -+ || !checkFrameBlock(back.offsetX, yOff, back.offsetZ - 1) -+ || !checkFrameBlock(back.offsetX, yOff + 3, back.offsetZ)) -+ return false; -+ } -+ return true; -+ } -+ -+ private void updateCoordinates() { -+ xDrill = getBaseMetaTileEntity().getXCoord(); -+ yDrill = getBaseMetaTileEntity().getYCoord(); -+ zDrill = getBaseMetaTileEntity().getZCoord(); -+ back = ForgeDirection.getOrientation(getBaseMetaTileEntity().getBackFacing()); -+ xCenter = xDrill + back.offsetX; -+ zCenter = zDrill + back.offsetZ; -+ } -+ -+ private boolean checkPipesAndSetYHead() { -+ yHead = yDrill - 1; -+ while (checkBlockAndMeta(xCenter, yHead, zCenter, miningPipeBlock, W)) yHead--; //skip pipes -+ //is pipe tip OR is controller layer -+ if (checkBlockAndMeta(xCenter, yHead, zCenter, miningPipeTipBlock, W) || ++yHead == yDrill) return true; -+ //pipe column is broken - try fix -+ getBaseMetaTileEntity().getWorld().setBlock(xCenter, yHead, zCenter, miningPipeTipBlock); -+ return true; -+ } -+ -+ private boolean checkCasingBlock(int xOff, int yOff, int zOff) { -+ return checkBlockAndMetaOffset(xOff, yOff, zOff, casingBlock, casingMeta); -+ } -+ //meta of frame is getTileEntityBaseType; frame should be checked using its drops (possible a high weight operation) -+ private boolean checkFrameBlock(int xOff, int yOff, int zOff) { -+ return checkBlockAndMetaOffset(xOff, yOff, zOff, GregTech_API.sBlockMachines, frameMeta); -+ } -+ -+ private boolean checkBlockAndMetaOffset(int xOff, int yOff, int zOff, Block block, int meta) { -+ return checkBlockAndMeta(xDrill + xOff, yDrill + yOff, zDrill + zOff, block, meta); -+ } -+ -+ private boolean checkBlockAndMeta(int x, int y, int z, Block block, int meta) { -+ return (meta == W || getBaseMetaTileEntity().getMetaID(x, y, z) == meta) -+ && getBaseMetaTileEntity().getBlock(x, y, z) == block; -+ } -+ -+ @Override -+ public boolean isCorrectMachinePart(ItemStack aStack) { -+ return true; -+ } -+ -+ @Override -+ public int getMaxEfficiency(ItemStack aStack) { -+ return 10000; -+ } -+ -+ @Override -+ public int getPollutionPerTick(ItemStack aStack) { -+ return 0; -+ } -+ -+ @Override -+ public int getDamageToComponent(ItemStack aStack) { -+ return 0; -+ } -+ -+ @Override -+ public boolean explodesOnComponentBreak(ItemStack aStack) { -+ return false; -+ } -+ -+ protected abstract ItemList getCasingBlockItem(); -+ -+ protected abstract Materials getFrameMaterial(); -+ -+ protected abstract int getCasingTextureIndex(); -+ - protected abstract int getRadiusInChunks(); - -+ protected abstract int getMinTier(); -+ -+ //returns theoretical progress time for LV energy hatch -+ protected abstract int getBaseProgressTime(); -+ - protected String[] getDescriptionInternal(String tierSuffix) { - String casings = getCasingBlockItem().get(0).getDisplayName(); - return new String[]{ --- -1.9.5.msysgit.0 - -From a166a5bbd3a8d9809c2c3c3444451c2870a98cc7 Mon Sep 17 00:00:00 2001 -From: Dream-Master <dream-master@gmx.net> -Date: Tue, 12 Sep 2017 23:11:20 +0200 -Subject: [PATCH] cherry pick ded594c86c701a0ff1f2282b4d6bff9cc7b1b9f6 - c6d39f12fdf85edbeadc725e0b398fa70eb15bd0 - -Patched ME energy tunnel, now they can emit GT energy. #1200 -https://github.com/Blood-Asp/GT5-Unofficial/pull/1200 ---- - src/main/java/gregtech/GT_Mod.java | 1 + - .../loaders/postload/GT_AE2EnergyTunnelLoader.java | 27 +++++++ - .../gregtech/loaders/postload/PartP2PGTPower.java | 84 ++++++++++++++++++++++ - 3 files changed, 112 insertions(+) - create mode 100644 src/main/java/gregtech/loaders/postload/GT_AE2EnergyTunnelLoader.java - create mode 100644 src/main/java/gregtech/loaders/postload/PartP2PGTPower.java - -diff --git a/src/main/java/gregtech/GT_Mod.java b/src/main/java/gregtech/GT_Mod.java -index 939d03a..e1f9842 100644 ---- a/src/main/java/gregtech/GT_Mod.java -+++ b/src/main/java/gregtech/GT_Mod.java -@@ -625,6 +625,7 @@ public class GT_Mod implements IGT_Mod { - new GT_CropLoader().run(); - new GT_Worldgenloader().run(); - new GT_CoverLoader().run(); -+ new GT_AE2EnergyTunnelLoader().run(); - LoadArmorComponents.init(); - - GT_RecipeRegistrator.registerUsagesForMaterials(new ItemStack(Blocks.planks, 1), null, false); -diff --git a/src/main/java/gregtech/loaders/postload/GT_AE2EnergyTunnelLoader.java b/src/main/java/gregtech/loaders/postload/GT_AE2EnergyTunnelLoader.java -new file mode 100644 -index 0000000..a558696 ---- /dev/null -+++ b/src/main/java/gregtech/loaders/postload/GT_AE2EnergyTunnelLoader.java -@@ -0,0 +1,27 @@ -+package gregtech.loaders.postload; -+ -+import appeng.items.parts.PartType; -+import gregtech.GT_Mod; -+import gregtech.api.util.GT_Log; -+ -+import java.lang.reflect.Field; -+ -+public class GT_AE2EnergyTunnelLoader implements Runnable { -+ @Override -+ public void run() { -+ if (GT_Mod.gregtechproxy.mAE2Integration) { -+ try { -+ load(); -+ } catch (Throwable e) { -+ GT_Log.out.println("Failed to load P2P tunnel for GT electricity"); -+ e.printStackTrace(GT_Log.out); -+ } -+ } -+ } -+ -+ public void load() throws Throwable { -+ Field f = PartType.class.getDeclaredField("myPart"); -+ f.setAccessible(true); -+ f.set(PartType.P2PTunnelEU, PartP2PGTPower.class); -+ } -+} -diff --git a/src/main/java/gregtech/loaders/postload/PartP2PGTPower.java b/src/main/java/gregtech/loaders/postload/PartP2PGTPower.java -new file mode 100644 -index 0000000..30a3377 ---- /dev/null -+++ b/src/main/java/gregtech/loaders/postload/PartP2PGTPower.java -@@ -0,0 +1,84 @@ -+package gregtech.loaders.postload; -+ -+import appeng.api.networking.IGridNode; -+import appeng.api.networking.ticking.IGridTickable; -+import appeng.api.networking.ticking.TickRateModulation; -+import appeng.api.networking.ticking.TickingRequest; -+import appeng.parts.p2p.PartP2PIC2Power; -+import gregtech.api.interfaces.tileentity.IEnergyConnected; -+import gregtech.api.util.GT_Utility; -+import net.minecraft.item.ItemStack; -+import net.minecraft.tileentity.TileEntity; -+import net.minecraft.world.World; -+import net.minecraftforge.common.util.ForgeDirection; -+ -+public class PartP2PGTPower extends PartP2PIC2Power implements IGridTickable { -+ public PartP2PGTPower(ItemStack is) { -+ super(is); -+ } -+ -+ public final World getWorld() { -+ return tile.getWorldObj(); -+ } -+ -+ public final int getXCoord() { -+ return tile.xCoord; -+ } -+ -+ public final short getYCoord() { -+ return (short) tile.yCoord; -+ } -+ -+ public final int getZCoord() { -+ return tile.zCoord; -+ } -+ -+ public final int getOffsetX(byte aSide, int aMultiplier) { -+ return getXCoord() + ForgeDirection.getOrientation(aSide).offsetX * aMultiplier; -+ } -+ -+ public final short getOffsetY(byte aSide, int aMultiplier) { -+ return (short) (getYCoord() + ForgeDirection.getOrientation(aSide).offsetY * aMultiplier); -+ } -+ -+ public final int getOffsetZ(byte aSide, int aMultiplier) { -+ return getZCoord() + ForgeDirection.getOrientation(aSide).offsetZ * aMultiplier; -+ } -+ -+ public final TileEntity getTileEntity(int aX, int aY, int aZ) { -+ return getWorld().getTileEntity(aX, aY, aZ); -+ } -+ -+ public final TileEntity getTileEntityAtSide(byte aSide) { -+ int tX = getOffsetX(aSide, 1), tY = getOffsetY(aSide, 1), tZ = getOffsetZ(aSide, 1); -+ return getWorld().getTileEntity(tX, tY, tZ); -+ } -+ -+ public boolean outputEnergy() { -+ if (getOfferedEnergy() == 0) { -+ return false; -+ } -+ TileEntity t = getTileEntityAtSide((byte) side.ordinal()); -+ if (t instanceof IEnergyConnected) { -+ long voltage = 8 << (getSourceTier() * 2); -+ if (voltage > getOfferedEnergy()) { -+ voltage = (long) getOfferedEnergy(); -+ } -+ if (((IEnergyConnected) t).injectEnergyUnits(GT_Utility.getOppositeSide(side.ordinal()), voltage, 1) > 0) { -+ drawEnergy(voltage); -+ return true; -+ } -+ } -+ return false; -+ } -+ -+ @Override -+ public TickingRequest getTickingRequest(IGridNode iGridNode) { -+ return new TickingRequest(1, 20, false, false); -+ } -+ -+ @Override -+ public TickRateModulation tickingRequest(IGridNode iGridNode, int i) { -+ return outputEnergy() ? TickRateModulation.FASTER : TickRateModulation.SLOWER; -+ } -+} -\ No newline at end of file --- -1.9.5.msysgit.0 - -From a4a0a7c2cc3c299969c62e509cc3c366a90214f3 Mon Sep 17 00:00:00 2001 -From: Dream-Master <dream-master@gmx.net> -Date: Tue, 12 Sep 2017 23:06:55 +0200 -Subject: [PATCH] cherry pick 11213d18d7345ee29f2efce6c5d421a855bed056 - fb163d1be0aa291508bb6513e34cacba3ca06b36 - fb508132d91543d5e837dfa4fac09cf5e4b9e7a8 - d682ca0d36e3824b1bf73cc800f58c4126bcf104 - 0f2db4f76a88c26ca08b2da444b264444ce01316 - 50229e4506687d184c93ed702cdeeecea65e326a - -f5195f822d9951015c4ef6599e5b4f6544ec0714 -fbdb6ceecf60183ab382f043b78b61941157eccf -55af1972b86a82bf6038342aa1a3bf9013d0f164 - -c0d9d5a268da4b58385ee95e27408e06829c74b8 -416890142c0fa62617fc6e4537826689635e9eb3 -d532cb67f7bc68243e3d2dc2a12a466ed9c9e2d9 -d1671eaf33b3b4223da174e115f35b9bc1f19c5a -4d90afad87375e3f1013a493f4b3b5d4e92bf521 -3c397d61697c13f0467e0cb67fb127fff8401f71 -64957ccd0f51ef283cc561d52a5439c3752c4e71 - -b7e0863207253ee758742a22c607c3ccc37af6d3 - -ae5a1e117d47876de9d2d2e8ea581e15686c5e1a -a0eb30d03f8fc311598f628ad45b5365c7391917 -505a9c263e88e5519bade6a3167f829e41e13e64 - -9cbb9c66a2f63e7e0cb4aceebfc9c93776b82be2 - -Drillers upgrade #1163 -https://github.com/Blood-Asp/GT5-Unofficial/pull/1163 ---- - src/main/java/gregtech/api/enums/ItemList.java | 2 +- - .../api/gui/GT_GUIContainer_MultiMachine.java | 25 +- - .../GT_MetaTileEntity_Hatch_DataAccess.java | 4 + - .../multi/GT_MetaTileEntity_AssemblyLine.java | 2 +- - .../GT_MetaTileEntity_ConcreteBackfiller1.java | 51 +++ - .../GT_MetaTileEntity_ConcreteBackfiller2.java | 66 ++++ - .../GT_MetaTileEntity_ConcreteBackfillerBase.java | 125 ++++++++ - .../multi/GT_MetaTileEntity_DrillerBase.java | 357 +++++++++++++++++++++ - .../machines/multi/GT_MetaTileEntity_OilDrill.java | 270 ---------------- - .../multi/GT_MetaTileEntity_OilDrill1.java | 51 +++ - .../multi/GT_MetaTileEntity_OilDrill2.java | 51 +++ - .../multi/GT_MetaTileEntity_OilDrill3.java | 51 +++ - .../multi/GT_MetaTileEntity_OilDrillBase.java | 152 +++++++++ - .../GT_MetaTileEntity_OreDrillingPlantBase.java | 269 ++-------------- - .../preload/GT_Loader_MetaTileEntities.java | 13 +- - 15 files changed, 959 insertions(+), 530 deletions(-) - create mode 100644 src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_ConcreteBackfiller1.java - create mode 100644 src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_ConcreteBackfiller2.java - create mode 100644 src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_ConcreteBackfillerBase.java - create mode 100644 src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DrillerBase.java - delete mode 100644 src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrill.java - create mode 100644 src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrill1.java - create mode 100644 src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrill2.java - create mode 100644 src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrill3.java - create mode 100644 src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrillBase.java - -diff --git a/src/main/java/gregtech/api/enums/ItemList.java b/src/main/java/gregtech/api/enums/ItemList.java -index b1c993a..1e0f667 100644 ---- a/src/main/java/gregtech/api/enums/ItemList.java -+++ b/src/main/java/gregtech/api/enums/ItemList.java -@@ -661,7 +661,7 @@ public enum ItemList implements IItemContainer { - Casing_Tank_1, Casing_Tank_2, Casing_Tank_3, Casing_Tank_4, Casing_Tank_5, Casing_Tank_6, Casing_Tank_7, Casing_Tank_8, Casing_Tank_9, Casing_Tank_10, Casing_Tank_11, Casing_Tank_12, Casing_Tank_13, Casing_Tank_14, Casing_Tank_15, Casing_Tank_0, - MobRep_LV, MobRep_MV, MobRep_HV, MobRep_EV, MobRep_IV, MobRep_LuV, MobRep_ZPM, MobRep_UV, Cover_PlayerDetector, Machine_Multi_HeatExchanger, - Block_BronzePlate, Block_IridiumTungstensteel, Block_Plascrete, Block_TungstenSteelReinforced, -- Honeycomb, Charcoal_Pile, Block_BrittleCharcoal, Seismic_Prospector, Seismic_Prospector_Adv, OilDrill, OreDrill1, OreDrill2, OreDrill3, OreDrill4, PyrolyseOven, OilCracker, Crop_Drop_UUMBerry, Crop_Drop_UUABerry, Empty_Board_Basic, Empty_Board_Elite, -+ Honeycomb, Charcoal_Pile, Block_BrittleCharcoal, Seismic_Prospector, Seismic_Prospector_Adv, OilDrill1, OilDrill2, OilDrill3, ConcreteBackfiller1, ConcreteBackfiller2, OreDrill1, OreDrill2, OreDrill3, OreDrill4, PyrolyseOven, OilCracker, Crop_Drop_UUMBerry, Crop_Drop_UUABerry, Empty_Board_Basic, Empty_Board_Elite, - Battery_Charger_4by4_ULV, Battery_Charger_4by4_LV, Battery_Charger_4by4_MV, Battery_Charger_4by4_HV, Battery_Charger_4by4_EV, Battery_Charger_4by4_IV, Battery_Charger_4by4_LuV, Battery_Charger_4by4_ZPM, Battery_Charger_4by4_UV, Battery_Charger_4by4_MAX, - MicroTransmitter_HV, MicroTransmitter_EV, MicroTransmitter_IV, MicroTransmitter_LUV, MicroTransmitter_ZPM, - Crop_Drop_Bauxite, Crop_Drop_Ilmenite, Crop_Drop_Pitchblende, Crop_Drop_Uraninite, Crop_Drop_Thorium, Crop_Drop_Nickel, Crop_Drop_Zinc, Crop_Drop_Manganese, Crop_Drop_Scheelite, Crop_Drop_Platinum, Crop_Drop_Iridium, Crop_Drop_Osmium, Crop_Drop_Naquadah, Uraniumcell_1, Uraniumcell_2, Uraniumcell_4, Moxcell_1, Moxcell_2, Moxcell_4, -diff --git a/src/main/java/gregtech/api/gui/GT_GUIContainer_MultiMachine.java b/src/main/java/gregtech/api/gui/GT_GUIContainer_MultiMachine.java -index 5a7c487..62e6f8c 100644 ---- a/src/main/java/gregtech/api/gui/GT_GUIContainer_MultiMachine.java -+++ b/src/main/java/gregtech/api/gui/GT_GUIContainer_MultiMachine.java -@@ -1,14 +1,18 @@ - package gregtech.api.gui; - --import gregtech.api.interfaces.tileentity.IGregTechTileEntity; --import gregtech.api.util.GT_LanguageManager; --import gregtech.api.util.GT_ModHandler; --import gregtech.api.util.GT_Utility; --import gregtech.common.items.GT_MetaGenerated_Tool_01; --import net.minecraft.entity.player.InventoryPlayer; --import net.minecraft.item.ItemStack; -+ import static gregtech.api.enums.GT_Values.RES_PATH_GUI; -+ -+ import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -+ import gregtech.api.util.GT_LanguageManager; -+ import gregtech.api.util.GT_ModHandler; -+ import gregtech.api.util.GT_Utility; -+ import gregtech.common.items.GT_MetaGenerated_Tool_01; -+ import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_DrillerBase; -+ import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_LargeTurbine; -+ import net.minecraft.entity.player.InventoryPlayer; -+ import net.minecraft.item.ItemStack; -+ - --import static gregtech.api.enums.GT_Values.RES_PATH_GUI; - - /** - * NEVER INCLUDE THIS FILE IN YOUR MOD!!! -@@ -54,13 +58,12 @@ public class GT_GUIContainer_MultiMachine extends GT_GUIContainerMetaTile_Machin - } else { - fontRendererObj.drawString(trans("142","Running perfectly."), 10, 16, 16448255); - } -- int id = mContainer.mTileEntity.getMetaTileID(); -- if (id == 1157 || id == 1158 || id == 1177 || id == 1178 || id == 1179) { -+ if (mContainer.mTileEntity.getMetaTileEntity() instanceof GT_MetaTileEntity_DrillerBase) { - ItemStack tItem = mContainer.mTileEntity.getMetaTileEntity().getStackInSlot(1); - if (tItem == null || !GT_Utility.areStacksEqual(tItem, GT_ModHandler.getIC2Item("miningPipe", 1L))) { - fontRendererObj.drawString(trans("143", "Missing Mining Pipe"), 10, ((GT_Container_MultiMachine) mContainer).mActive == 0 ? 40 : 24, 16448255); - } -- } else if (id == 1131 || id == 1151 || id == 1152 || id == 1153) { -+ } else if (mContainer.mTileEntity.getMetaTileEntity() instanceof GT_MetaTileEntity_LargeTurbine) { - ItemStack tItem = mContainer.mTileEntity.getMetaTileEntity().getStackInSlot(1); - if (tItem == null || !(tItem.getItem() == GT_MetaGenerated_Tool_01.INSTANCE && tItem.getItemDamage() >= 170 && tItem.getItemDamage() <= 177)) { - fontRendererObj.drawString(trans("144", "Missing Turbine Rotor"), 10, ((GT_Container_MultiMachine) mContainer).mActive == 0 ? 40 : 24, 16448255); -diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_DataAccess.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_DataAccess.java -index e28f5e6..bbdf0ec 100644 ---- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_DataAccess.java -+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_DataAccess.java -@@ -98,4 +98,8 @@ public class GT_MetaTileEntity_Hatch_DataAccess extends GT_MetaTileEntity_Hatch - public boolean allowPutStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) { - return false; - } -+ @Override -+ public int getInventoryStackLimit() { -+ return 1; -+ } - } -diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_AssemblyLine.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_AssemblyLine.java -index 85fa737..2934fc5 100644 ---- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_AssemblyLine.java -+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_AssemblyLine.java -@@ -322,7 +322,7 @@ public class GT_MetaTileEntity_AssemblyLine - * @param state using bitmask, 1 for IntegratedCircuit, 2 for DataStick, 4 for DataOrb - */ - private boolean isCorrectDataItem(ItemStack aStack, int state){ -- if ((state & 1) != 0 && ItemList.Circuit_Integrated.isStackEqual(aStack, false, true)) return true; -+ if ((state & 1) != 0 && ItemList.Circuit_Integrated.isStackEqual(aStack, true, true)) return true; - if ((state & 2) != 0 && ItemList.Tool_DataStick.isStackEqual(aStack, false, true)) return true; - if ((state & 4) != 0 && ItemList.Tool_DataOrb.isStackEqual(aStack, false, true)) return true; - return false; -diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_ConcreteBackfiller1.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_ConcreteBackfiller1.java -new file mode 100644 -index 0000000..84bba3b ---- /dev/null -+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_ConcreteBackfiller1.java -@@ -0,0 +1,51 @@ -+package gregtech.common.tileentities.machines.multi; -+ -+import gregtech.api.enums.ItemList; -+import gregtech.api.enums.Materials; -+import gregtech.api.interfaces.metatileentity.IMetaTileEntity; -+import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -+ -+public class GT_MetaTileEntity_ConcreteBackfiller1 extends GT_MetaTileEntity_ConcreteBackfillerBase { -+ public GT_MetaTileEntity_ConcreteBackfiller1(int aID, String aName, String aNameRegional) { -+ super(aID, aName, aNameRegional); -+ } -+ -+ public GT_MetaTileEntity_ConcreteBackfiller1(String aName) { -+ super(aName); -+ } -+ -+ @Override -+ public String[] getDescription() { -+ return getDescriptionInternal(""); -+ } -+ -+ @Override -+ public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { -+ return new GT_MetaTileEntity_ConcreteBackfiller1(mName); -+ } -+ -+ @Override -+ protected ItemList getCasingBlockItem() { -+ return ItemList.Casing_SolidSteel; -+ } -+ -+ @Override -+ protected Materials getFrameMaterial() { -+ return Materials.Steel; -+ } -+ -+ @Override -+ protected int getCasingTextureIndex() { -+ return 16; -+ } -+ -+ @Override -+ protected int getRadius() { -+ return 16; -+ } -+ -+ @Override -+ protected int getMinTier() { -+ return 2; -+ } -+} -\ No newline at end of file -diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_ConcreteBackfiller2.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_ConcreteBackfiller2.java -new file mode 100644 -index 0000000..6357783 ---- /dev/null -+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_ConcreteBackfiller2.java -@@ -0,0 +1,66 @@ -+package gregtech.common.tileentities.machines.multi; -+ -+import static gregtech.api.enums.GT_Values.VN; -+ -+import gregtech.api.enums.ItemList; -+import gregtech.api.enums.Materials; -+import gregtech.api.interfaces.metatileentity.IMetaTileEntity; -+import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -+ -+public class GT_MetaTileEntity_ConcreteBackfiller2 extends GT_MetaTileEntity_ConcreteBackfillerBase { -+ public GT_MetaTileEntity_ConcreteBackfiller2(int aID, String aName, String aNameRegional) { -+ super(aID, aName, aNameRegional); -+ } -+ -+ public GT_MetaTileEntity_ConcreteBackfiller2(String aName) { -+ super(aName); -+ } -+ -+ @Override -+ public String[] getDescription() { -+ String casings = getCasingBlockItem().get(0).getDisplayName(); -+ return new String[]{ -+ "Controller Block for the Advanced Concrete Backfiller", -+ "Size(WxHxD): 3x7x3", "Controller (Front middle at bottom)", -+ "3x1x3 Base of " + casings, -+ "1x3x1 " + casings + " pillar (Center of base)", -+ "1x3x1 " + getFrameMaterial().mName + " Frame Boxes (Each pillar side and on top)", -+ "1x Input Hatch (One of base casings)", -+ "1x Maintenance Hatch (One of base casings)", -+ "1x " + VN[getMinTier()] + "+ Energy Hatch (Any bottom layer casing)", -+ "Put Programmed Circuits into Data Access to config radius", -+ "Radius = (total config value)x2 blocks", -+ "Default 64, Maximum 128",}; -+ } -+ -+ @Override -+ public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { -+ return new GT_MetaTileEntity_ConcreteBackfiller2(mName); -+ } -+ -+ @Override -+ protected ItemList getCasingBlockItem() { -+ return ItemList.Casing_StableTitanium; -+ } -+ -+ @Override -+ protected Materials getFrameMaterial() { -+ return Materials.Titanium; -+ } -+ -+ @Override -+ protected int getCasingTextureIndex() { -+ return 50; -+ } -+ -+ @Override -+ protected int getRadius() { -+ int tConfig = getTotalConfigValue() * 2; -+ return tConfig >= 128 ? 128 : tConfig <= 0 ? 64 : tConfig; -+ } -+ -+ @Override -+ protected int getMinTier() { -+ return 4; -+ } -+} -\ No newline at end of file -diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_ConcreteBackfillerBase.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_ConcreteBackfillerBase.java -new file mode 100644 -index 0000000..169bb26 ---- /dev/null -+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_ConcreteBackfillerBase.java -@@ -0,0 +1,125 @@ -+package gregtech.common.tileentities.machines.multi; -+ -+import static gregtech.api.enums.GT_Values.V; -+import static gregtech.api.enums.GT_Values.VN; -+ -+import gregtech.api.GregTech_API; -+import gregtech.api.enums.Materials; -+import gregtech.api.gui.GT_GUIContainer_MultiMachine; -+import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -+import gregtech.api.util.GT_Utility; -+import net.minecraft.entity.player.InventoryPlayer; -+import net.minecraft.item.ItemStack; -+ -+public abstract class GT_MetaTileEntity_ConcreteBackfillerBase extends GT_MetaTileEntity_DrillerBase { -+ -+ private int mLastXOff = 0, mLastZOff = 0; -+ -+ public GT_MetaTileEntity_ConcreteBackfillerBase(int aID, String aName, String aNameRegional) { -+ super(aID, aName, aNameRegional); -+ } -+ -+ public GT_MetaTileEntity_ConcreteBackfillerBase(String aName) { -+ super(aName); -+ } -+ -+ protected String[] getDescriptionInternal(String tierSuffix) { -+ String casings = getCasingBlockItem().get(0).getDisplayName(); -+ return new String[]{ -+ "Controller Block for the Concrete Backfiller " + (tierSuffix != null ? tierSuffix : ""), -+ "Size(WxHxD): 3x7x3", "Controller (Front middle at bottom)", -+ "3x1x3 Base of " + casings, -+ "1x3x1 " + casings + " pillar (Center of base)", -+ "1x3x1 " + getFrameMaterial().mName + " Frame Boxes (Each pillar side and on top)", -+ "1x Input Hatch (One of base casings)", -+ "1x Maintenance Hatch (One of base casings)", -+ "1x " + VN[getMinTier()] + "+ Energy Hatch (Any bottom layer casing)", -+ "Radius is " + getRadius() + " blocks"}; -+ } -+ -+ @Override -+ public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) { -+ return new GT_GUIContainer_MultiMachine(aPlayerInventory, aBaseMetaTileEntity, getLocalName(), "DrillingRig.png"); -+ } -+ -+ protected abstract int getRadius(); -+ -+ @Override -+ protected boolean checkHatches() { -+ return !mMaintenanceHatches.isEmpty() && !mInputHatches.isEmpty() && !mEnergyHatches.isEmpty(); -+ } -+ -+ @Override -+ protected void setElectricityStats() { -+ this.mEfficiency = getCurrentEfficiency(null); -+ this.mEfficiencyIncrease = 10000; -+ //T1 = 48; T2 = 192; T3 = 768; T4 = 3072 -+ this.mEUt = 12 * (1 << (getMinTier() << 1)); -+ this.mMaxProgresstime = (isPickingPipes ? 240: 80) / (1 << getMinTier()); -+ -+ long voltage = getMaxInputVoltage(); -+ long overclockEu = V[Math.max(1, GT_Utility.getTier(voltage)) - 1]; -+ while (this.mEUt <= overclockEu) { -+ this.mEUt *= 4; -+ this.mMaxProgresstime /= 2; -+ } -+ -+ this.mEUt = -this.mEUt; -+ this.mMaxProgresstime = Math.max(1, this.mMaxProgresstime); -+ } -+ -+ @Override -+ protected boolean workingUpward(ItemStack aStack, int xDrill, int yDrill, int zDrill, int xPipe, int zPipe, int yHead, int oldYHead) { -+ if (isRefillableBlock(xPipe, yHead - 1, zPipe)) -+ return tryRefillBlock(xPipe, yHead - 1, zPipe); -+ int radius = getRadius(); -+ if (mLastXOff == 0 && mLastZOff == 0) { -+ mLastXOff = - radius; -+ mLastZOff = - radius; -+ } -+ if (yHead != yDrill) { -+ for (int i = mLastXOff; i <= radius; i++) { -+ for (int j = (i == mLastXOff ? mLastZOff : - radius); j <= radius; j++) { -+ if (isRefillableBlock(xPipe + i, yHead, zPipe + j)){ -+ mLastXOff = i; -+ mLastZOff = j; -+ return tryRefillBlock(xPipe + i, yHead, zPipe + j); -+ } -+ } -+ } -+ } -+ -+ if (tryPickPipe()) { -+ mLastXOff = 0; -+ mLastZOff = 0; -+ return true; -+ } else { -+ isPickingPipes = false; -+ stopMachine(); -+ return false; -+ } -+ } -+ -+ private boolean isRefillableBlock(int aX, int aY, int aZ){ -+ if (getBaseMetaTileEntity().getTileEntity(aX, aY, aZ) != null) return false; -+ if (getBaseMetaTileEntity().getAir(aX, aY, aZ) || !getBaseMetaTileEntity().getBlock(aX, aY, aZ).getMaterial().isSolid()) -+ return true; -+ return false; -+ } -+ -+ private boolean tryRefillBlock(int aX, int aY, int aZ) { -+ if (!tryConsumeFluid()) -+ return false; -+ getBaseMetaTileEntity().getWorld().setBlock(aX, aY, aZ, GregTech_API.sBlockConcretes, 8, 3); -+ return true; -+ } -+ -+ private boolean tryConsumeFluid() { -+ if (!depleteInput(Materials.Concrete.getMolten(144L))){ -+ mMaxProgresstime = 0; -+ return false; -+ } -+ return true; -+ } -+ -+} -\ No newline at end of file -diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DrillerBase.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DrillerBase.java -new file mode 100644 -index 0000000..2e7616b ---- /dev/null -+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_DrillerBase.java -@@ -0,0 +1,357 @@ -+package gregtech.common.tileentities.machines.multi; -+ -+import static gregtech.api.enums.GT_Values.W; -+ -+import java.util.ArrayList; -+ -+import gregtech.api.GregTech_API; -+import gregtech.api.enums.ItemList; -+import gregtech.api.enums.Materials; -+import gregtech.api.enums.Textures; -+import gregtech.api.interfaces.ITexture; -+import gregtech.api.interfaces.metatileentity.IMetaTileEntity; -+import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch; -+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_DataAccess; -+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Energy; -+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; -+import gregtech.api.objects.GT_RenderedTexture; -+import gregtech.api.util.GT_ModHandler; -+import gregtech.api.util.GT_Utility; -+import net.minecraft.block.Block; -+import net.minecraft.entity.player.InventoryPlayer; -+import net.minecraft.init.Blocks; -+import net.minecraft.item.ItemStack; -+import net.minecraft.nbt.NBTTagCompound; -+import net.minecraftforge.common.util.ForgeDirection; -+ -+public abstract class GT_MetaTileEntity_DrillerBase extends GT_MetaTileEntity_MultiBlockBase { -+ private static final ItemStack miningPipe = GT_ModHandler.getIC2Item("miningPipe", 0); -+ private static final ItemStack miningPipeTip = GT_ModHandler.getIC2Item("miningPipeTip", 0); -+ private static final Block miningPipeBlock = GT_Utility.getBlockFromStack(miningPipe); -+ private static final Block miningPipeTipBlock = GT_Utility.getBlockFromStack(miningPipeTip); -+ -+ private Block casingBlock; -+ private int casingMeta; -+ private int frameMeta; -+ private int casingTextureIndex; -+ -+ private ForgeDirection back; -+ -+ private int xDrill, yDrill, zDrill, xPipe, zPipe, yHead; -+ protected boolean isPickingPipes; -+ -+ public GT_MetaTileEntity_DrillerBase(int aID, String aName, String aNameRegional) { -+ super(aID, aName, aNameRegional); -+ initFields(); -+ } -+ -+ public GT_MetaTileEntity_DrillerBase(String aName) { -+ super(aName); -+ initFields(); -+ } -+ -+ private void initFields() { -+ casingBlock = getCasingBlockItem().getBlock(); -+ casingMeta = getCasingBlockItem().get(0).getItemDamage(); -+ int frameId = 4096 + getFrameMaterial().mMetaItemSubID; -+ frameMeta = GregTech_API.METATILEENTITIES[frameId] != null ? GregTech_API.METATILEENTITIES[frameId].getTileEntityBaseType() : W; -+ casingTextureIndex = getCasingTextureIndex(); -+ isPickingPipes = false; -+ } -+ -+ public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex, boolean aActive, boolean aRedstone) { -+ if (aSide == aFacing) -+ return new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[casingTextureIndex],new GT_RenderedTexture(aActive ? Textures.BlockIcons.OVERLAY_FRONT_ORE_DRILL_ACTIVE : Textures.BlockIcons.OVERLAY_FRONT_ORE_DRILL)}; -+ return new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[casingTextureIndex]}; -+ } -+ -+ @Override -+ public void saveNBTData(NBTTagCompound aNBT) { -+ super.saveNBTData(aNBT); -+ aNBT.setBoolean("isPickingPipe", isPickingPipes); -+ } -+ -+ @Override -+ public void loadNBTData(NBTTagCompound aNBT) { -+ super.loadNBTData(aNBT); -+ isPickingPipes = aNBT.getBoolean("isPickingPipes"); -+ } -+ -+ protected boolean tryPickPipe() { -+ if (yHead == yDrill) return false; -+ if (tryOutputPipe()){ -+ if (checkBlockAndMeta(xPipe, yHead + 1, zPipe, miningPipeBlock, W)) -+ getBaseMetaTileEntity().getWorld().setBlock(xPipe, yHead + 1, zPipe, miningPipeTipBlock); -+ getBaseMetaTileEntity().getWorld().setBlockToAir(xPipe, yHead, zPipe); -+ return true; -+ } -+ return false; -+ } -+ -+ protected boolean tryLowerPipe() { -+ if (!isHasMiningPipes()) return false; -+ -+ if (yHead <= 0) return false; -+ if (!canLowerPipe()) return false; -+ -+ getBaseMetaTileEntity().getWorld().setBlock(xPipe, yHead - 1, zPipe, miningPipeTipBlock); -+ if (yHead != yDrill) getBaseMetaTileEntity().getWorld().setBlock(xPipe, yHead, zPipe, miningPipeBlock); -+ -+ getBaseMetaTileEntity().decrStackSize(1, 1); -+ return true; -+ } -+ -+ private void putMiningPipesFromInputsInController() { -+ int maxPipes = miningPipe.getMaxStackSize(); -+ if (isHasMiningPipes(maxPipes)) return; -+ -+ ItemStack pipes = getStackInSlot(1); -+ for (ItemStack storedItem : getStoredInputs()) { -+ if (!storedItem.isItemEqual(miningPipe)) continue; -+ -+ if (pipes == null) { -+ setInventorySlotContents(1, GT_Utility.copy(miningPipe)); -+ pipes = getStackInSlot(1); -+ } -+ -+ if (pipes.stackSize == maxPipes) break; -+ -+ int needPipes = maxPipes - pipes.stackSize; -+ int transferPipes = storedItem.stackSize < needPipes ? storedItem.stackSize : needPipes; -+ -+ pipes.stackSize += transferPipes; -+ storedItem.stackSize -= transferPipes; -+ } -+ updateSlots(); -+ } -+ -+ private boolean tryOutputPipe(){ -+ if (!getBaseMetaTileEntity().addStackToSlot(1, GT_Utility.copyAmount(1, miningPipe))) -+ mOutputItems = new ItemStack[] {GT_Utility.copyAmount(1, miningPipe)}; -+ return true; -+ } -+ -+ protected boolean canLowerPipe(){ -+ return yHead > 0 && !checkBlockAndMeta(xPipe, yHead - 1, zPipe, Blocks.bedrock, W); -+ } -+ -+ private boolean isHasMiningPipes() { -+ return isHasMiningPipes(1); -+ } -+ -+ private boolean isHasMiningPipes(int minCount) { -+ ItemStack pipe = getStackInSlot(1); -+ return pipe != null && pipe.stackSize > minCount - 1 && pipe.isItemEqual(miningPipe); -+ } -+ -+ private boolean isEnergyEnough() { -+ long requiredEnergy = 512 + getMaxInputVoltage() * 4; -+ for (GT_MetaTileEntity_Hatch_Energy energyHatch : mEnergyHatches) { -+ requiredEnergy -= energyHatch.getEUVar(); -+ if (requiredEnergy <= 0) return true; -+ } -+ return false; -+ } -+ -+ protected boolean workingDownward(ItemStack aStack, int xDrill, int yDrill, int zDrill, int xPipe, int zPipe, int yHead, int oldYHead){ -+ if(!tryLowerPipe()) -+ if(waitForPipes()) return false; -+ isPickingPipes = true; -+ return true; -+ } -+ -+ protected boolean workingUpward(ItemStack aStack, int xDrill, int yDrill, int zDrill, int xPipe, int zPipe, int yHead, int oldYHead) { -+ if (tryPickPipe()) { -+ return true; -+ } else { -+ isPickingPipes = false; -+ stopMachine(); -+ return false; -+ } -+ } -+ -+ @Override -+ public boolean checkRecipe(ItemStack aStack) { -+ //Public pipe actions -+ setElectricityStats(); -+ int oldYHead = yHead; -+ if (!checkPipesAndSetYHead() || !isEnergyEnough()) { -+ stopMachine(); -+ return false; -+ } -+ putMiningPipesFromInputsInController(); -+ if (!isPickingPipes) -+ return workingDownward(aStack, xDrill, yDrill, zDrill, xPipe, zPipe, yHead, oldYHead); -+ else -+ return workingUpward(aStack, xDrill, yDrill, zDrill, xPipe, zPipe, yHead, oldYHead); -+ } -+ -+ @Override -+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) { -+ updateCoordinates(); -+ //check base layer -+ for (int xOff = -1 + back.offsetX; xOff <= 1 + back.offsetX; xOff++) { -+ for (int zOff = -1 + back.offsetZ; zOff <= 1 + back.offsetZ; zOff++) { -+ if (xOff == 0 && zOff == 0) continue; -+ -+ IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xOff, 0, zOff); -+ if (!checkCasingBlock(xOff, 0, zOff) -+ && !addMaintenanceToMachineList(tTileEntity, casingTextureIndex) -+ && !addInputToMachineList(tTileEntity, casingTextureIndex) -+ && !addOutputToMachineList(tTileEntity, casingTextureIndex) -+ && !addEnergyInputToMachineList(tTileEntity, casingTextureIndex) -+ && !addDataAccessToMachineList(tTileEntity, casingTextureIndex)) -+ return false; -+ } -+ } -+ if(!checkHatches()) return false; -+ if (GT_Utility.getTier(getMaxInputVoltage()) < getMinTier()) return false; -+ //check tower -+ for (int yOff = 1; yOff < 4; yOff++) { -+ if (!checkCasingBlock(back.offsetX, yOff, back.offsetZ) -+ || !checkFrameBlock(back.offsetX + 1, yOff, back.offsetZ) -+ || !checkFrameBlock(back.offsetX - 1, yOff, back.offsetZ) -+ || !checkFrameBlock(back.offsetX, yOff, back.offsetZ + 1) -+ || !checkFrameBlock(back.offsetX, yOff, back.offsetZ - 1) -+ || !checkFrameBlock(back.offsetX, yOff + 3, back.offsetZ)) -+ return false; -+ } -+ return true; -+ } -+ -+ private void updateCoordinates() { -+ xDrill = getBaseMetaTileEntity().getXCoord(); -+ yDrill = getBaseMetaTileEntity().getYCoord(); -+ zDrill = getBaseMetaTileEntity().getZCoord(); -+ back = ForgeDirection.getOrientation(getBaseMetaTileEntity().getBackFacing()); -+ xPipe = xDrill + back.offsetX; -+ zPipe = zDrill + back.offsetZ; -+ } -+ -+ private boolean checkPipesAndSetYHead() { -+ yHead = yDrill - 1; -+ while (checkBlockAndMeta(xPipe, yHead, zPipe, miningPipeBlock, W)) yHead--; //skip pipes -+ //is pipe tip OR is controller layer -+ if (checkBlockAndMeta(xPipe, yHead, zPipe, miningPipeTipBlock, W) || ++yHead == yDrill) return true; -+ //pipe column is broken - try fix -+ getBaseMetaTileEntity().getWorld().setBlock(xPipe, yHead, zPipe, miningPipeTipBlock); -+ return true; -+ } -+ -+ protected boolean checkCasingBlock(int xOff, int yOff, int zOff) { -+ return checkBlockAndMetaOffset(xOff, yOff, zOff, casingBlock, casingMeta); -+ } -+ //meta of frame is getTileEntityBaseType; frame should be checked using its drops (possible a high weight operation) -+ protected boolean checkFrameBlock(int xOff, int yOff, int zOff) { -+ return checkBlockAndMetaOffset(xOff, yOff, zOff, GregTech_API.sBlockMachines, frameMeta); -+ } -+ -+ protected boolean checkBlockAndMetaOffset(int xOff, int yOff, int zOff, Block block, int meta) { -+ return checkBlockAndMeta(xDrill + xOff, yDrill + yOff, zDrill + zOff, block, meta); -+ } -+ -+ private boolean checkBlockAndMeta(int x, int y, int z, Block block, int meta) { -+ return (meta == W || getBaseMetaTileEntity().getMetaID(x, y, z) == meta) -+ && getBaseMetaTileEntity().getBlock(x, y, z) == block; -+ } -+ -+ protected boolean waitForPipes(){ -+ if (canLowerPipe()) { -+ mMaxProgresstime = 0; -+ return true; -+ } -+ return false; -+ } -+ -+ @Override -+ public boolean isCorrectMachinePart(ItemStack aStack) { -+ return true; -+ } -+ -+ @Override -+ public int getMaxEfficiency(ItemStack aStack) { -+ return 10000; -+ } -+ -+ @Override -+ public int getPollutionPerTick(ItemStack aStack) { -+ return 0; -+ } -+ -+ @Override -+ public int getDamageToComponent(ItemStack aStack) { -+ return 0; -+ } -+ -+ @Override -+ public boolean explodesOnComponentBreak(ItemStack aStack) { -+ return false; -+ } -+ -+ public abstract Object getClientGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity); -+ -+ protected abstract ItemList getCasingBlockItem(); -+ -+ protected abstract Materials getFrameMaterial(); -+ -+ protected abstract int getCasingTextureIndex(); -+ -+ protected abstract int getMinTier(); -+ -+ protected abstract boolean checkHatches(); -+ -+ protected abstract void setElectricityStats(); -+ -+ public int getTotalConfigValue(){ -+ int config = 0; -+ ArrayList<ItemStack> tCircuitList = getDataItems(1); -+ for (ItemStack tCircuit : tCircuitList) -+ config += tCircuit.getItemDamage(); -+ return config; -+ } -+ -+ public ArrayList<GT_MetaTileEntity_Hatch_DataAccess> mDataAccessHatches = new ArrayList<GT_MetaTileEntity_Hatch_DataAccess>(); -+ -+ /** -+ * @param state using bitmask, 1 for IntegratedCircuit, 2 for DataStick, 4 for DataOrb -+ */ -+ private boolean isCorrectDataItem(ItemStack aStack, int state){ -+ if ((state & 1) != 0 && ItemList.Circuit_Integrated.isStackEqual(aStack, true, true)) return true; -+ if ((state & 2) != 0 && ItemList.Tool_DataStick.isStackEqual(aStack, false, true)) return true; -+ if ((state & 4) != 0 && ItemList.Tool_DataOrb.isStackEqual(aStack, false, true)) return true; -+ return false; -+ } -+ -+ /** -+ * @param state using bitmask, 1 for IntegratedCircuit, 2 for DataStick, 4 for DataOrb -+ */ -+ public ArrayList<ItemStack> getDataItems(int state) { -+ ArrayList<ItemStack> rList = new ArrayList<ItemStack>(); -+ if (GT_Utility.isStackValid(mInventory[1]) && isCorrectDataItem(mInventory[1], state)) { -+ rList.add(mInventory[1]); -+ } -+ for (GT_MetaTileEntity_Hatch_DataAccess tHatch : mDataAccessHatches) { -+ if (isValidMetaTileEntity(tHatch)) { -+ for (int i = 0; i < tHatch.getBaseMetaTileEntity().getSizeInventory(); i++) { -+ if (tHatch.getBaseMetaTileEntity().getStackInSlot(i) != null -+ && isCorrectDataItem(tHatch.getBaseMetaTileEntity().getStackInSlot(i), state)) -+ rList.add(tHatch.getBaseMetaTileEntity().getStackInSlot(i)); -+ } -+ } -+ } -+ return rList; -+ } -+ -+ public boolean addDataAccessToMachineList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) { -+ if (aTileEntity == null) return false; -+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity(); -+ if (aMetaTileEntity == null) return false; -+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_DataAccess) { -+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).mMachineBlock = (byte) aBaseCasingIndex; -+ return mDataAccessHatches.add((GT_MetaTileEntity_Hatch_DataAccess) aMetaTileEntity); -+ } -+ return false; -+ } -+ -+} -\ No newline at end of file -diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrill.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrill.java -deleted file mode 100644 -index e3e0c85..0000000 ---- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrill.java -+++ /dev/null -@@ -1,270 +0,0 @@ --package gregtech.common.tileentities.machines.multi; -- --import gregtech.api.GregTech_API; --import gregtech.api.enums.Textures; --import gregtech.api.gui.GT_GUIContainer_MultiMachine; --import gregtech.api.interfaces.ITexture; --import gregtech.api.interfaces.metatileentity.IMetaTileEntity; --import gregtech.api.interfaces.tileentity.IGregTechTileEntity; --import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Energy; --import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Muffler; --import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; --import gregtech.api.objects.GT_RenderedTexture; --import gregtech.api.util.GT_ModHandler; --import gregtech.api.util.GT_Utility; --import net.minecraft.entity.player.InventoryPlayer; --import net.minecraft.init.Blocks; --import net.minecraft.item.ItemStack; --import net.minecraft.util.EnumChatFormatting; --import net.minecraftforge.common.util.ForgeDirection; --import net.minecraftforge.fluids.FluidStack; -- --import java.util.ArrayList; -- --import static gregtech.common.GT_UndergroundOil.undergroundOil; -- --public class GT_MetaTileEntity_OilDrill extends GT_MetaTileEntity_MultiBlockBase { -- -- private boolean completedCycle = false; -- private int extractionSpeed=0; -- -- public GT_MetaTileEntity_OilDrill(int aID, String aName, String aNameRegional) { -- super(aID, aName, aNameRegional); -- } -- -- public GT_MetaTileEntity_OilDrill(String aName) { -- super(aName); -- } -- -- public String[] getDescription() { -- return new String[]{ -- "Controller Block for the Oil Drilling Rig", -- "Size(WxHxD): 3x7x3", "Controller (Front middle at bottom)", -- "3x1x3 Base of Solid Steel Machine Casings", -- "1x3x1 Solid Steel Machine Casing pillar (Center of base)", -- "1x3x1 Steel Frame Boxes (Each Steel pillar side and on top)", -- "1x Output Hatch (One of base casings)", -- "1x Maintenance Hatch (One of base casings)", -- "1x Energy Hatch (One of base casings)", -- "Also check the seismic prospector..."}; -- } -- -- public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex, boolean aActive, boolean aRedstone) { -- if (aSide == aFacing) { -- return new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[16], new GT_RenderedTexture(aActive ? Textures.BlockIcons.OVERLAY_FRONT_OIL_DRILL_ACTIVE : Textures.BlockIcons.OVERLAY_FRONT_OIL_DRILL)}; -- } -- return new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[16]}; -- } -- -- public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) { -- return new GT_GUIContainer_MultiMachine(aPlayerInventory, aBaseMetaTileEntity, getLocalName(), "DrillingRig.png"); -- } -- -- @Override -- public boolean checkRecipe(ItemStack aStack) { -- if (mInventory[1] == null || (mInventory[1].isItemEqual(GT_ModHandler.getIC2Item("miningPipe", 1L)) && mInventory[1].stackSize < mInventory[1].getMaxStackSize())) { -- ArrayList<ItemStack> tItems = getStoredInputs(); -- for (ItemStack tStack : tItems) { -- if (tStack.isItemEqual(GT_ModHandler.getIC2Item("miningPipe", 1L))) { -- if (tStack.stackSize < 2) { -- tStack = null; -- } else { -- tStack.stackSize--; -- } -- -- } -- if (mInventory[1] == null) { -- mInventory[1] = GT_ModHandler.getIC2Item("miningPipe", 1L); -- } else { -- mInventory[1].stackSize++; -- } -- } -- } -- //Output fluid -- FluidStack tFluid = undergroundOil(getBaseMetaTileEntity(),.5F+(getInputTier()*.25F));//consumes here... -- if (tFluid == null){ -- extractionSpeed=0; -- stopMachine(); -- return false;//impossible -- } -- if (getBaseMetaTileEntity().getBlockOffset(ForgeDirection.getOrientation(getBaseMetaTileEntity().getBackFacing()).offsetX, getYOfPumpHead() - 1 - getBaseMetaTileEntity().getYCoord(), ForgeDirection.getOrientation(getBaseMetaTileEntity().getBackFacing()).offsetZ) != Blocks.bedrock) { -- //Not at bedrock layer - i prefer to keep it like it is... -- if (completedCycle) { -- moveOneDown(); -- } -- tFluid = null; -- if (mEnergyHatches.size() > 0 && mEnergyHatches.get(0).getEUVar() > (512 + getMaxInputVoltage() * 4)) -- completedCycle = true; -- } else if (tFluid.amount == 0) {//no fluid remaining, for SANity -- extractionSpeed=0; -- stopMachine(); -- return false;//stops processing?? -- } else { -- extractionSpeed=tFluid.amount; -- } -- this.mEfficiency = (10000 - (getIdealStatus() - getRepairStatus()) * 1000); -- this.mEfficiencyIncrease = 10000; -- calculateOverclockedNessMulti(24, 160, 1, getMaxInputVoltage()); -- //In case recipe is too OP for that machine -- if (mMaxProgresstime == Integer.MAX_VALUE - 1 && mEUt == Integer.MAX_VALUE - 1) -- return false; -- if (this.mEUt > 0) { -- this.mEUt = (-this.mEUt); -- } -- this.mOutputFluids = new FluidStack[]{tFluid}; -- return true; -- } -- -- private boolean moveOneDown() { -- if ((this.mInventory[1] == null) || (this.mInventory[1].stackSize < 1) -- || (!GT_Utility.areStacksEqual(this.mInventory[1], GT_ModHandler.getIC2Item("miningPipe", 1L)))) { -- return false; -- } -- int xDir = ForgeDirection.getOrientation(getBaseMetaTileEntity().getBackFacing()).offsetX; -- int zDir = ForgeDirection.getOrientation(getBaseMetaTileEntity().getBackFacing()).offsetZ; -- int yHead = getYOfPumpHead(); -- if (yHead < 1) { -- return false; -- } -- if (getBaseMetaTileEntity().getBlock(getBaseMetaTileEntity().getXCoord() + xDir, yHead - 1, getBaseMetaTileEntity().getZCoord() + zDir) == Blocks.bedrock) { -- return false; -- } -- if (!(getBaseMetaTileEntity().getWorld().setBlock(getBaseMetaTileEntity().getXCoord() + xDir, yHead - 1, getBaseMetaTileEntity().getZCoord() + zDir, GT_Utility.getBlockFromStack(GT_ModHandler.getIC2Item("miningPipeTip", 1L))))) { -- return false; -- } -- if (yHead != getBaseMetaTileEntity().getYCoord()) { -- getBaseMetaTileEntity().getWorld().setBlock(getBaseMetaTileEntity().getXCoord() + xDir, yHead, getBaseMetaTileEntity().getZCoord() + zDir, GT_Utility.getBlockFromStack(GT_ModHandler.getIC2Item("miningPipe", 1L))); -- } -- getBaseMetaTileEntity().decrStackSize(1, 1); -- return true; -- } -- -- private int getYOfPumpHead() { -- int xDir = ForgeDirection.getOrientation(getBaseMetaTileEntity().getBackFacing()).offsetX; -- int zDir = ForgeDirection.getOrientation(getBaseMetaTileEntity().getBackFacing()).offsetZ; -- int y = getBaseMetaTileEntity().getYCoord() - 1; -- while (getBaseMetaTileEntity().getBlock(getBaseMetaTileEntity().getXCoord() + xDir, y, getBaseMetaTileEntity().getZCoord() + zDir) == GT_Utility.getBlockFromStack(GT_ModHandler.getIC2Item("miningPipe", 1L))) { -- y--; -- } -- if (y == getBaseMetaTileEntity().getYCoord() - 1) { -- if (getBaseMetaTileEntity().getBlock(getBaseMetaTileEntity().getXCoord() + xDir, y, getBaseMetaTileEntity().getZCoord() + zDir) != GT_Utility.getBlockFromStack(GT_ModHandler.getIC2Item("miningPipeTip", 1L))) { -- return y + 1; -- } -- } else if (getBaseMetaTileEntity().getBlock(getBaseMetaTileEntity().getXCoord() + xDir, y, getBaseMetaTileEntity().getZCoord() + zDir) != GT_Utility -- .getBlockFromStack(GT_ModHandler.getIC2Item("miningPipeTip", 1L)) && this.mInventory[1] != null && this.mInventory[1].stackSize > 0 && GT_Utility.areStacksEqual(this.mInventory[1], GT_ModHandler.getIC2Item("miningPipe", 1L))) { -- getBaseMetaTileEntity().getWorld().setBlock(getBaseMetaTileEntity().getXCoord() + xDir, y, getBaseMetaTileEntity().getZCoord() + zDir, -- GT_Utility.getBlockFromStack(GT_ModHandler.getIC2Item("miningPipeTip", 1L))); -- getBaseMetaTileEntity().decrStackSize(0, 1); -- } -- return y; -- } -- -- @Override -- public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) { -- int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX; -- int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ; -- for (int i = -1; i < 2; i++) { -- for (int j = -1; j < 2; j++) { -- if ((xDir + i != 0) || (zDir + j != 0)) { -- IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + i, 0, zDir + j); -- if ((!addMaintenanceToMachineList(tTileEntity, 16)) && (!addInputToMachineList(tTileEntity, 16)) && (!addOutputToMachineList(tTileEntity, 16)) && (!addEnergyInputToMachineList(tTileEntity, 16))) { -- if (aBaseMetaTileEntity.getBlockOffset(xDir + i, 0, zDir + j) != GregTech_API.sBlockCasings2) { -- return false; -- } -- if (aBaseMetaTileEntity.getMetaIDOffset(xDir + i, 0, zDir + j) != 0) { -- return false; -- } -- } -- } -- } -- } -- for (int y = 1; y < 4; y++) { -- if (aBaseMetaTileEntity.getBlockOffset(xDir, y, zDir) != GregTech_API.sBlockCasings2) { -- return false; -- } -- if (aBaseMetaTileEntity.getBlockOffset(xDir + 1, y, zDir) != GregTech_API.sBlockMachines) { -- return false; -- } -- if (aBaseMetaTileEntity.getBlockOffset(xDir - 1, y, zDir) != GregTech_API.sBlockMachines) { -- return false; -- } -- if (aBaseMetaTileEntity.getBlockOffset(xDir, y, zDir + 1) != GregTech_API.sBlockMachines) { -- return false; -- } -- if (aBaseMetaTileEntity.getBlockOffset(xDir, y, zDir - 1) != GregTech_API.sBlockMachines) { -- return false; -- } -- if (aBaseMetaTileEntity.getBlockOffset(xDir, y + 3, zDir) != GregTech_API.sBlockMachines) { -- return false; -- } -- } -- return true; -- } -- -- @Override -- public boolean isCorrectMachinePart(ItemStack aStack) { -- return true; -- } -- -- @Override -- public int getMaxEfficiency(ItemStack aStack) { -- return 10000; -- } -- -- @Override -- public int getPollutionPerTick(ItemStack aStack) { -- return 0; -- } -- -- @Override -- public int getDamageToComponent(ItemStack aStack) { -- return 0; -- } -- -- @Override -- public boolean explodesOnComponentBreak(ItemStack aStack) { -- return false; -- } -- -- public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { -- return new GT_MetaTileEntity_OilDrill(this.mName); -- } -- -- @Override -- public String[] getInfoData() { -- int mPollutionReduction=0; -- for (GT_MetaTileEntity_Hatch_Muffler tHatch : mMufflerHatches) { -- if (isValidMetaTileEntity(tHatch)) { -- mPollutionReduction=Math.max(tHatch.calculatePollutionReduction(100),mPollutionReduction); -- } -- } -- -- long storedEnergy=0; -- long maxEnergy=0; -- for(GT_MetaTileEntity_Hatch_Energy tHatch : mEnergyHatches) { -- if (isValidMetaTileEntity(tHatch)) { -- storedEnergy+=tHatch.getBaseMetaTileEntity().getStoredEU(); -- maxEnergy+=tHatch.getBaseMetaTileEntity().getEUCapacity(); -- } -- } -- -- return new String[]{ -- "Progress:", -- EnumChatFormatting.GREEN + Integer.toString(mProgresstime/20) + EnumChatFormatting.RESET +" s / "+ -- EnumChatFormatting.YELLOW + Integer.toString(mMaxProgresstime/20) + EnumChatFormatting.RESET +" s", -- "Stored Energy:", -- EnumChatFormatting.GREEN + Long.toString(storedEnergy) + EnumChatFormatting.RESET +" EU / "+ -- EnumChatFormatting.YELLOW + Long.toString(maxEnergy) + EnumChatFormatting.RESET +" EU", -- "Probably uses: "+ -- EnumChatFormatting.RED + Integer.toString(-mEUt) + EnumChatFormatting.RESET + " EU/t", -- "Maximum total power (to all Energy Hatches, not single ones): ", -- EnumChatFormatting.YELLOW+Long.toString(getMaxInputVoltage())+EnumChatFormatting.RESET+ " EU/t * 2A", -- "Problems: "+ -- EnumChatFormatting.RED+ (getIdealStatus() - getRepairStatus())+EnumChatFormatting.RESET+ -- " Efficiency: "+ -- EnumChatFormatting.YELLOW+Float.toString(mEfficiency / 100.0F)+EnumChatFormatting.RESET + " %", -- "Pollution reduced to: "+ EnumChatFormatting.GREEN + mPollutionReduction+ EnumChatFormatting.RESET+" %", -- "Extraction this cycle: "+ EnumChatFormatting.GOLD + extractionSpeed + EnumChatFormatting.RESET+" L" -- }; -- } --} -diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrill1.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrill1.java -new file mode 100644 -index 0000000..750978a ---- /dev/null -+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrill1.java -@@ -0,0 +1,51 @@ -+package gregtech.common.tileentities.machines.multi; -+ -+import gregtech.api.enums.ItemList; -+import gregtech.api.enums.Materials; -+import gregtech.api.interfaces.metatileentity.IMetaTileEntity; -+import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -+ -+public class GT_MetaTileEntity_OilDrill1 extends GT_MetaTileEntity_OilDrillBase { -+ public GT_MetaTileEntity_OilDrill1(int aID, String aName, String aNameRegional) { -+ super(aID, aName, aNameRegional); -+ } -+ -+ public GT_MetaTileEntity_OilDrill1(String aName) { -+ super(aName); -+ } -+ -+ @Override -+ public String[] getDescription() { -+ return getDescriptionInternal("I"); -+ } -+ -+ @Override -+ public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { -+ return new GT_MetaTileEntity_OilDrill1(mName); -+ } -+ -+ @Override -+ protected ItemList getCasingBlockItem() { -+ return ItemList.Casing_SolidSteel; -+ } -+ -+ @Override -+ protected Materials getFrameMaterial() { -+ return Materials.Steel; -+ } -+ -+ @Override -+ protected int getCasingTextureIndex() { -+ return 16; -+ } -+ -+ @Override -+ protected int getRangeInChunks() { -+ return 1; -+ } -+ -+ @Override -+ protected int getMinTier() { -+ return 2; -+ } -+} -\ No newline at end of file -diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrill2.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrill2.java -new file mode 100644 -index 0000000..00b6f19 ---- /dev/null -+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrill2.java -@@ -0,0 +1,51 @@ -+package gregtech.common.tileentities.machines.multi; -+ -+import gregtech.api.enums.ItemList; -+import gregtech.api.enums.Materials; -+import gregtech.api.interfaces.metatileentity.IMetaTileEntity; -+import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -+ -+public class GT_MetaTileEntity_OilDrill2 extends GT_MetaTileEntity_OilDrillBase { -+ public GT_MetaTileEntity_OilDrill2(int aID, String aName, String aNameRegional) { -+ super(aID, aName, aNameRegional); -+ } -+ -+ public GT_MetaTileEntity_OilDrill2(String aName) { -+ super(aName); -+ } -+ -+ @Override -+ public String[] getDescription() { -+ return getDescriptionInternal("II"); -+ } -+ -+ @Override -+ public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { -+ return new GT_MetaTileEntity_OilDrill2(mName); -+ } -+ -+ @Override -+ protected ItemList getCasingBlockItem() { -+ return ItemList.Casing_StableTitanium; -+ } -+ -+ @Override -+ protected Materials getFrameMaterial() { -+ return Materials.Titanium; -+ } -+ -+ @Override -+ protected int getCasingTextureIndex() { -+ return 50; -+ } -+ -+ @Override -+ protected int getRangeInChunks() { -+ return 3; -+ } -+ -+ @Override -+ protected int getMinTier() { -+ return 3; -+ } -+} -\ No newline at end of file -diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrill3.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrill3.java -new file mode 100644 -index 0000000..164ece9 ---- /dev/null -+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrill3.java -@@ -0,0 +1,51 @@ -+package gregtech.common.tileentities.machines.multi; -+ -+import gregtech.api.enums.ItemList; -+import gregtech.api.enums.Materials; -+import gregtech.api.interfaces.metatileentity.IMetaTileEntity; -+import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -+ -+public class GT_MetaTileEntity_OilDrill3 extends GT_MetaTileEntity_OilDrillBase { -+ public GT_MetaTileEntity_OilDrill3(int aID, String aName, String aNameRegional) { -+ super(aID, aName, aNameRegional); -+ } -+ -+ public GT_MetaTileEntity_OilDrill3(String aName) { -+ super(aName); -+ } -+ -+ @Override -+ public String[] getDescription() { -+ return getDescriptionInternal("III"); -+ } -+ -+ @Override -+ public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { -+ return new GT_MetaTileEntity_OilDrill3(mName); -+ } -+ -+ @Override -+ protected ItemList getCasingBlockItem() { -+ return ItemList.Casing_RobustTungstenSteel; -+ } -+ -+ @Override -+ protected Materials getFrameMaterial() { -+ return Materials.TungstenSteel; -+ } -+ -+ @Override -+ protected int getCasingTextureIndex() { -+ return 48; -+ } -+ -+ @Override -+ protected int getRangeInChunks() { -+ return 6; -+ } -+ -+ @Override -+ protected int getMinTier() { -+ return 4; -+ } -+} -\ No newline at end of file -diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrillBase.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrillBase.java -new file mode 100644 -index 0000000..23fafc3 ---- /dev/null -+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrillBase.java -@@ -0,0 +1,152 @@ -+package gregtech.common.tileentities.machines.multi; -+ -+import static gregtech.api.enums.GT_Values.V; -+import static gregtech.api.enums.GT_Values.VN; -+import static gregtech.common.GT_UndergroundOil.undergroundOil; -+ -+import java.util.ArrayList; -+ -+import gregtech.api.gui.GT_GUIContainer_MultiMachine; -+import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -+import gregtech.api.util.GT_Utility; -+import net.minecraft.entity.player.InventoryPlayer; -+import net.minecraft.item.ItemStack; -+import net.minecraft.nbt.NBTTagCompound; -+import net.minecraft.world.chunk.Chunk; -+import net.minecraftforge.fluids.FluidRegistry; -+import net.minecraftforge.fluids.FluidStack; -+ -+public abstract class GT_MetaTileEntity_OilDrillBase extends GT_MetaTileEntity_DrillerBase { -+ -+ private boolean completedCycle = false; -+ -+ private ArrayList<Chunk> mOilFieldChunks = new ArrayList<Chunk>(); -+ private int mOilId = 0; -+ -+ public GT_MetaTileEntity_OilDrillBase(int aID, String aName, String aNameRegional) { -+ super(aID, aName, aNameRegional); -+ } -+ -+ public GT_MetaTileEntity_OilDrillBase(String aName) { -+ super(aName); -+ } -+ -+ @Override -+ public void saveNBTData(NBTTagCompound aNBT) { -+ super.saveNBTData(aNBT); -+ aNBT.setInteger("mOilId", mOilId); -+ } -+ -+ @Override -+ public void loadNBTData(NBTTagCompound aNBT) { -+ super.loadNBTData(aNBT); -+ mOilId = aNBT.getInteger("mOilId"); -+ } -+ -+ protected String[] getDescriptionInternal(String tierSuffix) { -+ String casings = getCasingBlockItem().get(0).getDisplayName(); -+ return new String[]{ -+ "Controller Block for the Oil Drilling Rig " + (tierSuffix != null ? tierSuffix : ""), -+ "Size(WxHxD): 3x7x3", "Controller (Front middle at bottom)", -+ "3x1x3 Base of " + casings, -+ "1x3x1 " + casings + " pillar (Center of base)", -+ "1x3x1 " + getFrameMaterial().mName + " Frame Boxes (Each pillar side and on top)", -+ "1x Output Hatch (One of base casings)", -+ "1x Maintenance Hatch (One of base casings)", -+ "1x " + VN[getMinTier()] + "+ Energy Hatch (Any bottom layer casing)", -+ "Working on " + getRangeInChunks() + " * " + getRangeInChunks() + " chunks", -+ "Use Programmed Circuits to ignore near exhausted oil field"}; -+ } -+ -+ -+ @Override -+ public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) { -+ return new GT_GUIContainer_MultiMachine(aPlayerInventory, aBaseMetaTileEntity, getLocalName(), "DrillingRig.png"); -+ } -+ -+ protected int getRangeInChunks(){ -+ return 0; -+ } -+ -+ @Override -+ protected boolean checkHatches() { -+ return !mMaintenanceHatches.isEmpty() && !mOutputHatches.isEmpty() && !mEnergyHatches.isEmpty(); -+ } -+ -+ @Override -+ protected void setElectricityStats() { -+ this.mEfficiency = getCurrentEfficiency(null); -+ this.mEfficiencyIncrease = 10000; -+ //T1 = 24; T2 = 96; T3 = 384 -+ this.mEUt = 6 * (1 << (getMinTier() << 1)); -+ //160 per chunk in MV -+ this.mMaxProgresstime = (isPickingPipes ? 80 : 640 * getRangeInChunks() * getRangeInChunks()) / (1 << getMinTier()); -+ -+ long voltage = getMaxInputVoltage(); -+ long overclockEu = V[Math.max(1, GT_Utility.getTier(voltage)) - 1]; -+ while (this.mEUt <= overclockEu) { -+ this.mEUt *= 4; -+ this.mMaxProgresstime /= 2; -+ } -+ -+ this.mEUt = -this.mEUt; -+ this.mMaxProgresstime = Math.max(1, this.mMaxProgresstime); -+ } -+ -+ @Override -+ protected boolean workingDownward(ItemStack aStack, int xDrill, int yDrill, int zDrill, int xPipe, int zPipe, int yHead, int oldYHead){ -+ if (!tryLowerPipe()){ -+ if (waitForPipes()) return false; -+ if (tryFillChunkList()) { -+ float speed = .5F+(GT_Utility.getTier(getMaxInputVoltage()) - getMinTier()) *.25F; -+ FluidStack tFluid = pumpOil(speed); -+ if (tFluid != null && tFluid.amount > getTotalConfigValue()){ -+ this.mOutputFluids = new FluidStack[]{tFluid}; -+ return true; -+ } -+ } -+ isPickingPipes = true; -+ return true; -+ } -+ return true; -+ } -+ -+ private boolean tryFillChunkList(){ -+ FluidStack tFluid, tOil; -+ if (mOilId <= 0) { -+ tFluid = undergroundOil(getBaseMetaTileEntity(), -1); -+ if (tFluid == null) return false; -+ mOilId = tFluid.getFluidID(); -+ } -+ tOil = new FluidStack(FluidRegistry.getFluid(mOilId), 0); -+ -+ if (mOilFieldChunks.isEmpty()) { -+ Chunk tChunk = getBaseMetaTileEntity().getWorld().getChunkFromBlockCoords(getBaseMetaTileEntity().getXCoord(), getBaseMetaTileEntity().getZCoord()); -+ int range = getRangeInChunks(); -+ int xChunk = (tChunk.xPosition / range) * range, zChunk = (tChunk.zPosition / range) * range; -+ int xDir = tChunk.xPosition < 0 ? -1 : 1, zDir = tChunk.zPosition < 0 ? -1 : 1; -+ for (int i = 0; i < range; i++) { -+ for (int j = 0; j < range; j++) { -+ tChunk = getBaseMetaTileEntity().getWorld().getChunkFromChunkCoords(xChunk + i * xDir, zChunk + j * zDir); -+ tFluid = undergroundOil(tChunk, -1); -+ if (tOil.isFluidEqual(tFluid)) -+ mOilFieldChunks.add(tChunk); -+ } -+ } -+ } -+ if (mOilFieldChunks.isEmpty()) return false; -+ return true; -+ } -+ -+ private FluidStack pumpOil(float speed){ -+ if (mOilId <= 0) return null; -+ FluidStack tFluid, tOil; -+ tOil = new FluidStack(FluidRegistry.getFluid(mOilId), 0); -+ for (Chunk tChunk : mOilFieldChunks) { -+ tFluid = undergroundOil(getBaseMetaTileEntity(),speed); -+ if (tFluid == null) mOilFieldChunks.remove(tChunk); -+ if (tOil.isFluidEqual(tFluid)) tOil.amount += tFluid.amount; -+ } -+ return tOil.amount == 0 ? null : tOil; -+ } -+} -\ No newline at end of file -diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlantBase.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlantBase.java -index 3d8dbb0..c34d8b0 100644 ---- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlantBase.java -+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OreDrillingPlantBase.java -@@ -1,18 +1,16 @@ - package gregtech.common.tileentities.machines.multi; - --import gregtech.api.GregTech_API; -+import static gregtech.api.enums.GT_Values.V; -+import static gregtech.api.enums.GT_Values.VN; -+ -+import java.util.ArrayList; -+ - import gregtech.api.enums.ItemList; - import gregtech.api.enums.Materials; - import gregtech.api.enums.OrePrefixes; --import gregtech.api.enums.Textures; - import gregtech.api.gui.GT_GUIContainer_MultiMachine; --import gregtech.api.interfaces.ITexture; - import gregtech.api.interfaces.tileentity.IGregTechTileEntity; --import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Energy; --import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; --import gregtech.api.objects.GT_RenderedTexture; - import gregtech.api.objects.ItemData; --import gregtech.api.util.GT_ModHandler; - import gregtech.api.util.GT_OreDictUnificator; - import gregtech.api.util.GT_Recipe; - import gregtech.api.util.GT_Utility; -@@ -22,106 +20,40 @@ import net.minecraft.block.Block; - import net.minecraft.entity.player.InventoryPlayer; - import net.minecraft.init.Blocks; - import net.minecraft.item.ItemStack; --import net.minecraft.nbt.NBTTagCompound; - import net.minecraft.tileentity.TileEntity; - import net.minecraft.world.ChunkPosition; --import net.minecraftforge.common.util.ForgeDirection; - import net.minecraftforge.fluids.FluidStack; - --import java.util.ArrayList; -- --import static gregtech.api.enums.GT_Values.*; -- --public abstract class GT_MetaTileEntity_OreDrillingPlantBase extends GT_MetaTileEntity_MultiBlockBase { -- private static final ItemStack miningPipe = GT_ModHandler.getIC2Item("miningPipe", 0); -- private static final ItemStack miningPipeTip = GT_ModHandler.getIC2Item("miningPipeTip", 0); -- private static final Block miningPipeBlock = GT_Utility.getBlockFromStack(miningPipe); -- private static final Block miningPipeTipBlock = GT_Utility.getBlockFromStack(miningPipeTip); -+public abstract class GT_MetaTileEntity_OreDrillingPlantBase extends GT_MetaTileEntity_DrillerBase { - - private final ArrayList<ChunkPosition> oreBlockPositions = new ArrayList<>(); - -- private Block casingBlock; -- private int casingMeta; -- private int frameMeta; -- private int casingTextureIndex; -- -- private ForgeDirection back; -- private int xDrill, yDrill, zDrill, xCenter, zCenter, yHead; -- -- private boolean isPickingPipes; -- - public GT_MetaTileEntity_OreDrillingPlantBase(int aID, String aName, String aNameRegional) { - super(aID, aName, aNameRegional); -- initFields(); - } - - public GT_MetaTileEntity_OreDrillingPlantBase(String aName) { - super(aName); -- initFields(); -- } -- -- private void initFields() { -- casingBlock = getCasingBlockItem().getBlock(); -- casingMeta = getCasingBlockItem().get(0).getItemDamage(); -- int frameId = 4096 + getFrameMaterial().mMetaItemSubID; -- frameMeta = GregTech_API.METATILEENTITIES[frameId] != null ? GregTech_API.METATILEENTITIES[frameId].getTileEntityBaseType() : W; -- casingTextureIndex = getCasingTextureIndex(); -- isPickingPipes = false; -- } -- -- public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex, boolean aActive, boolean aRedstone) { -- if (aSide == aFacing) -- return new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[casingTextureIndex],new GT_RenderedTexture(aActive ? Textures.BlockIcons.OVERLAY_FRONT_ORE_DRILL_ACTIVE : Textures.BlockIcons.OVERLAY_FRONT_ORE_DRILL)}; -- return new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[casingTextureIndex]}; - } - -+ @Override - public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) { - return new GT_GUIContainer_MultiMachine(aPlayerInventory, aBaseMetaTileEntity, getLocalName(), "OreDrillingPlant.png"); - } - - @Override -- public void saveNBTData(NBTTagCompound aNBT) { -- super.saveNBTData(aNBT); -- aNBT.setBoolean("isPickingPipes", isPickingPipes); -- } -- -- @Override -- public void loadNBTData(NBTTagCompound aNBT) { -- super.loadNBTData(aNBT); -- isPickingPipes = aNBT.getBoolean("isPickingPipes"); -- } -- -- @Override -- public boolean checkRecipe(ItemStack aStack) { -- setElectricityStats(); -- int oldYHead = yHead; -- if (!checkPipesAndSetYHead() || !isEnergyEnough()) { -- stopMachine(); -- return false; -- } -+ protected boolean workingDownward(ItemStack aStack, int xDrill, int yDrill, int zDrill, int xPipe, int zPipe, int yHead, int oldYHead){ - if (yHead != oldYHead) oreBlockPositions.clear(); -- if (isPickingPipes) { -- if (tryPickPipe()) { -- mOutputItems = new ItemStack[] {GT_Utility.copyAmount(1, miningPipe)}; -- return true; -- } else { -- isPickingPipes = false; -- stopMachine(); -- return false; -- } -- } -- -- putMiningPipesFromInputsInController(); -- if (!tryConsumeDrillingFluid()) return false; - -- fillMineListIfEmpty(); -+ fillMineListIfEmpty(xDrill, yDrill, zDrill, xPipe, zPipe, yHead); - if (oreBlockPositions.isEmpty()) { - if (!tryLowerPipe()) { -+ if (waitForPipes()) return false; - isPickingPipes = true; - return true; - } - //new layer - fill again -- fillMineListIfEmpty(); -+ fillMineListIfEmpty(xDrill, yDrill, zDrill, xPipe, zPipe, yHead); - } - - ChunkPosition oreBlockPos = null; -@@ -132,6 +64,7 @@ public abstract class GT_MetaTileEntity_OreDrillingPlantBase extends GT_MetaTile - oreBlock = getBaseMetaTileEntity().getBlock(oreBlockPos.chunkPosX, oreBlockPos.chunkPosY, oreBlockPos.chunkPosZ); - } - -+ if (!tryConsumeDrillingFluid()) return false; - if (oreBlock != null && oreBlock != Blocks.air) { - ArrayList<ItemStack> oreBlockDrops = getBlockDrops(oreBlock, oreBlockPos.chunkPosX, oreBlockPos.chunkPosY, oreBlockPos.chunkPosZ); - getBaseMetaTileEntity().getWorld().setBlockToAir(oreBlockPos.chunkPosX, oreBlockPos.chunkPosY, oreBlockPos.chunkPosZ); -@@ -141,24 +74,13 @@ public abstract class GT_MetaTileEntity_OreDrillingPlantBase extends GT_MetaTile - return true; - } - -- private boolean isEnergyEnough() { -- long requiredEnergy = 512 + getMaxInputVoltage() * 4; -- for (GT_MetaTileEntity_Hatch_Energy energyHatch : mEnergyHatches) { -- requiredEnergy -= energyHatch.getEUVar(); -- if (requiredEnergy <= 0) return true; -- } -- return false; -- } -- -- private boolean tryPickPipe() { -- if (yHead == yDrill) return false; -- if (checkBlockAndMeta(xCenter, yHead + 1, zCenter, miningPipeBlock, W)) -- getBaseMetaTileEntity().getWorld().setBlock(xCenter, yHead + 1, zCenter, miningPipeTipBlock); -- getBaseMetaTileEntity().getWorld().setBlockToAir(xCenter, yHead, zCenter); -- return true; -+ @Override -+ protected boolean checkHatches(){ -+ return !mMaintenanceHatches.isEmpty() && !mInputHatches.isEmpty() && !mOutputBusses.isEmpty() && !mEnergyHatches.isEmpty(); - } - -- private void setElectricityStats() { -+ @Override -+ protected void setElectricityStats() { - this.mEfficiency = getCurrentEfficiency(null); - this.mEfficiencyIncrease = 10000; - //T1 = 12; T2 = 48; T3 = 192; T4 = 768 -@@ -227,37 +149,17 @@ public abstract class GT_MetaTileEntity_OreDrillingPlantBase extends GT_MetaTile - } - - private boolean tryConsumeDrillingFluid() { -- return depleteInput(new FluidStack(ItemList.sDrillingFluid, 2000)); -- } -- -- private void putMiningPipesFromInputsInController() { -- int maxPipes = miningPipe.getMaxStackSize(); -- if (isHasMiningPipes(maxPipes)) return; -- -- ItemStack pipes = getStackInSlot(1); -- for (ItemStack storedItem : getStoredInputs()) { -- if (!storedItem.isItemEqual(miningPipe)) continue; -- -- if (pipes == null) { -- setInventorySlotContents(1, GT_Utility.copy(miningPipe)); -- pipes = getStackInSlot(1); -- } -- -- if (pipes.stackSize == maxPipes) break; -- -- int needPipes = maxPipes - pipes.stackSize; -- int transferPipes = storedItem.stackSize < needPipes ? storedItem.stackSize : needPipes; -- -- pipes.stackSize += transferPipes; -- storedItem.stackSize -= transferPipes; -+ if (!depleteInput(new FluidStack(ItemList.sDrillingFluid, 2000))) { -+ mMaxProgresstime = 0; -+ return false; - } -- updateSlots(); -+ return true; - } - -- private void fillMineListIfEmpty() { -+ private void fillMineListIfEmpty(int xDrill, int yDrill, int zDrill, int xPipe, int zPipe, int yHead) { - if (!oreBlockPositions.isEmpty()) return; - -- tryAddOreBlockToMineList(xCenter, yHead - 1, zCenter); -+ tryAddOreBlockToMineList(xPipe, yHead - 1, zPipe); - if (yHead == yDrill) return; //skip controller block layer - - int radius = getRadiusInChunks() << 4; -@@ -282,131 +184,8 @@ public abstract class GT_MetaTileEntity_OreDrillingPlantBase extends GT_MetaTile - } - } - -- private boolean tryLowerPipe() { -- if (!isHasMiningPipes()) return false; -- -- if (yHead <= 0) return false; -- if (checkBlockAndMeta(xCenter, yHead - 1, zCenter, Blocks.bedrock, W)) return false; -- -- getBaseMetaTileEntity().getWorld().setBlock(xCenter, yHead - 1, zCenter, miningPipeTipBlock); -- if (yHead != yDrill) getBaseMetaTileEntity().getWorld().setBlock(xCenter, yHead, zCenter, miningPipeBlock); -- -- getBaseMetaTileEntity().decrStackSize(1, 1); -- return true; -- } -- -- private boolean isHasMiningPipes() { -- return isHasMiningPipes(1); -- } -- -- private boolean isHasMiningPipes(int minCount) { -- ItemStack pipe = getStackInSlot(1); -- return pipe != null && pipe.stackSize > minCount - 1 && pipe.isItemEqual(miningPipe); -- } -- -- @Override -- public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) { -- updateCoordinates(); -- //check base layer -- for (int xOff = -1 + back.offsetX; xOff <= 1 + back.offsetX; xOff++) { -- for (int zOff = -1 + back.offsetZ; zOff <= 1 + back.offsetZ; zOff++) { -- if (xOff == 0 && zOff == 0) continue; -- -- IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xOff, 0, zOff); -- if (!checkCasingBlock(xOff, 0, zOff) -- && !addMaintenanceToMachineList(tTileEntity, casingTextureIndex) -- && !addInputToMachineList(tTileEntity, casingTextureIndex) -- && !addOutputToMachineList(tTileEntity, casingTextureIndex) -- && !addEnergyInputToMachineList(tTileEntity, casingTextureIndex)) -- return false; -- } -- } -- if (mMaintenanceHatches.isEmpty() || mInputHatches.isEmpty() || mOutputBusses.isEmpty() || mEnergyHatches.isEmpty()) return false; -- if (GT_Utility.getTier(getMaxInputVoltage()) < getMinTier()) return false; -- //check tower -- for (int yOff = 1; yOff < 4; yOff++) { -- if (!checkCasingBlock(back.offsetX, yOff, back.offsetZ) -- || !checkFrameBlock(back.offsetX + 1, yOff, back.offsetZ) -- || !checkFrameBlock(back.offsetX - 1, yOff, back.offsetZ) -- || !checkFrameBlock(back.offsetX, yOff, back.offsetZ + 1) -- || !checkFrameBlock(back.offsetX, yOff, back.offsetZ - 1) -- || !checkFrameBlock(back.offsetX, yOff + 3, back.offsetZ)) -- return false; -- } -- return true; -- } -- -- private void updateCoordinates() { -- xDrill = getBaseMetaTileEntity().getXCoord(); -- yDrill = getBaseMetaTileEntity().getYCoord(); -- zDrill = getBaseMetaTileEntity().getZCoord(); -- back = ForgeDirection.getOrientation(getBaseMetaTileEntity().getBackFacing()); -- xCenter = xDrill + back.offsetX; -- zCenter = zDrill + back.offsetZ; -- } -- -- private boolean checkPipesAndSetYHead() { -- yHead = yDrill - 1; -- while (checkBlockAndMeta(xCenter, yHead, zCenter, miningPipeBlock, W)) yHead--; //skip pipes -- //is pipe tip OR is controller layer -- if (checkBlockAndMeta(xCenter, yHead, zCenter, miningPipeTipBlock, W) || ++yHead == yDrill) return true; -- //pipe column is broken - try fix -- getBaseMetaTileEntity().getWorld().setBlock(xCenter, yHead, zCenter, miningPipeTipBlock); -- return true; -- } -- -- private boolean checkCasingBlock(int xOff, int yOff, int zOff) { -- return checkBlockAndMetaOffset(xOff, yOff, zOff, casingBlock, casingMeta); -- } -- //meta of frame is getTileEntityBaseType; frame should be checked using its drops (possible a high weight operation) -- private boolean checkFrameBlock(int xOff, int yOff, int zOff) { -- return checkBlockAndMetaOffset(xOff, yOff, zOff, GregTech_API.sBlockMachines, frameMeta); -- } -- -- private boolean checkBlockAndMetaOffset(int xOff, int yOff, int zOff, Block block, int meta) { -- return checkBlockAndMeta(xDrill + xOff, yDrill + yOff, zDrill + zOff, block, meta); -- } -- -- private boolean checkBlockAndMeta(int x, int y, int z, Block block, int meta) { -- return (meta == W || getBaseMetaTileEntity().getMetaID(x, y, z) == meta) -- && getBaseMetaTileEntity().getBlock(x, y, z) == block; -- } -- -- @Override -- public boolean isCorrectMachinePart(ItemStack aStack) { -- return true; -- } -- -- @Override -- public int getMaxEfficiency(ItemStack aStack) { -- return 10000; -- } -- -- @Override -- public int getPollutionPerTick(ItemStack aStack) { -- return 0; -- } -- -- @Override -- public int getDamageToComponent(ItemStack aStack) { -- return 0; -- } -- -- @Override -- public boolean explodesOnComponentBreak(ItemStack aStack) { -- return false; -- } -- -- protected abstract ItemList getCasingBlockItem(); -- -- protected abstract Materials getFrameMaterial(); -- -- protected abstract int getCasingTextureIndex(); -- - protected abstract int getRadiusInChunks(); - -- protected abstract int getMinTier(); -- - protected String[] getDescriptionInternal(String tierSuffix) { - String casings = getCasingBlockItem().get(0).getDisplayName(); - return new String[]{ -@@ -422,4 +201,4 @@ public abstract class GT_MetaTileEntity_OreDrillingPlantBase extends GT_MetaTile - "1x " + VN[getMinTier()] + "+ Energy Hatch (Any bottom layer casing)", - "Radius is " + (getRadiusInChunks() << 4) + " blocks"}; - } --} -+} -\ No newline at end of file -diff --git a/src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java b/src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java -index d0eb0f6..72dcf42 100644 ---- a/src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java -+++ b/src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java -@@ -1234,8 +1234,17 @@ public class GT_Loader_MetaTileEntities implements Runnable {//TODO CHECK CIRCUI - GT_ModHandler.addCraftingRecipe(ItemList.Seismic_Prospector.get(1L, new Object[0]), bitsd, new Object[]{"WWW", "EME", "CCC", 'M', ItemList.Hull_HP, 'W', OrePrefixes.plateDouble.get(Materials.Steel), 'E', OrePrefixes.circuit.get(Materials.Basic), 'C', ItemList.Sensor_LV}); - GT_ModHandler.addCraftingRecipe(ItemList.Seismic_Prospector_Adv.get(1L, new Object[0]), bitsd, new Object[] { "WWW", "EME", "CCC", 'M', ItemList.Hull_EV, 'W', OrePrefixes.plateDouble.get(Materials.VanadiumSteel),'E', OrePrefixes.circuit.get(Materials.Data), 'C', ItemList.Sensor_EV }); - -- ItemList.OilDrill.set(new GT_MetaTileEntity_OilDrill(1157, "multimachine.oildrill", "Oil Drilling Rig").getStackForm(1)); -- GT_ModHandler.addCraftingRecipe(ItemList.OilDrill.get(1L, new Object[0]), bitsd, new Object[]{"WWW", "EME", "CCC", 'M', ItemList.Hull_MV, 'W', OrePrefixes.frameGt.get(Materials.Steel), 'E', OrePrefixes.circuit.get(Materials.Good), 'C', ItemList.Electric_Motor_MV}); -+ ItemList.OilDrill1.set(new GT_MetaTileEntity_OilDrill1(1157, "multimachine.oildrill1", "Oil Drilling Rig").getStackForm(1)); -+ ItemList.OilDrill2.set(new GT_MetaTileEntity_OilDrill2(133, "multimachine.oildrill2", "Oil Drilling Rig II").getStackForm(1)); -+ ItemList.OilDrill3.set(new GT_MetaTileEntity_OilDrill3(134, "multimachine.oildrill3", "Oil Drilling Rig III").getStackForm(1)); -+ GT_ModHandler.addCraftingRecipe(ItemList.OilDrill1.get(1L, new Object[0]), bitsd, new Object[]{"WWW", "EME", "CCC", 'M', ItemList.Hull_MV, 'W', OrePrefixes.frameGt.get(Materials.Steel), 'E', OrePrefixes.circuit.get(Materials.Good), 'C', ItemList.Electric_Motor_MV}); -+ GT_ModHandler.addCraftingRecipe(ItemList.OilDrill1.get(1L, new Object[0]), bitsd, new Object[]{"WWW", "EME", "CCC", 'M', ItemList.OilDrill1, 'W', OrePrefixes.frameGt.get(Materials.Titanium), 'E', OrePrefixes.circuit.get(Materials.Advanced), 'C', ItemList.Electric_Motor_HV}); -+ GT_ModHandler.addCraftingRecipe(ItemList.OilDrill1.get(1L, new Object[0]), bitsd, new Object[]{"WWW", "EME", "CCC", 'M', ItemList.OilDrill2, 'W', OrePrefixes.frameGt.get(Materials.TungstenSteel), 'E', OrePrefixes.circuit.get(Materials.Data), 'C', ItemList.Electric_Motor_EV}); -+ -+ ItemList.ConcreteBackfiller1.set(new GT_MetaTileEntity_ConcreteBackfiller1(135, "multimachine.concretebackfiller1", "Concrete Backfiller").getStackForm(1)); -+ ItemList.ConcreteBackfiller2.set(new GT_MetaTileEntity_ConcreteBackfiller2(136, "multimachine.concretebackfiller3", "Advanced Concrete Backfiller").getStackForm(1)); -+ GT_ModHandler.addCraftingRecipe(ItemList.ConcreteBackfiller1.get(1L, new Object[0]), bitsd, new Object[]{"WPW", "EME", "CQC", 'M', ItemList.Hull_MV, 'W', OrePrefixes.frameGt.get(Materials.Steel), 'E', OrePrefixes.circuit.get(Materials.Good), 'C', ItemList.Electric_Motor_MV, 'P', OrePrefixes.pipeLarge.get(Materials.Steel), 'Q', ItemList.Electric_Pump_MV}); -+ GT_ModHandler.addCraftingRecipe(ItemList.ConcreteBackfiller2.get(1L, new Object[0]), bitsd, new Object[]{"WPW", "EME", "CQC", 'M', ItemList.ConcreteBackfiller1, 'W', OrePrefixes.frameGt.get(Materials.Titanium), 'E', OrePrefixes.circuit.get(Materials.Data), 'C', ItemList.Electric_Motor_EV, 'P', OrePrefixes.pipeLarge.get(Materials.Steel), 'Q', ItemList.Electric_Pump_EV}); - - ItemList.OreDrill1.set(new GT_MetaTileEntity_OreDrillingPlant1(1158, "multimachine.oredrill1", "Ore Drilling Plant").getStackForm(1)); - GT_ModHandler.addCraftingRecipe(ItemList.OreDrill1.get(1L), bitsd, new Object[]{"WWW", "EME", "CCC", 'M', ItemList.Hull_EV, 'W', OrePrefixes.frameGt.get(Materials.Titanium), 'E', OrePrefixes.circuit.get(Materials.Data), 'C', ItemList.Electric_Motor_EV}); --- -1.9.5.msysgit.0 - -From ffc256ab87f905fa21bdb7102212cafa54c9f6bd Mon Sep 17 00:00:00 2001 -From: Dream-Master <dream-master@gmx.net> -Date: Tue, 12 Sep 2017 22:41:17 +0200 -Subject: [PATCH] cherry pick 61d058201244d9dd6f19ed72c863722b7da0ad14 - bab71c5349799ba77ac42f80c54725a999fab40c - -Fix #1206 #1210 Fix NPE of fluid check. -https://github.com/Blood-Asp/GT5-Unofficial/pull/1210 ---- - .../machines/basic/GT_MetaTileEntity_MicrowaveEnergyTransmitter.java | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_MicrowaveEnergyTransmitter.java b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_MicrowaveEnergyTransmitter.java -index 934be4c..abdc569 100644 ---- a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_MicrowaveEnergyTransmitter.java -+++ b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_MicrowaveEnergyTransmitter.java -@@ -153,7 +153,8 @@ public class GT_MetaTileEntity_MicrowaveEnergyTransmitter extends GT_MetaTileEnt - sInterDimensionalTeleportAllowed && - ( - this.hasBlock || -- mFluid.isFluidEqual(Materials.Nitrogen.getPlasma(1)) && mFluid.amount >= 1000 -+ mFluid != null && mFluid.isFluidEqual(Materials.Nitrogen.getPlasma(1)) && mFluid.amount >= 1000 -+ - ) - ) - ; --- -1.9.5.msysgit.0 - -From 9dfe682c4415336f03631c5ccaeb762258be4912 Mon Sep 17 00:00:00 2001 -From: MineAnPlay <gelebekenes@hotmail.com> -Date: Tue, 12 Sep 2017 12:36:29 +0300 -Subject: [PATCH] Change back to old Rotor Solder Materials #1951 - -From multiples of 18 to multiples of 16 because obtaining multiples of 16 is easier. ---- - src/main/java/gregtech/loaders/oreprocessing/ProcessingRotor.java | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/main/java/gregtech/loaders/oreprocessing/ProcessingRotor.java b/src/main/java/gregtech/loaders/oreprocessing/ProcessingRotor.java -index d1ed3a8..a88d8ef 100644 ---- a/src/main/java/gregtech/loaders/oreprocessing/ProcessingRotor.java -+++ b/src/main/java/gregtech/loaders/oreprocessing/ProcessingRotor.java -@@ -14,9 +14,9 @@ public class ProcessingRotor implements gregtech.api.interfaces.IOreRecipeRegist - public void registerOre(OrePrefixes aPrefix, Materials aMaterial, String aOreDictName, String aModName, ItemStack aStack) { - if ((aMaterial.mUnificatable) && (aMaterial.mMaterialInto == aMaterial) && !aMaterial.contains(SubTag.NO_WORKING)) { - GT_ModHandler.addCraftingRecipe(GT_OreDictUnificator.get(OrePrefixes.rotor, aMaterial, 1L), GT_Proxy.tBits, new Object[]{"PhP", "SRf", "PdP", Character.valueOf('P'), aMaterial == Materials.Wood ? OrePrefixes.plank.get(aMaterial) : OrePrefixes.plate.get(aMaterial), Character.valueOf('R'), OrePrefixes.ring.get(aMaterial), Character.valueOf('S'), OrePrefixes.screw.get(aMaterial)}); -- GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 4L), GT_OreDictUnificator.get(OrePrefixes.ring, aMaterial, 1L), Materials.Tin.getMolten(36), GT_OreDictUnificator.get(OrePrefixes.rotor, aMaterial, 1L), 240, 24); -- GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 4L), GT_OreDictUnificator.get(OrePrefixes.ring, aMaterial, 1L), Materials.Lead.getMolten(54), GT_OreDictUnificator.get(OrePrefixes.rotor, aMaterial, 1L), 240, 24); -- GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 4L), GT_OreDictUnificator.get(OrePrefixes.ring, aMaterial, 1L), Materials.SolderingAlloy.getMolten(18), GT_OreDictUnificator.get(OrePrefixes.rotor, aMaterial, 1L), 240, 24); -+ GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 4L), GT_OreDictUnificator.get(OrePrefixes.ring, aMaterial, 1L), Materials.Tin.getMolten(32), GT_OreDictUnificator.get(OrePrefixes.rotor, aMaterial, 1L), 240, 24); -+ GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 4L), GT_OreDictUnificator.get(OrePrefixes.ring, aMaterial, 1L), Materials.Lead.getMolten(48), GT_OreDictUnificator.get(OrePrefixes.rotor, aMaterial, 1L), 240, 24); -+ GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 4L), GT_OreDictUnificator.get(OrePrefixes.ring, aMaterial, 1L), Materials.SolderingAlloy.getMolten(16), GT_OreDictUnificator.get(OrePrefixes.rotor, aMaterial, 1L), 240, 24); - GT_Values.RA.addExtruderRecipe(GT_OreDictUnificator.get(OrePrefixes.ingot, aMaterial, 5L), ItemList.Shape_Extruder_Rotor.get(0L, new Object[0]), GT_OreDictUnificator.get(OrePrefixes.rotor, aMaterial, 1L), 200, 60); - GT_Values.RA.addFluidSolidifierRecipe(ItemList.Shape_Mold_Rotor.get(1L, new Object[0]), aMaterial.getMolten(612L), GT_OreDictUnificator.get(OrePrefixes.rotor, aMaterial, 1L), 100, 60); - } --- -1.9.5.msysgit.0 - -From 9dfe682c4415336f03631c5ccaeb762258be4912 Mon Sep 17 00:00:00 2001 -From: MineAnPlay <gelebekenes@hotmail.com> -Date: Tue, 12 Sep 2017 12:36:29 +0300 -Subject: [PATCH] Change back to old Rotor Solder Materials #1951 - -From multiples of 18 to multiples of 16 because obtaining multiples of 16 is easier. ---- - src/main/java/gregtech/loaders/oreprocessing/ProcessingRotor.java | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/main/java/gregtech/loaders/oreprocessing/ProcessingRotor.java b/src/main/java/gregtech/loaders/oreprocessing/ProcessingRotor.java -index d1ed3a8..a88d8ef 100644 ---- a/src/main/java/gregtech/loaders/oreprocessing/ProcessingRotor.java -+++ b/src/main/java/gregtech/loaders/oreprocessing/ProcessingRotor.java -@@ -14,9 +14,9 @@ public class ProcessingRotor implements gregtech.api.interfaces.IOreRecipeRegist - public void registerOre(OrePrefixes aPrefix, Materials aMaterial, String aOreDictName, String aModName, ItemStack aStack) { - if ((aMaterial.mUnificatable) && (aMaterial.mMaterialInto == aMaterial) && !aMaterial.contains(SubTag.NO_WORKING)) { - GT_ModHandler.addCraftingRecipe(GT_OreDictUnificator.get(OrePrefixes.rotor, aMaterial, 1L), GT_Proxy.tBits, new Object[]{"PhP", "SRf", "PdP", Character.valueOf('P'), aMaterial == Materials.Wood ? OrePrefixes.plank.get(aMaterial) : OrePrefixes.plate.get(aMaterial), Character.valueOf('R'), OrePrefixes.ring.get(aMaterial), Character.valueOf('S'), OrePrefixes.screw.get(aMaterial)}); -- GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 4L), GT_OreDictUnificator.get(OrePrefixes.ring, aMaterial, 1L), Materials.Tin.getMolten(36), GT_OreDictUnificator.get(OrePrefixes.rotor, aMaterial, 1L), 240, 24); -- GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 4L), GT_OreDictUnificator.get(OrePrefixes.ring, aMaterial, 1L), Materials.Lead.getMolten(54), GT_OreDictUnificator.get(OrePrefixes.rotor, aMaterial, 1L), 240, 24); -- GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 4L), GT_OreDictUnificator.get(OrePrefixes.ring, aMaterial, 1L), Materials.SolderingAlloy.getMolten(18), GT_OreDictUnificator.get(OrePrefixes.rotor, aMaterial, 1L), 240, 24); -+ GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 4L), GT_OreDictUnificator.get(OrePrefixes.ring, aMaterial, 1L), Materials.Tin.getMolten(32), GT_OreDictUnificator.get(OrePrefixes.rotor, aMaterial, 1L), 240, 24); -+ GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 4L), GT_OreDictUnificator.get(OrePrefixes.ring, aMaterial, 1L), Materials.Lead.getMolten(48), GT_OreDictUnificator.get(OrePrefixes.rotor, aMaterial, 1L), 240, 24); -+ GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 4L), GT_OreDictUnificator.get(OrePrefixes.ring, aMaterial, 1L), Materials.SolderingAlloy.getMolten(16), GT_OreDictUnificator.get(OrePrefixes.rotor, aMaterial, 1L), 240, 24); - GT_Values.RA.addExtruderRecipe(GT_OreDictUnificator.get(OrePrefixes.ingot, aMaterial, 5L), ItemList.Shape_Extruder_Rotor.get(0L, new Object[0]), GT_OreDictUnificator.get(OrePrefixes.rotor, aMaterial, 1L), 200, 60); - GT_Values.RA.addFluidSolidifierRecipe(ItemList.Shape_Mold_Rotor.get(1L, new Object[0]), aMaterial.getMolten(612L), GT_OreDictUnificator.get(OrePrefixes.rotor, aMaterial, 1L), 100, 60); - } --- -1.9.5.msysgit.0 - -From b4764a64f29fdc1d70e233446b432dbd5f84e476 Mon Sep 17 00:00:00 2001 -From: Technus <daniel112092@gmail.com> -Date: Tue, 12 Sep 2017 06:55:51 +0200 -Subject: [PATCH] Next attempt on wires. - ---- - .../api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java -index 34e2303..c12bf2e 100644 ---- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java -+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java -@@ -23,6 +23,7 @@ import net.minecraft.entity.Entity; - import net.minecraft.entity.EntityLivingBase; - import net.minecraft.item.ItemStack; - import net.minecraft.nbt.NBTTagCompound; -+import net.minecraft.server.MinecraftServer; - import net.minecraft.tileentity.TileEntity; - import net.minecraft.util.AxisAlignedBB; - import net.minecraft.util.EnumChatFormatting; -@@ -250,8 +251,8 @@ public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTile - mTransferredAmperageOK=mTransferredAmperage; - mTransferredAmperage = 0; - -- tickDiff=Math.min((int)(aBaseMetaTileEntity.getWorld().getTotalWorldTime()-lastTickTime),1); -- lastTickTime=aBaseMetaTileEntity.getWorld().getTotalWorldTime(); -+ tickDiff=Math.min((int)(MinecraftServer.getServer().getTickCounter()-lastTickTime),1); -+ lastTickTime=MinecraftServer.getServer().getTickCounter(); - if(lastTickDiff<tickDiff) - mOverheat=(short)Math.max(0,mOverheat-100); - lastTickDiff=tickDiff; --- -1.9.5.msysgit.0 - -From f6dc74ca534bd488a3c537c09a1e6bb5e73593a4 Mon Sep 17 00:00:00 2001 -From: Technus <daniel112092@gmail.com> -Date: Tue, 12 Sep 2017 06:49:59 +0200 -Subject: [PATCH] Revert "Implement tick counter?" - -This reverts commit 0d9d2040bc43f4e18d227b3c51a3edc4f9994747. ---- - .../metatileentity/implementations/GT_MetaPipeEntity_Cable.java | 5 ++--- - src/main/java/gregtech/common/GT_Proxy.java | 8 -------- - 2 files changed, 2 insertions(+), 11 deletions(-) - -diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java -index b7d6b0a..34e2303 100644 ---- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java -+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java -@@ -33,7 +33,6 @@ import java.util.ArrayList; - import java.util.Arrays; - - import static gregtech.api.enums.GT_Values.VN; --import static gregtech.common.GT_Proxy.serverSideDimensionWiseTickCounter; - - public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTileEntityCable { - public final float mThickNess; -@@ -251,8 +250,8 @@ public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTile - mTransferredAmperageOK=mTransferredAmperage; - mTransferredAmperage = 0; - -- tickDiff=Math.min((int)(serverSideDimensionWiseTickCounter.get(aBaseMetaTileEntity.getWorld().provider.dimensionId)-lastTickTime),1); -- lastTickTime=serverSideDimensionWiseTickCounter.get(aBaseMetaTileEntity.getWorld().provider.dimensionId); -+ tickDiff=Math.min((int)(aBaseMetaTileEntity.getWorld().getTotalWorldTime()-lastTickTime),1); -+ lastTickTime=aBaseMetaTileEntity.getWorld().getTotalWorldTime(); - if(lastTickDiff<tickDiff) - mOverheat=(short)Math.max(0,mOverheat-100); - lastTickDiff=tickDiff; -diff --git a/src/main/java/gregtech/common/GT_Proxy.java b/src/main/java/gregtech/common/GT_Proxy.java -index d8d5060..f6d4ca6 100644 ---- a/src/main/java/gregtech/common/GT_Proxy.java -+++ b/src/main/java/gregtech/common/GT_Proxy.java -@@ -74,7 +74,6 @@ import java.text.DateFormat; - import java.util.*; - - public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler { -- public static HashMap<Integer,Long> serverSideDimensionWiseTickCounter =new HashMap<>(); - private static final EnumSet<OreGenEvent.GenerateMinable.EventType> PREVENTED_ORES = EnumSet.of(OreGenEvent.GenerateMinable.EventType.COAL, - new OreGenEvent.GenerateMinable.EventType[]{OreGenEvent.GenerateMinable.EventType.IRON, OreGenEvent.GenerateMinable.EventType.GOLD, - OreGenEvent.GenerateMinable.EventType.DIAMOND, OreGenEvent.GenerateMinable.EventType.REDSTONE, OreGenEvent.GenerateMinable.EventType.LAPIS, -@@ -1249,13 +1248,6 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler { - } - } - -- int dimID=aEvent.world.provider.dimensionId; -- if(serverSideDimensionWiseTickCounter.containsKey(dimID)){ -- serverSideDimensionWiseTickCounter.put(dimID, serverSideDimensionWiseTickCounter.get(dimID)+1); -- }else{ -- serverSideDimensionWiseTickCounter.put(dimID,0L); -- } -- - GT_Pollution.onWorldTick(aEvent); - } - } --- -1.9.5.msysgit.0 - -From b0cbd07d6ebb8c1489ce4b664e2eb9d22497e687 Mon Sep 17 00:00:00 2001 -From: Technus <daniel112092@gmail.com> -Date: Tue, 12 Sep 2017 06:49:51 +0200 -Subject: [PATCH] Revert "Minor optimization of tick counter" - -This reverts commit 9caaa58ea11b6477eaabdd509a554e90f60bc2ac. ---- - .../metatileentity/implementations/GT_MetaPipeEntity_Cable.java | 6 +++--- - src/main/java/gregtech/common/GT_Proxy.java | 8 +++++--- - 2 files changed, 8 insertions(+), 6 deletions(-) - -diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java -index a1a537c..b7d6b0a 100644 ---- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java -+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java -@@ -250,9 +250,9 @@ public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTile - mTransferredVoltage=0; - mTransferredAmperageOK=mTransferredAmperage; - mTransferredAmperage = 0; -- final int dimID=aBaseMetaTileEntity.getWorld().provider.dimensionId; -- tickDiff=Math.min((int)(serverSideDimensionWiseTickCounter.get(dimID)-lastTickTime),1); -- lastTickTime=serverSideDimensionWiseTickCounter.get(dimID); -+ -+ tickDiff=Math.min((int)(serverSideDimensionWiseTickCounter.get(aBaseMetaTileEntity.getWorld().provider.dimensionId)-lastTickTime),1); -+ lastTickTime=serverSideDimensionWiseTickCounter.get(aBaseMetaTileEntity.getWorld().provider.dimensionId); - if(lastTickDiff<tickDiff) - mOverheat=(short)Math.max(0,mOverheat-100); - lastTickDiff=tickDiff; -diff --git a/src/main/java/gregtech/common/GT_Proxy.java b/src/main/java/gregtech/common/GT_Proxy.java -index 844f1ef..d8d5060 100644 ---- a/src/main/java/gregtech/common/GT_Proxy.java -+++ b/src/main/java/gregtech/common/GT_Proxy.java -@@ -1249,10 +1249,12 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler { - } - } - -- final int dimID=aEvent.world.provider.dimensionId; -- if(serverSideDimensionWiseTickCounter.containsKey(dimID)) -+ int dimID=aEvent.world.provider.dimensionId; -+ if(serverSideDimensionWiseTickCounter.containsKey(dimID)){ - serverSideDimensionWiseTickCounter.put(dimID, serverSideDimensionWiseTickCounter.get(dimID)+1); -- else serverSideDimensionWiseTickCounter.put(dimID,0L); -+ }else{ -+ serverSideDimensionWiseTickCounter.put(dimID,0L); -+ } - - GT_Pollution.onWorldTick(aEvent); - } --- -1.9.5.msysgit.0 - -From f9cef30f7bdaaa101c9dac5feb37bf401582aacf Mon Sep 17 00:00:00 2001 -From: Dream-Master <dream-master@gmx.net> -Date: Mon, 11 Sep 2017 21:57:22 +0200 -Subject: [PATCH] revert - ---- - build.properties | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/build.properties b/build.properties -index 476007e..8f302e6 100644 ---- a/build.properties -+++ b/build.properties -@@ -1,7 +1,7 @@ - minecraft.version=1.7.10 - forge.version=10.13.4.1566-1.7.10 - --gt.version=5.09.32.02 -+gt.version=5.09.32.01 - - ae2.version=rv2-beta-33 - applecore.version=1.7.10-1.2.1+107.59407 --- -1.9.5.msysgit.0 - -From 348ad6a1e9d1b4210933a12dbb95b0a5dbfe10a9 Mon Sep 17 00:00:00 2001 -From: Dream-Master <dream-master@gmx.net> -Date: Mon, 11 Sep 2017 21:56:57 +0200 -Subject: [PATCH] bump version - ---- - build.properties | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/build.properties b/build.properties -index 8f302e6..476007e 100644 ---- a/build.properties -+++ b/build.properties -@@ -1,7 +1,7 @@ - minecraft.version=1.7.10 - forge.version=10.13.4.1566-1.7.10 - --gt.version=5.09.32.01 -+gt.version=5.09.32.02 - - ae2.version=rv2-beta-33 - applecore.version=1.7.10-1.2.1+107.59407 --- -1.9.5.msysgit.0 - -From 9caaa58ea11b6477eaabdd509a554e90f60bc2ac Mon Sep 17 00:00:00 2001 -From: Technus <daniel112092@gmail.com> -Date: Mon, 11 Sep 2017 21:43:48 +0200 -Subject: [PATCH] Minor optimization of tick counter - ---- - .../metatileentity/implementations/GT_MetaPipeEntity_Cable.java | 6 +++--- - src/main/java/gregtech/common/GT_Proxy.java | 8 +++----- - 2 files changed, 6 insertions(+), 8 deletions(-) - -diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java -index b7d6b0a..a1a537c 100644 ---- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java -+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java -@@ -250,9 +250,9 @@ public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTile - mTransferredVoltage=0; - mTransferredAmperageOK=mTransferredAmperage; - mTransferredAmperage = 0; -- -- tickDiff=Math.min((int)(serverSideDimensionWiseTickCounter.get(aBaseMetaTileEntity.getWorld().provider.dimensionId)-lastTickTime),1); -- lastTickTime=serverSideDimensionWiseTickCounter.get(aBaseMetaTileEntity.getWorld().provider.dimensionId); -+ final int dimID=aBaseMetaTileEntity.getWorld().provider.dimensionId; -+ tickDiff=Math.min((int)(serverSideDimensionWiseTickCounter.get(dimID)-lastTickTime),1); -+ lastTickTime=serverSideDimensionWiseTickCounter.get(dimID); - if(lastTickDiff<tickDiff) - mOverheat=(short)Math.max(0,mOverheat-100); - lastTickDiff=tickDiff; -diff --git a/src/main/java/gregtech/common/GT_Proxy.java b/src/main/java/gregtech/common/GT_Proxy.java -index d8d5060..844f1ef 100644 ---- a/src/main/java/gregtech/common/GT_Proxy.java -+++ b/src/main/java/gregtech/common/GT_Proxy.java -@@ -1249,12 +1249,10 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler { - } - } - -- int dimID=aEvent.world.provider.dimensionId; -- if(serverSideDimensionWiseTickCounter.containsKey(dimID)){ -+ final int dimID=aEvent.world.provider.dimensionId; -+ if(serverSideDimensionWiseTickCounter.containsKey(dimID)) - serverSideDimensionWiseTickCounter.put(dimID, serverSideDimensionWiseTickCounter.get(dimID)+1); -- }else{ -- serverSideDimensionWiseTickCounter.put(dimID,0L); -- } -+ else serverSideDimensionWiseTickCounter.put(dimID,0L); - - GT_Pollution.onWorldTick(aEvent); - } --- -1.9.5.msysgit.0 - -From 0d9d2040bc43f4e18d227b3c51a3edc4f9994747 Mon Sep 17 00:00:00 2001 -From: Technus <daniel112092@gmail.com> -Date: Mon, 11 Sep 2017 21:40:26 +0200 -Subject: [PATCH] Implement tick counter? - ---- - .../metatileentity/implementations/GT_MetaPipeEntity_Cable.java | 5 +++-- - src/main/java/gregtech/common/GT_Proxy.java | 8 ++++++++ - 2 files changed, 11 insertions(+), 2 deletions(-) - -diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java -index 34e2303..b7d6b0a 100644 ---- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java -+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java -@@ -33,6 +33,7 @@ import java.util.ArrayList; - import java.util.Arrays; - - import static gregtech.api.enums.GT_Values.VN; -+import static gregtech.common.GT_Proxy.serverSideDimensionWiseTickCounter; - - public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTileEntityCable { - public final float mThickNess; -@@ -250,8 +251,8 @@ public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTile - mTransferredAmperageOK=mTransferredAmperage; - mTransferredAmperage = 0; - -- tickDiff=Math.min((int)(aBaseMetaTileEntity.getWorld().getTotalWorldTime()-lastTickTime),1); -- lastTickTime=aBaseMetaTileEntity.getWorld().getTotalWorldTime(); -+ tickDiff=Math.min((int)(serverSideDimensionWiseTickCounter.get(aBaseMetaTileEntity.getWorld().provider.dimensionId)-lastTickTime),1); -+ lastTickTime=serverSideDimensionWiseTickCounter.get(aBaseMetaTileEntity.getWorld().provider.dimensionId); - if(lastTickDiff<tickDiff) - mOverheat=(short)Math.max(0,mOverheat-100); - lastTickDiff=tickDiff; -diff --git a/src/main/java/gregtech/common/GT_Proxy.java b/src/main/java/gregtech/common/GT_Proxy.java -index f6d4ca6..d8d5060 100644 ---- a/src/main/java/gregtech/common/GT_Proxy.java -+++ b/src/main/java/gregtech/common/GT_Proxy.java -@@ -74,6 +74,7 @@ import java.text.DateFormat; - import java.util.*; - - public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler { -+ public static HashMap<Integer,Long> serverSideDimensionWiseTickCounter =new HashMap<>(); - private static final EnumSet<OreGenEvent.GenerateMinable.EventType> PREVENTED_ORES = EnumSet.of(OreGenEvent.GenerateMinable.EventType.COAL, - new OreGenEvent.GenerateMinable.EventType[]{OreGenEvent.GenerateMinable.EventType.IRON, OreGenEvent.GenerateMinable.EventType.GOLD, - OreGenEvent.GenerateMinable.EventType.DIAMOND, OreGenEvent.GenerateMinable.EventType.REDSTONE, OreGenEvent.GenerateMinable.EventType.LAPIS, -@@ -1248,6 +1249,13 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler { - } - } - -+ int dimID=aEvent.world.provider.dimensionId; -+ if(serverSideDimensionWiseTickCounter.containsKey(dimID)){ -+ serverSideDimensionWiseTickCounter.put(dimID, serverSideDimensionWiseTickCounter.get(dimID)+1); -+ }else{ -+ serverSideDimensionWiseTickCounter.put(dimID,0L); -+ } -+ - GT_Pollution.onWorldTick(aEvent); - } - } --- -1.9.5.msysgit.0 - -From 69683365d7faa798c5d782c8e3779b5d323c6ff6 Mon Sep 17 00:00:00 2001 -From: Technus <daniel112092@gmail.com> -Date: Mon, 11 Sep 2017 21:28:04 +0200 -Subject: [PATCH] Revert "Revert "Add tickDiff for tick diff detection using - totalWorldTime, should prevent spontaneous wire combustion"" - -This reverts commit 77cc90a0c9892c6ebf61c403ea4ba071f3ffaea7. ---- - .../implementations/GT_MetaPipeEntity_Cable.java | 12 +++++++++++- - 1 file changed, 11 insertions(+), 1 deletion(-) - -diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java -index aec89a2..34e2303 100644 ---- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java -+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java -@@ -44,6 +44,8 @@ public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTile - public long mRestRF; - public short mOverheat; - public static short mMaxOverheat=(short) (GT_Mod.gregtechproxy.mWireHeatingTicks * 100); -+ private int tickDiff=1,lastTickDiff=1; -+ private long lastTickTime; - - public GT_MetaPipeEntity_Cable(int aID, String aName, String aNameRegional, float aThickNess, Materials aMaterial, long aCableLossPerMeter, long aAmperage, long aVoltage, boolean aInsulated, boolean aCanShock) { - super(aID, aName, aNameRegional, 0); -@@ -229,7 +231,7 @@ public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTile - mTransferredAmperage += rUsedAmperes; - mTransferredVoltageLast20 = (Math.max(mTransferredVoltageLast20, aVoltage)); - mTransferredAmperageLast20 = Math.max(mTransferredAmperageLast20, mTransferredAmperage); -- if (aVoltage > mVoltage || mTransferredAmperage > mAmperage) { -+ if (aVoltage > mVoltage || mTransferredAmperage > (mAmperage*tickDiff)) { - if(mOverheat>mMaxOverheat) - getBaseMetaTileEntity().setToFire(); - else -@@ -247,6 +249,13 @@ public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTile - mTransferredVoltage=0; - mTransferredAmperageOK=mTransferredAmperage; - mTransferredAmperage = 0; -+ -+ tickDiff=Math.min((int)(aBaseMetaTileEntity.getWorld().getTotalWorldTime()-lastTickTime),1); -+ lastTickTime=aBaseMetaTileEntity.getWorld().getTotalWorldTime(); -+ if(lastTickDiff<tickDiff) -+ mOverheat=(short)Math.max(0,mOverheat-100); -+ lastTickDiff=tickDiff; -+ - if(mOverheat>0)mOverheat--; - if (aTick % 20 == 0) { - mTransferredVoltageLast20OK=mTransferredVoltageLast20; -@@ -339,6 +348,7 @@ public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTile - //EnumChatFormatting.BLUE + mName + EnumChatFormatting.RESET, - "Heat: "+ - EnumChatFormatting.RED+ mOverheat +EnumChatFormatting.RESET+" / "+EnumChatFormatting.YELLOW+ mMaxOverheat + EnumChatFormatting.RESET, -+ "TickDiff: "+ EnumChatFormatting.YELLOW+ tickDiff + EnumChatFormatting.RESET, - "Max Load (1t):", - EnumChatFormatting.GREEN + Integer.toString(mTransferredAmperageOK) + EnumChatFormatting.RESET +" A / "+ - EnumChatFormatting.YELLOW + Long.toString(mAmperage) + EnumChatFormatting.RESET +" A", --- -1.9.5.msysgit.0 - -From 77cc90a0c9892c6ebf61c403ea4ba071f3ffaea7 Mon Sep 17 00:00:00 2001 -From: Technus <daniel112092@gmail.com> -Date: Mon, 11 Sep 2017 20:33:30 +0200 -Subject: [PATCH] Revert "Add tickDiff for tick diff detection using - totalWorldTime, should prevent spontaneous wire combustion" - -This reverts commit 3587d3942fb5e5de5821e8207c96a93a7babc31a. ---- - .../implementations/GT_MetaPipeEntity_Cable.java | 12 +----------- - 1 file changed, 1 insertion(+), 11 deletions(-) - -diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java -index 34e2303..aec89a2 100644 ---- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java -+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java -@@ -44,8 +44,6 @@ public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTile - public long mRestRF; - public short mOverheat; - public static short mMaxOverheat=(short) (GT_Mod.gregtechproxy.mWireHeatingTicks * 100); -- private int tickDiff=1,lastTickDiff=1; -- private long lastTickTime; - - public GT_MetaPipeEntity_Cable(int aID, String aName, String aNameRegional, float aThickNess, Materials aMaterial, long aCableLossPerMeter, long aAmperage, long aVoltage, boolean aInsulated, boolean aCanShock) { - super(aID, aName, aNameRegional, 0); -@@ -231,7 +229,7 @@ public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTile - mTransferredAmperage += rUsedAmperes; - mTransferredVoltageLast20 = (Math.max(mTransferredVoltageLast20, aVoltage)); - mTransferredAmperageLast20 = Math.max(mTransferredAmperageLast20, mTransferredAmperage); -- if (aVoltage > mVoltage || mTransferredAmperage > (mAmperage*tickDiff)) { -+ if (aVoltage > mVoltage || mTransferredAmperage > mAmperage) { - if(mOverheat>mMaxOverheat) - getBaseMetaTileEntity().setToFire(); - else -@@ -249,13 +247,6 @@ public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTile - mTransferredVoltage=0; - mTransferredAmperageOK=mTransferredAmperage; - mTransferredAmperage = 0; -- -- tickDiff=Math.min((int)(aBaseMetaTileEntity.getWorld().getTotalWorldTime()-lastTickTime),1); -- lastTickTime=aBaseMetaTileEntity.getWorld().getTotalWorldTime(); -- if(lastTickDiff<tickDiff) -- mOverheat=(short)Math.max(0,mOverheat-100); -- lastTickDiff=tickDiff; -- - if(mOverheat>0)mOverheat--; - if (aTick % 20 == 0) { - mTransferredVoltageLast20OK=mTransferredVoltageLast20; -@@ -348,7 +339,6 @@ public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTile - //EnumChatFormatting.BLUE + mName + EnumChatFormatting.RESET, - "Heat: "+ - EnumChatFormatting.RED+ mOverheat +EnumChatFormatting.RESET+" / "+EnumChatFormatting.YELLOW+ mMaxOverheat + EnumChatFormatting.RESET, -- "TickDiff: "+ EnumChatFormatting.YELLOW+ tickDiff + EnumChatFormatting.RESET, - "Max Load (1t):", - EnumChatFormatting.GREEN + Integer.toString(mTransferredAmperageOK) + EnumChatFormatting.RESET +" A / "+ - EnumChatFormatting.YELLOW + Long.toString(mAmperage) + EnumChatFormatting.RESET +" A", --- -1.9.5.msysgit.0 - -From ce676aaac999865dd05dcf23468c2e3acc6e3c85 Mon Sep 17 00:00:00 2001 -From: Dream-Master <dream-master@gmx.net> -Date: Sun, 10 Sep 2017 09:59:56 +0200 -Subject: [PATCH] fixed wildcard value in Gravisuit - ---- - src/main/java/gregtech/loaders/postload/GT_CraftingRecipeLoader.java | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/main/java/gregtech/loaders/postload/GT_CraftingRecipeLoader.java b/src/main/java/gregtech/loaders/postload/GT_CraftingRecipeLoader.java -index 5f28da5..a5359e3 100644 ---- a/src/main/java/gregtech/loaders/postload/GT_CraftingRecipeLoader.java -+++ b/src/main/java/gregtech/loaders/postload/GT_CraftingRecipeLoader.java -@@ -811,7 +811,7 @@ public class GT_CraftingRecipeLoader implements Runnable { - - if (Loader.isModLoaded("GraviSuite")) { - GT_ModHandler.removeRecipeByOutput(GT_ModHandler.getModItem("GraviSuite", "advNanoChestPlate", 1, GT_Values.W)); -- GT_ModHandler.addCraftingRecipe(GT_ModHandler.getModItem("GraviSuite", "advNanoChestPlate", 1, GT_Values.W), new Object[]{"CJC", "CNC", "WPW", 'C', OrePrefixes.plateAlloy.get(Materials.Carbon), 'J', GT_ModHandler.getModItem("GraviSuite", "advJetpack", 1, GT_Values.W), 'N', GT_ModHandler.getIC2Item("nanoBodyarmor", 1L), 'W', OrePrefixes.wireGt04.get(Materials.Platinum), 'P', OrePrefixes.circuit.get(Materials.Data)}); -+ GT_ModHandler.addCraftingRecipe(GT_ModHandler.getModItem("GraviSuite", "advNanoChestPlate", 1, GT_Values.W), new Object[]{"CJC", "CNC", "WPW", 'C', OrePrefixes.plateAlloy.get(Materials.Carbon), 'J', GT_ModHandler.getModItem("GraviSuite", "advJetpack", 1, GT_Values.W), 'N', GT_ModHandler.getIC2Item("nanoBodyarmor", 1, GT_Values.W), 'W', OrePrefixes.wireGt04.get(Materials.Platinum), 'P', OrePrefixes.circuit.get(Materials.Data)}); - - GT_ModHandler.removeRecipeByOutput(GT_ModHandler.getModItem("GraviSuite", "advLappack", 1, GT_Values.W)); - GT_ModHandler.addCraftingRecipe(GT_ModHandler.getModItem("GraviSuite", "advLappack", 1, GT_Values.W), new Object[]{"CJC", "TAT", "WPW", 'C', OrePrefixes.plateAlloy.get(Materials.Carbon), 'J', GT_ModHandler.getIC2Item( "advJetpack", 1, GT_Values.W), 'N', GT_ModHandler.getIC2Item("itemArmorJetpackElectric", 1, GT_Values.W), 'A', GT_ModHandler.getIC2Item( "itemArmorNanoChestplate", 1, GT_Values.W), 'T', OrePrefixes.plate.get(Materials.TungstenSteel), 'W', OrePrefixes.wireGt12.get(Materials.Platinum), 'P', OrePrefixes.circuit.get(Materials.Elite)}); --- -1.9.5.msysgit.0 - -From d73ea0926b94d1afb610fc15d191d2fde6bc957c Mon Sep 17 00:00:00 2001 -From: Dream-Master <dream-master@gmx.net> -Date: Sun, 10 Sep 2017 00:30:41 +0200 -Subject: [PATCH] [1.5.1.2] Advanced Nanochestplate/Jetpack recepies #1938 - https://github.com/GTNewHorizons/NewHorizons/issues/1938 - ---- - src/main/java/gregtech/loaders/postload/GT_CraftingRecipeLoader.java | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/src/main/java/gregtech/loaders/postload/GT_CraftingRecipeLoader.java b/src/main/java/gregtech/loaders/postload/GT_CraftingRecipeLoader.java -index 71c7220..5f28da5 100644 ---- a/src/main/java/gregtech/loaders/postload/GT_CraftingRecipeLoader.java -+++ b/src/main/java/gregtech/loaders/postload/GT_CraftingRecipeLoader.java -@@ -812,6 +812,9 @@ public class GT_CraftingRecipeLoader implements Runnable { - if (Loader.isModLoaded("GraviSuite")) { - GT_ModHandler.removeRecipeByOutput(GT_ModHandler.getModItem("GraviSuite", "advNanoChestPlate", 1, GT_Values.W)); - GT_ModHandler.addCraftingRecipe(GT_ModHandler.getModItem("GraviSuite", "advNanoChestPlate", 1, GT_Values.W), new Object[]{"CJC", "CNC", "WPW", 'C', OrePrefixes.plateAlloy.get(Materials.Carbon), 'J', GT_ModHandler.getModItem("GraviSuite", "advJetpack", 1, GT_Values.W), 'N', GT_ModHandler.getIC2Item("nanoBodyarmor", 1L), 'W', OrePrefixes.wireGt04.get(Materials.Platinum), 'P', OrePrefixes.circuit.get(Materials.Data)}); -+ -+ GT_ModHandler.removeRecipeByOutput(GT_ModHandler.getModItem("GraviSuite", "advLappack", 1, GT_Values.W)); -+ GT_ModHandler.addCraftingRecipe(GT_ModHandler.getModItem("GraviSuite", "advLappack", 1, GT_Values.W), new Object[]{"CJC", "TAT", "WPW", 'C', OrePrefixes.plateAlloy.get(Materials.Carbon), 'J', GT_ModHandler.getIC2Item( "advJetpack", 1, GT_Values.W), 'N', GT_ModHandler.getIC2Item("itemArmorJetpackElectric", 1, GT_Values.W), 'A', GT_ModHandler.getIC2Item( "itemArmorNanoChestplate", 1, GT_Values.W), 'T', OrePrefixes.plate.get(Materials.TungstenSteel), 'W', OrePrefixes.wireGt12.get(Materials.Platinum), 'P', OrePrefixes.circuit.get(Materials.Elite)}); - } - - GT_ModHandler.addShapelessCraftingRecipe(Materials.Fireclay.getDust(2), new Object[]{Materials.Brick.getDust(1), Materials.Clay.getDust(1)}); --- -1.9.5.msysgit.0 - -From 53629721d939156ba042ad195e2dbb1950a89586 Mon Sep 17 00:00:00 2001 -From: Dream-Master <dream-master@gmx.net> -Date: Sun, 10 Sep 2017 00:06:20 +0200 -Subject: [PATCH] [1.5.1.2] Double recipe from wooden slab #1928 - https://github.com/GTNewHorizons/NewHorizons/issues/1928 - ---- - src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java | 2 +- - src/main/java/gregtech/loaders/postload/GT_MachineRecipeLoader.java | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java -index 698b48e..37f90b9 100644 ---- a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java -+++ b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java -@@ -211,7 +211,7 @@ public class GT_MetaGenerated_Item_02 extends GT_MetaGenerated_Item_X32 { - ItemList.SFMixture.set(addItem(tLastID = 270, "Super Fuel Binder", "Raw Material", new Object[]{})); - ItemList.MSFMixture.set(addItem(tLastID = 271, "Magic Super Fuel Binder", "Raw Material", new Object[]{})); - -- GT_ModHandler.addCraftingRecipe(ItemList.Plank_Oak.get(2L, new Object[0]), GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE, new Object[]{"s ", " P", 'P', new ItemStack(Blocks.wooden_slab, 1, 0)}); -+ GT_ModHandler.addCraftingRecipe(ItemList.Plank_Oak.get(2L, new Object[0]), GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE, new Object[]{"s ", " P", 'P', new ItemStack(Blocks.wooden_pressure_plate, 1, 0)}); - GT_ModHandler.addCraftingRecipe(ItemList.Plank_Spruce.get(2L, new Object[0]), GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE, new Object[]{"s ", " P", 'P', new ItemStack(Blocks.wooden_slab, 1, 1)}); - GT_ModHandler.addCraftingRecipe(ItemList.Plank_Birch.get(2L, new Object[0]), GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE, new Object[]{"s ", " P", 'P', new ItemStack(Blocks.wooden_slab, 1, 2)}); - GT_ModHandler.addCraftingRecipe(ItemList.Plank_Jungle.get(2L, new Object[0]), GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE, new Object[]{"s ", " P", 'P', new ItemStack(Blocks.wooden_slab, 1, 3)}); -diff --git a/src/main/java/gregtech/loaders/postload/GT_MachineRecipeLoader.java b/src/main/java/gregtech/loaders/postload/GT_MachineRecipeLoader.java -index 500c5ea..92fc9a9 100644 ---- a/src/main/java/gregtech/loaders/postload/GT_MachineRecipeLoader.java -+++ b/src/main/java/gregtech/loaders/postload/GT_MachineRecipeLoader.java -@@ -1413,7 +1413,7 @@ public class GT_MachineRecipeLoader implements Runnable { - for (byte i = 0; i < 16; i = (byte) (i + 1)) { - GT_Values.RA.addCutterRecipe(new ItemStack(Blocks.wool, 1, i), new ItemStack(Blocks.carpet, 2, i), GT_Values.NI, 50, 8); - } -- GT_Values.RA.addCutterRecipe(new ItemStack(Blocks.wooden_slab, 1, 0), ItemList.Plank_Oak.get(2L, new Object[0]), GT_Values.NI, 50, 8); -+ GT_Values.RA.addCutterRecipe(new ItemStack(Blocks.wooden_pressure_plate, 1, 0), ItemList.Plank_Oak.get(2L, new Object[0]), GT_Values.NI, 50, 8); - GT_Values.RA.addCutterRecipe(new ItemStack(Blocks.wooden_slab, 1, 1), ItemList.Plank_Spruce.get(2L, new Object[0]), GT_Values.NI, 50, 8); - GT_Values.RA.addCutterRecipe(new ItemStack(Blocks.wooden_slab, 1, 2), ItemList.Plank_Birch.get(2L, new Object[0]), GT_Values.NI, 50, 8); - GT_Values.RA.addCutterRecipe(new ItemStack(Blocks.wooden_slab, 1, 3), ItemList.Plank_Jungle.get(2L, new Object[0]), GT_Values.NI, 50, 8); --- -1.9.5.msysgit.0 - |