diff options
| author | botn365 <42187820+botn365@users.noreply.github.com> | 2020-02-25 20:09:38 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-02-25 20:09:38 +0100 |
| commit | c2f7c7716a43b64b9c2741b9d90b6164fb50b1ef (patch) | |
| tree | 087b121f0d40b58914411438574eaf0fe63ed8e0 /src/main/java/gregtech/common/tileentities/machines/basic | |
| parent | 14ea6a3ba9de16dd6fbd731b7b0f80ed109d4541 (diff) | |
| parent | 5680fbc57fedb9c3aec07bdbf6efc67e64832564 (diff) | |
| download | GT5-Unofficial-c2f7c7716a43b64b9c2741b9d90b6164fb50b1ef.tar.gz GT5-Unofficial-c2f7c7716a43b64b9c2741b9d90b6164fb50b1ef.tar.bz2 GT5-Unofficial-c2f7c7716a43b64b9c2741b9d90b6164fb50b1ef.zip | |
Merge pull request #1 from GTNewHorizons/experimental
sync
Diffstat (limited to 'src/main/java/gregtech/common/tileentities/machines/basic')
4 files changed, 174 insertions, 70 deletions
diff --git a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_AdvSeismicProspector.java b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_AdvSeismicProspector.java index b52e57901b..5c0e2cbf25 100644 --- a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_AdvSeismicProspector.java +++ b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_AdvSeismicProspector.java @@ -33,8 +33,6 @@ import static gregtech.common.GT_UndergroundOil.undergroundOilReadInformation; public class GT_MetaTileEntity_AdvSeismicProspector extends GT_MetaTileEntity_BasicMachine { boolean ready = false; int radius; - int near; - int middle; int step; int cX; int cZ; @@ -55,9 +53,6 @@ public class GT_MetaTileEntity_AdvSeismicProspector extends GT_MetaTileEntity_Ba new GT_RenderedTexture(Textures.BlockIcons.OVERLAY_BOTTOM_ROCK_BREAKER_ACTIVE), new GT_RenderedTexture(Textures.BlockIcons.OVERLAY_BOTTOM_ROCK_BREAKER) }); radius = aRadius; - near = radius / 3; - near = near + near % 2; // making near value even; - middle = near * 2; step = aStep; } @@ -74,24 +69,19 @@ public class GT_MetaTileEntity_AdvSeismicProspector extends GT_MetaTileEntity_Ba + "x" + radius*2 + " ONLY blocks below prospector", - "Near < " + near, - "Middle < " + middle, - "Far >= " + middle, - "Oil prospecting area 3x3 oilfields"}; + "Oil prospecting area 3x3 oilfields, each is 8x8 chunks"}; } protected GT_MetaTileEntity_AdvSeismicProspector(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures, - String aGUIName, String aNEIName, int aNear, int aMiddle, int aRadius, int aStep) { + String aGUIName, String aNEIName, int aRadius, int aStep) { super(aName, aTier, 1, aDescription, aTextures, 1, 1, aGUIName, aNEIName); radius = aRadius; - near = aNear; - middle = aMiddle; step = aStep; } public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { return new GT_MetaTileEntity_AdvSeismicProspector(this.mName, this.mTier, this.mDescriptionArray, this.mTextures, - this.mGUIName, this.mNEIName, this.near, this.middle, this.radius, this.step); + this.mGUIName, this.mNEIName, this.radius, this.step); } @Override @@ -113,10 +103,9 @@ public class GT_MetaTileEntity_AdvSeismicProspector extends GT_MetaTileEntity_Ba this.ready = false; // prospecting ores - HashMap<String, Integer> tNearOres = new HashMap<String, Integer>(); - HashMap<String, Integer> tMiddleOres = new HashMap<String, Integer>(); - HashMap<String, Integer> tFarOres = new HashMap<String, Integer>(); - prospectOres(tNearOres, tMiddleOres, tFarOres); + HashMap<String, Integer> tOres = new HashMap<String, Integer>(36); + + prospectOres(tOres); // prospecting oils ArrayList<String> tOils = new ArrayList<String>(); @@ -129,10 +118,8 @@ public class GT_MetaTileEntity_AdvSeismicProspector extends GT_MetaTileEntity_Ba this.getBaseMetaTileEntity().getZCoord(), this.getBaseMetaTileEntity().getWorld().provider.dimensionId, tOils, - GT_Utility.sortByValueToList(tNearOres), - GT_Utility.sortByValueToList(tMiddleOres), - GT_Utility.sortByValueToList(tFarOres), - near, middle, radius); + GT_Utility.sortByValueToList(tOres), + radius); } } @@ -145,8 +132,8 @@ public class GT_MetaTileEntity_AdvSeismicProspector extends GT_MetaTileEntity_Ba Chunk tChunk = getBaseMetaTileEntity().getWorld().getChunkFromBlockCoords(getBaseMetaTileEntity().getXCoord(), getBaseMetaTileEntity().getZCoord()); int oilfieldSize = 8; - int xChunk = (tChunk.xPosition / oilfieldSize) * oilfieldSize - ((tChunk.xPosition < 0 && tChunk.xPosition % oilfieldSize != 0) ? oilfieldSize : 0); - int zChunk = (tChunk.zPosition / oilfieldSize) * oilfieldSize - ((tChunk.zPosition < 0 && tChunk.zPosition % oilfieldSize != 0) ? oilfieldSize : 0); + int xChunk = Math.floorDiv(tChunk.xPosition , oilfieldSize) * oilfieldSize - ((tChunk.xPosition < 0 && tChunk.xPosition % oilfieldSize != 0) ? oilfieldSize : 0); + int zChunk = Math.floorDiv(tChunk.zPosition , oilfieldSize) * oilfieldSize - ((tChunk.zPosition < 0 && tChunk.zPosition % oilfieldSize != 0) ? oilfieldSize : 0); LinkedHashMap<ChunkCoordIntPair, FluidStack> tFluids = new LinkedHashMap<>(); int oilFieldCount = 0; @@ -186,28 +173,35 @@ public class GT_MetaTileEntity_AdvSeismicProspector extends GT_MetaTileEntity_Ba // aOils.put(x + "," + z + "," + (tFluid.amount / 5000) + "," + tFluid.getLocalizedName(), tFluid.amount / 5000); //} - private void prospectOres(Map<String, Integer> aNearOres, Map<String, Integer> aMiddleOres, Map<String, Integer> aFarOres) { + private void prospectOres(Map<String, Integer> aOres) { int tLeftXBound = this.getBaseMetaTileEntity().getXCoord() - radius; int tRightXBound = tLeftXBound + 2*radius; int tLeftZBound = this.getBaseMetaTileEntity().getZCoord() - radius; int tRightZBound = tLeftZBound + 2*radius; - for (int i = tLeftXBound; i <= tRightXBound; i += step) + for (int i = tLeftXBound; i <= tRightXBound; i += step) { + if ( (Math.abs(i)/16-1)%3!=0 ) { + continue; + } for (int k = tLeftZBound; k <= tRightZBound; k += step) { + if ( (Math.abs(k)/16-1)%3!=0 ) { + continue; + } + int di = Math.abs(i - this.getBaseMetaTileEntity().getXCoord()); int dk = Math.abs(k - this.getBaseMetaTileEntity().getZCoord()); - cX = (i/16)*16; - cZ = (k/16)*16; + cX = (Math.floorDiv(i,16))*16; + + cZ = (Math.floorDiv(k,16))*16; + + String separator = (cX +8)+ "," + (cZ + 8) + " --------"; + aOres.put(separator, 1); + prospectHole(i, k, aOres); - if (di <= near && dk <= near) - prospectHole(i, k, aNearOres); - else if (di <= middle && dk <= middle) - prospectHole(i, k, aMiddleOres); - else - prospectHole(i, k, aFarOres); } + } } private void prospectHole(int i, int k, Map<String, Integer> aOres) { @@ -245,7 +239,7 @@ public class GT_MetaTileEntity_AdvSeismicProspector extends GT_MetaTileEntity_Ba } private static void countOre(Map<String, Integer> map, String ore, int cCX, int cCZ) { - ore = ore + " at " + (cCX +8)+ "," + (cCZ + 8); + ore = (cCX +8)+ "," + (cCZ + 8) + " has " + ore; Integer oldCount = map.get(ore); oldCount = (oldCount == null) ? 0 : oldCount; diff --git a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Disassembler.java b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Disassembler.java index 8efebe98a5..8b947a740b 100644 --- a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Disassembler.java +++ b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Disassembler.java @@ -1,7 +1,6 @@ package gregtech.common.tileentities.machines.basic;
import gregtech.api.enums.GT_Values;
-import gregtech.api.enums.ItemList;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
@@ -9,7 +8,6 @@ import gregtech.api.metatileentity.MetaTileEntity; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicMachine;
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_Utility;
-import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
diff --git a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Miner.java b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Miner.java index 26024cafee..9757974cee 100644 --- a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Miner.java +++ b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Miner.java @@ -13,10 +13,13 @@ import gregtech.api.util.GT_Utility; import gregtech.common.blocks.GT_Block_Ores_Abstract; import gregtech.common.blocks.GT_TileEntity_Ores; import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.StatCollector; import net.minecraftforge.common.util.FakePlayer; import java.util.ArrayList; @@ -35,17 +38,36 @@ public class GT_MetaTileEntity_Miner extends GT_MetaTileEntity_BasicMachine { final static int[] SPEED = new int[]{160, 160, 80, 40, 20}; //Miner cycle time per tier final static int[] ENERGY = new int[]{8, 8, 32, 128, 512}; //Miner energy consumption per tier + private int radiusConfig; //Miner configured radius + public GT_MetaTileEntity_Miner(int aID, String aName, String aNameRegional, int aTier) { - super(aID, aName, aNameRegional, aTier, 1, new String[]{"Digging ore instead of you", ENERGY[aTier] + " EU/t, " + SPEED[aTier] / 20 + " sec per block", - "Work area " + (RADIUS[aTier] * 2 + 1) + "x" + (RADIUS[aTier] * 2 + 1), "Fortune bonus of " + aTier * 2}, 2, 2, "Miner.png", "", new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_SIDE_ACTIVE")), new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_SIDE")), new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_FRONT_ACTIVE")), new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_FRONT")), new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_TOP_ACTIVE")), new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_TOP")), new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_BOTTOM_ACTIVE")), new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_BOTTOM"))); + super(aID, aName, aNameRegional, aTier, 1, + new String[]{ + "Digging ore instead of you", + "Use Screwdriver to regulate work area", + ENERGY[aTier] + " EU/t, " + SPEED[aTier] / 20 + " sec per block", + "Maximum work area " + (RADIUS[aTier] * 2 + 1) + "x" + (RADIUS[aTier] * 2 + 1), + "Fortune bonus of " + aTier}, + 2, 2, "Miner.png", "", + new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_SIDE_ACTIVE")), + new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_SIDE")), + new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_FRONT_ACTIVE")), + new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_FRONT")), + new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_TOP_ACTIVE")), + new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_TOP")), + new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_BOTTOM_ACTIVE")), + new GT_RenderedTexture(new Textures.BlockIcons.CustomIcon("basicmachines/miner/OVERLAY_BOTTOM"))); + radiusConfig = RADIUS[mTier]; } public GT_MetaTileEntity_Miner(String aName, int aTier, String aDescription, ITexture[][][] aTextures, String aGUIName, String aNEIName) { super(aName, aTier, 1, aDescription, aTextures, 1, 1, aGUIName, aNEIName); + radiusConfig = RADIUS[mTier]; } public GT_MetaTileEntity_Miner(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures, String aGUIName, String aNEIName) { super(aName, aTier, 1, aDescription, aTextures, 2, 2, aGUIName, aNEIName); + radiusConfig = RADIUS[mTier]; } @@ -68,6 +90,27 @@ public class GT_MetaTileEntity_Miner extends GT_MetaTileEntity_BasicMachine { } @Override + public void onScrewdriverRightClick(byte aSide, EntityPlayer aPlayer, float aX, float aY, float aZ) { + super.onScrewdriverRightClick(aSide, aPlayer, aX, aY, aZ); + if (aSide != getBaseMetaTileEntity().getFrontFacing() && aSide != mMainFacing) { + if (aPlayer.isSneaking()) { + if (radiusConfig >= 0) { + radiusConfig--; + } + if (radiusConfig < 0) + radiusConfig = RADIUS[mTier]; + } else { + if (radiusConfig <= RADIUS[mTier]) { + radiusConfig++; + } + if (radiusConfig > RADIUS[mTier]) + radiusConfig = 0; + } + GT_Utility.sendChatToPlayer(aPlayer, StatCollector.translateToLocal("GT5U.machines.workareaset") + " " + (radiusConfig * 2 + 1) + "x" + (radiusConfig * 2 + 1));//TODO Add translation support + } + } + + @Override public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { super.onPostTick(aBaseMetaTileEntity, aTick); if (aBaseMetaTileEntity.isServerSide()) { @@ -107,17 +150,17 @@ public class GT_MetaTileEntity_Miner extends GT_MetaTileEntity_BasicMachine { moveOneDown(aBaseMetaTileEntity); return; } - if (drillZ > RADIUS[mTier]) { + if (drillZ > radiusConfig) { moveOneDown(aBaseMetaTileEntity); return; } - while (drillZ <= RADIUS[mTier]) { - while (drillX <= RADIUS[mTier]) { + while (drillZ <= radiusConfig) { + while (drillX <= radiusConfig) { Block block = aBaseMetaTileEntity.getBlockOffset(drillX, drillY, drillZ); int blockMeta = aBaseMetaTileEntity.getMetaIDOffset(drillX, drillY, drillZ); if (block instanceof GT_Block_Ores_Abstract) { TileEntity tTileEntity = getBaseMetaTileEntity().getTileEntityOffset(drillX, drillY, drillZ); - if (tTileEntity != null && tTileEntity instanceof GT_TileEntity_Ores && ((GT_TileEntity_Ores) tTileEntity).mNatural) { + if (tTileEntity instanceof GT_TileEntity_Ores && ((GT_TileEntity_Ores) tTileEntity).mNatural) { mineBlock(aBaseMetaTileEntity, drillX, drillY, drillZ); return; } @@ -130,7 +173,7 @@ public class GT_MetaTileEntity_Miner extends GT_MetaTileEntity_BasicMachine { } drillX++; } - drillX = -RADIUS[mTier]; + drillX = -radiusConfig; drillZ++; } } @@ -141,6 +184,7 @@ public class GT_MetaTileEntity_Miner extends GT_MetaTileEntity_BasicMachine { public long maxEUStore() { return mTier == 1 ? 4096 : V[mTier] * 64; } + public boolean moveOneDown(IGregTechTileEntity aBaseMetaTileEntity) { int xCoord = aBaseMetaTileEntity.getXCoord(); int zCoord = aBaseMetaTileEntity.getZCoord(); @@ -191,7 +235,14 @@ public class GT_MetaTileEntity_Miner extends GT_MetaTileEntity_BasicMachine { private ArrayList<ItemStack> getBlockDrops(final Block oreBlock, int posX, int posY, int posZ) { final int blockMeta = getBaseMetaTileEntity().getMetaID(posX, posY, posZ); - return oreBlock.getDrops(getBaseMetaTileEntity().getWorld(), posX, posY, posZ, blockMeta, mTier*2 + 1); + return oreBlock.getDrops(getBaseMetaTileEntity().getWorld(), posX, posY, posZ, blockMeta, mTier); + } + + @Override + public void setItemNBT(NBTTagCompound aNBT) { + super.setItemNBT(aNBT); + aNBT.setByte("mTier", mTier); + aNBT.setInteger("radiusConfig", radiusConfig); } @Override @@ -201,6 +252,7 @@ public class GT_MetaTileEntity_Miner extends GT_MetaTileEntity_BasicMachine { aNBT.setInteger("drillX", drillX); aNBT.setInteger("drillY", drillY); aNBT.setInteger("drillZ", drillZ); + aNBT.setInteger("radiusConfig", radiusConfig); } @Override @@ -210,15 +262,29 @@ public class GT_MetaTileEntity_Miner extends GT_MetaTileEntity_BasicMachine { drillX = aNBT.getInteger("drillX"); drillY = aNBT.getInteger("drillY"); drillZ = aNBT.getInteger("drillZ"); + if (aNBT.hasKey("radiusConfig")) + radiusConfig = aNBT.getInteger("radiusConfig"); } private FakePlayer mFakePlayer = null; protected FakePlayer getFakePlayer(IGregTechTileEntity aBaseTile) { - if (mFakePlayer == null) mFakePlayer = GT_Utility.getFakePlayer(aBaseTile); - mFakePlayer.setWorld(aBaseTile.getWorld()); - mFakePlayer.setPosition(aBaseTile.getXCoord(), aBaseTile.getYCoord(), aBaseTile.getZCoord()); + if (mFakePlayer == null) + mFakePlayer = GT_Utility.getFakePlayer(aBaseTile); + if (mFakePlayer != null) { + mFakePlayer.setWorld(aBaseTile.getWorld()); + mFakePlayer.setPosition(aBaseTile.getXCoord(), aBaseTile.getYCoord(), aBaseTile.getZCoord()); + } return mFakePlayer; } + + @Override + public String[] getInfoData() { + return new String[]{ + EnumChatFormatting.BLUE+StatCollector.translateToLocal("GT5U.machines.miner")+EnumChatFormatting.RESET, + StatCollector.translateToLocal("GT5U.machines.workarea")+": " + EnumChatFormatting.GREEN + (radiusConfig * 2 + 1)+ + EnumChatFormatting.RESET+" " + StatCollector.translateToLocal("GT5U.machines.blocks") + }; + } } 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 dcb516efa5..e4a2ffe771 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 @@ -18,6 +18,8 @@ import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.StatCollector; import net.minecraft.world.ChunkPosition; import net.minecraftforge.common.util.FakePlayer; import net.minecraftforge.common.util.ForgeDirection; @@ -25,12 +27,7 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.IFluidBlock; import net.minecraftforge.fluids.IFluidHandler; -import java.util.ArrayDeque; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Set; +import java.util.*; import static gregtech.api.enums.GT_Values.D1; import static gregtech.api.enums.GT_Values.V; @@ -48,26 +45,31 @@ public class GT_MetaTileEntity_Pump extends GT_MetaTileEntity_Hatch { return (16 * ((long) Math.pow(4, aTier))); } - public ArrayDeque<ChunkPosition> mPumpList = new ArrayDeque<ChunkPosition>(); + public ArrayDeque<ChunkPosition> mPumpList = new ArrayDeque<>(); public boolean wasPumping = false; public int mPumpTimer = 0; public int mPumpCountBelow = 0; public Block mPrimaryPumpedBlock = null; public Block mSecondaryPumpedBlock = null; + private int radiusConfig; //Pump configured radius + public GT_MetaTileEntity_Pump(int aID, String aName, String aNameRegional, int aTier) { super(aID, aName, aNameRegional, aTier, 3, new String[]{"The best way to empty Oceans! Outputs on top", - "Pumping Area: " + (GT_MetaTileEntity_Pump.getMaxDistanceForTier((byte)aTier) * 2 + 1) + "x" + - (GT_MetaTileEntity_Pump.getMaxDistanceForTier((byte)aTier) * 2 + 1)}); + "Maximum pumping area: " + (getMaxDistanceForTier((byte) aTier) * 2 + 1) + "x" + (getMaxDistanceForTier((byte) aTier) * 2 + 1), + "Use Screwdriver to regulate pumping area"}); + radiusConfig = getMaxDistanceForTier(mTier); } public GT_MetaTileEntity_Pump(String aName, int aTier, String aDescription, ITexture[][][] aTextures) { super(aName, aTier, 3, aDescription, aTextures); + radiusConfig = getMaxDistanceForTier(mTier); } public GT_MetaTileEntity_Pump(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures) { super(aName, aTier, 3, aDescription, aTextures); + radiusConfig = getMaxDistanceForTier(mTier); } @Override @@ -84,17 +86,48 @@ public class GT_MetaTileEntity_Pump extends GT_MetaTileEntity_Hatch { aNBT.setString("mPumpedBlock1", this.mPrimaryPumpedBlock == null ? "" : Block.blockRegistry.getNameForObject(this.mPrimaryPumpedBlock)); aNBT.setString("mPumpedBlock2", this.mSecondaryPumpedBlock == null ? "" : Block.blockRegistry.getNameForObject(this.mSecondaryPumpedBlock)); aNBT.setBoolean("wasPumping", wasPumping); + aNBT.setInteger("radiusConfig", radiusConfig); } public void loadNBTData(NBTTagCompound aNBT) { super.loadNBTData(aNBT); this.wasPumping = aNBT.getBoolean("wasPumping"); + if (aNBT.hasKey("radiusConfig")) + this.radiusConfig = aNBT.getInteger("radiusConfig"); this.mPrimaryPumpedBlock = Block.getBlockFromName(aNBT.getString("mPumpedBlock1")); this.mSecondaryPumpedBlock = Block.getBlockFromName(aNBT.getString("mPumpedBlock2")); if (D1) { GT_Log.out.println("PUMP: NBT:Load - WasPumping - " + this.wasPumping + "(" + aNBT.getString("mPumpedBlock1") + ") " + this.mPrimaryPumpedBlock); } + } + + @Override + public void setItemNBT(NBTTagCompound aNBT) { + super.setItemNBT(aNBT); + aNBT.setInteger("radiusConfig", radiusConfig); + } + + @Override + public void onScrewdriverRightClick(byte aSide, EntityPlayer aPlayer, float aX, float aY, float aZ) { + super.onScrewdriverRightClick(aSide, aPlayer, aX, aY, aZ); + int max = getMaxPumpableDistance(); + if (aPlayer.isSneaking()) { + if (radiusConfig >= 0) { + radiusConfig--; + } + if (radiusConfig < 0) + radiusConfig = max; + } else { + if (radiusConfig <= max) { + radiusConfig++; + } + if (radiusConfig > max) + radiusConfig = 0; + } + GT_Utility.sendChatToPlayer(aPlayer, StatCollector.translateToLocal("GT5U.machines.workareaset") + " " + (radiusConfig * 2 + 1) + "x" + (radiusConfig * 2 + 1));//TODO Add translation support + + clearQueue(false); } @@ -351,11 +384,11 @@ public class GT_MetaTileEntity_Pump extends GT_MetaTileEntity_Hatch { } private void rebuildPumpQueue(int aX, int yStart, int aZ, int yEnd) { - int mDist = this.getMaxPumpableDistance(); + int mDist = this.radiusConfig; doTickProfilingInThisTick = false; - ArrayDeque<ChunkPosition> fluidsToSearch = new ArrayDeque<ChunkPosition>(); - ArrayDeque<ChunkPosition> fluidsFound = new ArrayDeque<ChunkPosition>(); - Set<ChunkPosition> checked = new HashSet<ChunkPosition>(); + ArrayDeque<ChunkPosition> fluidsToSearch = new ArrayDeque<>(); + ArrayDeque<ChunkPosition> fluidsFound = new ArrayDeque<>(); + Set<ChunkPosition> checked = new HashSet<>(); this.clearQueue(false); for (int aY = yStart ; this.mPumpList.isEmpty() && aY >= yEnd ; aY--) { @@ -364,22 +397,23 @@ public class GT_MetaTileEntity_Pump extends GT_MetaTileEntity_Hatch { fluidsToSearch.add(new ChunkPosition(aX, aY, aZ)); while (!fluidsToSearch.isEmpty()) { - Iterator<ChunkPosition> i$ = fluidsToSearch.iterator(); - while(i$.hasNext()) { - ChunkPosition tPos = i$.next(); - + for (ChunkPosition tPos : fluidsToSearch) { // Look all around - if (tPos.chunkPosX < aX + mDist) queueFluid(tPos.chunkPosX + 1, tPos.chunkPosY, tPos.chunkPosZ, fluidsFound, checked); - if (tPos.chunkPosX > aX - mDist) queueFluid(tPos.chunkPosX - 1, tPos.chunkPosY, tPos.chunkPosZ, fluidsFound, checked); - if (tPos.chunkPosZ < aZ + mDist) queueFluid(tPos.chunkPosX, tPos.chunkPosY, tPos.chunkPosZ + 1, fluidsFound, checked); - if (tPos.chunkPosZ > aZ - mDist) queueFluid(tPos.chunkPosX, tPos.chunkPosY, tPos.chunkPosZ - 1, fluidsFound, checked); + if (tPos.chunkPosX < aX + mDist) + queueFluid(tPos.chunkPosX + 1, tPos.chunkPosY, tPos.chunkPosZ, fluidsFound, checked); + if (tPos.chunkPosX > aX - mDist) + queueFluid(tPos.chunkPosX - 1, tPos.chunkPosY, tPos.chunkPosZ, fluidsFound, checked); + if (tPos.chunkPosZ < aZ + mDist) + queueFluid(tPos.chunkPosX, tPos.chunkPosY, tPos.chunkPosZ + 1, fluidsFound, checked); + if (tPos.chunkPosZ > aZ - mDist) + queueFluid(tPos.chunkPosX, tPos.chunkPosY, tPos.chunkPosZ - 1, fluidsFound, checked); // And then look up queueFluid(tPos.chunkPosX, tPos.chunkPosY + 1, tPos.chunkPosZ, this.mPumpList, checked); } this.mPumpList.addAll(fluidsFound); fluidsToSearch = fluidsFound; - fluidsFound = new ArrayDeque<ChunkPosition>(); + fluidsFound = new ArrayDeque<>(); } // Make sure we don't have the pipe location in the queue @@ -486,7 +520,10 @@ public class GT_MetaTileEntity_Pump extends GT_MetaTileEntity_Hatch { @Override public ArrayList<String> getSpecialDebugInfo(IGregTechTileEntity aBaseMetaTileEntity, EntityPlayer aPlayer, int aLogLevel, ArrayList<String> aList) { - aList.addAll(Arrays.asList("Primary pumping fluid: " + (this.mPrimaryPumpedBlock != null ? this.mPrimaryPumpedBlock.getLocalizedName() : "None"), + aList.addAll(Arrays.asList( EnumChatFormatting.BLUE+StatCollector.translateToLocal("GT5U.machines.pump")+EnumChatFormatting.RESET, + StatCollector.translateToLocal("GT5U.machines.workarea")+": " + EnumChatFormatting.GREEN + (radiusConfig * 2 + 1)+ + EnumChatFormatting.RESET+" " + StatCollector.translateToLocal("GT5U.machines.blocks"), + "Primary pumping fluid: " + (this.mPrimaryPumpedBlock != null ? this.mPrimaryPumpedBlock.getLocalizedName() : "None"), "Secondary pumping fluid: " + (this.mSecondaryPumpedBlock != null ? this.mSecondaryPumpedBlock.getLocalizedName() : "None"), "Pumps below: " + mPumpCountBelow, "Queue size: " + mPumpList.size(), @@ -613,4 +650,13 @@ public class GT_MetaTileEntity_Pump extends GT_MetaTileEntity_Hatch { mFakePlayer.setPosition(aBaseTile.getXCoord(), aBaseTile.getYCoord(), aBaseTile.getZCoord()); return mFakePlayer; } + + @Override + public String[] getInfoData() { + return new String[]{ + EnumChatFormatting.BLUE+StatCollector.translateToLocal("GT5U.machines.pump")+EnumChatFormatting.RESET, + StatCollector.translateToLocal("GT5U.machines.workarea")+": " + EnumChatFormatting.GREEN + (radiusConfig * 2 + 1)+ + EnumChatFormatting.RESET+" " + StatCollector.translateToLocal("GT5U.machines.blocks") + }; + } } |
