diff options
Diffstat (limited to 'src/main/java/gregtech/common')
-rw-r--r-- | src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_AdvSeismicProspector.java | 100 |
1 files changed, 68 insertions, 32 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 3099959501..f91be2e4d3 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 @@ -1,5 +1,6 @@ package gregtech.common.tileentities.machines.basic; +import static gregtech.common.GT_UndergroundOil.undergroundOilReadInformation; import gregtech.api.GregTech_API; import gregtech.api.enums.ItemList; import gregtech.api.enums.Materials; @@ -10,6 +11,7 @@ import gregtech.api.metatileentity.MetaTileEntity; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicMachine; import gregtech.api.objects.GT_RenderedTexture; import gregtech.api.objects.ItemData; +import gregtech.api.util.GT_Log; import gregtech.api.util.GT_OreDictUnificator; import gregtech.api.util.GT_Utility; import gregtech.common.GT_UndergroundOil; @@ -24,25 +26,30 @@ import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.ChunkPosition; +import net.minecraft.world.chunk.Chunk; +import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; +import net.minecraft.world.*; +import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.Map; -public class GT_MetaTileEntity_AdvSeismicProspector extends GT_MetaTileEntity_BasicMachine { +public class GT_MetaTileEntity_AdvSeismicProspector extends GT_MetaTileEntity_BasicMachine { boolean ready = false; int radius; int near; int middle; int step; + private int mOilId = 0; + private ArrayList<Chunk> mOilFieldChunks = new ArrayList<Chunk>(); + public GT_MetaTileEntity_AdvSeismicProspector(int aID, String aName, String aNameRegional, int aTier, int aRadius, int aStep) { super(aID, aName, aNameRegional, aTier, 1, // amperage - "Place, activate with explosives (" - + "8 Glyceryl, " - + "32 TNT or " - + "16 ITNT), use Data Stick", + "", 1, // input slot count 1, // output slot count "Default.png", // GUI name @@ -62,6 +69,16 @@ public class GT_MetaTileEntity_AdvSeismicProspector extends GT_MetaTileEntity_Ba step = aStep; } + public String[] getDescription() { + return new String[]{ + "Place, activate with explosives (" + + "8 Glyceryl, " + + "32 TNT or " + + "16 ITNT), use Data Stick", + "Ore prospection area 191x191 blocks", + "Oil prospection area 3x3 oilfields"}; + } + protected GT_MetaTileEntity_AdvSeismicProspector(String aName, int aTier, String aDescription, ITexture[][][] aTextures, String aGUIName, String aNEIName, int aNear, int aMiddle, int aRadius, int aStep) { super(aName, aTier, 1, aDescription, aTextures, 1, 1, aGUIName, aNEIName); @@ -109,7 +126,7 @@ public class GT_MetaTileEntity_AdvSeismicProspector extends GT_MetaTileEntity_Ba prospectOres(tNearOres, tMiddleOres, tFarOres); // prospecting oils - HashMap<String, Integer> tOils = new HashMap<String, Integer>(); + ArrayList<String> tOils = new ArrayList<String>(); prospectOils(tOils); GT_Utility.ItemNBT.setAdvancedProspectionData(mTier, @@ -118,7 +135,7 @@ public class GT_MetaTileEntity_AdvSeismicProspector extends GT_MetaTileEntity_Ba this.getBaseMetaTileEntity().getYCoord(), this.getBaseMetaTileEntity().getZCoord(), this.getBaseMetaTileEntity().getWorld().provider.dimensionId, - GT_Utility.sortByValueToList(tOils), + tOils, GT_Utility.sortByValueToList(tNearOres), GT_Utility.sortByValueToList(tMiddleOres), GT_Utility.sortByValueToList(tFarOres), @@ -129,36 +146,55 @@ public class GT_MetaTileEntity_AdvSeismicProspector extends GT_MetaTileEntity_Ba return true; } - private void prospectOils(HashMap<String, Integer> aOils) { + private void prospectOils(ArrayList<String> aOils) { - int tLeftXBound = GT_Utility.getScaleCoordinates(this.getBaseMetaTileEntity().getXCoord() - radius, 16); - int tRightXBound = GT_Utility.getScaleCoordinates(this.getBaseMetaTileEntity().getXCoord() + radius, 16); + FluidStack tFluid; - int tLeftZBound = GT_Utility.getScaleCoordinates(this.getBaseMetaTileEntity().getZCoord() - radius, 16); - int tRightZBound = GT_Utility.getScaleCoordinates(this.getBaseMetaTileEntity().getZCoord() + radius, 16); + Chunk tChunk = getBaseMetaTileEntity().getWorld().getChunkFromBlockCoords(getBaseMetaTileEntity().getXCoord(), getBaseMetaTileEntity().getZCoord()); + int range = 6; + int xChunk = (tChunk.xPosition / range) * range - ((tChunk.xPosition < 0 && tChunk.xPosition % range != 0) ? range : 0); + int zChunk = (tChunk.zPosition / range) * range - ((tChunk.zPosition < 0 && tChunk.zPosition % range != 0) ? range : 0); - HashMap<ChunkCoordIntPair, FluidStack> tFluids = new HashMap<>(); + HashMap<Integer, FluidStack> tFluids = new HashMap<>(); + ArrayList<String> minmax = new ArrayList<>(); + int cInts = 0; try { - for (int x = tLeftXBound; x <= tRightXBound; ++x) - for (int z = tLeftZBound; z <= tRightZBound; ++z) - { - ChunkPosition tPos = new ChunkPosition(GT_Utility.getScaleCoordinates(x*16,96), 0, GT_Utility.getScaleCoordinates(z*16,96)); - ChunkCoordIntPair cInts = getBaseMetaTileEntity().getWorld().getChunkFromChunkCoords(tPos.chunkPosX,tPos.chunkPosZ).getChunkCoordIntPair(); - FluidStack tFluid = GT_UndergroundOil.undergroundOilReadInformation(getBaseMetaTileEntity().getWorld().getChunkFromChunkCoords(tPos.chunkPosX,tPos.chunkPosZ)); - if (tFluid != null) - if (tFluids.containsKey(cInts)) { - if (tFluids.get(cInts).amount<tFluid.amount) - tFluids.get(cInts).amount = tFluid.amount; - } else tFluids.put(cInts, tFluid); - } - - for (Map.Entry<ChunkCoordIntPair, FluidStack> fl : tFluids.entrySet()) { - aOils.put(fl.getKey().chunkXPos + "," + fl.getKey().chunkZPos + "," + fl.getValue().amount + "," + fl.getValue().getLocalizedName(), fl.getValue().amount); - } - } catch (Exception e) { - // TODO: handle exception - } + for (int x = -1; x < 2; ++x) { + for (int z = -1; z < 2; ++z) { + int min = 1000; + int max = 0; + + for (int i = 0; i < range; i++) { + for (int j = 0; j < range; j++) { + tChunk = getBaseMetaTileEntity().getWorld().getChunkFromChunkCoords(xChunk + i + z * 6, zChunk + j + x * 6); + tFluid = undergroundOilReadInformation(tChunk); + if (tFluid != null) { + if (max < tFluid.amount) + max = tFluid.amount; + if (min > tFluid.amount) + min = tFluid.amount; + + if (tFluids.containsKey(cInts)) { + if (tFluids.get(cInts).amount < tFluid.amount) + tFluids.get(cInts).amount = tFluid.amount; + } else tFluids.put(cInts, tFluid); + } + } + } + cInts++; + minmax.add(min + "-" + max); + } + } + + int i = 0; + for (Map.Entry<Integer, FluidStack> fl : tFluids.entrySet()) { + aOils.add(i + 1 + "," + minmax.get(i) + "," + fl.getValue().getLocalizedName()); + i++; + } + } catch (Exception e) { + + } } //private void putOil(int x, int z, HashMap<String, Integer> aOils) {//TODO Old method?? |