diff options
| author | Dream-Master <dream-master@gmx.net> | 2017-10-08 13:42:36 +0200 |
|---|---|---|
| committer | Dream-Master <dream-master@gmx.net> | 2017-10-08 13:42:36 +0200 |
| commit | b7dde4464242b8cd1e391704287a4c9d84fcae32 (patch) | |
| tree | 7ab4737927feb5d0af79e643588c101dcd41ffc2 | |
| parent | 3c427a6b64c1a4dc4794d8d137e8fc2e582af46c (diff) | |
| download | GT5-Unofficial-b7dde4464242b8cd1e391704287a4c9d84fcae32.tar.gz GT5-Unofficial-b7dde4464242b8cd1e391704287a4c9d84fcae32.tar.bz2 GT5-Unofficial-b7dde4464242b8cd1e391704287a4c9d84fcae32.zip | |
update file from 2.0.0.0 to 2.1.0.0
| -rw-r--r-- | patch.diff | 3087 |
1 files changed, 3087 insertions, 0 deletions
diff --git a/patch.diff b/patch.diff new file mode 100644 index 0000000000..db06287d97 --- /dev/null +++ b/patch.diff @@ -0,0 +1,3087 @@ +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 +ind |
