aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorboubou19 <miisterunknown@gmail.com>2021-12-12 00:06:05 +0100
committerGitHub <noreply@github.com>2021-12-12 00:06:05 +0100
commit00dd201c0024d75d55abca019ac533713818d280 (patch)
tree7cb2e6bf9e52875a933c6cf0838adc05e7079d59
parent450a7042f919a04d790bd4b295b43ed8287c6ca4 (diff)
downloadGT5-Unofficial-00dd201c0024d75d55abca019ac533713818d280.tar.gz
GT5-Unofficial-00dd201c0024d75d55abca019ac533713818d280.tar.bz2
GT5-Unofficial-00dd201c0024d75d55abca019ac533713818d280.zip
add infinite oil rig (#795)
* add infinite oil rig * fix typo * get same speed as the oil rig III * adjust speed for the infinite oil rig
-rw-r--r--src/main/java/gregtech/api/enums/ItemList.java1
-rw-r--r--src/main/java/gregtech/common/GT_UndergroundOil.java6
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrillBase.java18
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrillInfinite.java83
-rw-r--r--src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java1
5 files changed, 100 insertions, 9 deletions
diff --git a/src/main/java/gregtech/api/enums/ItemList.java b/src/main/java/gregtech/api/enums/ItemList.java
index 8dcf5fe129..bf74ae6b1d 100644
--- a/src/main/java/gregtech/api/enums/ItemList.java
+++ b/src/main/java/gregtech/api/enums/ItemList.java
@@ -1559,6 +1559,7 @@ public enum ItemList implements IItemContainer {
OilDrill1,
OilDrill2,
OilDrill3,
+ OilDrillInfinite,
ConcreteBackfiller1,
ConcreteBackfiller2,
OreDrill1,
diff --git a/src/main/java/gregtech/common/GT_UndergroundOil.java b/src/main/java/gregtech/common/GT_UndergroundOil.java
index 95151537ae..02a625d8a2 100644
--- a/src/main/java/gregtech/common/GT_UndergroundOil.java
+++ b/src/main/java/gregtech/common/GT_UndergroundOil.java
@@ -92,11 +92,13 @@ public class GT_UndergroundOil {
// if XSTR_INSTANCE is < chance then subtract 1
chunkData.changeAmount(-decrease);//diminish amount, "randomly" adjusted to double value (averageDecrease)
}
- } else {//just get info
+ }
+ else {//just get info
if (chunkData.amount <= DIVIDER) {
chunkData.setAmount(0);
} else {
- fluidInChunk.amount = chunkData.amount / DIVIDER;//give moderate extraction speed
+ //get the expected current output
+ fluidInChunk.amount = (int) Math.floor(chunkData.getAmount() * (double) -readOrDrainCoefficient / DIVIDER);
}
}
return fluidInChunk;
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
index 76231980ec..3e144d7a1a 100644
--- 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
@@ -147,6 +147,10 @@ public abstract class GT_MetaTileEntity_OilDrillBase extends GT_MetaTileEntity_D
) >> tier);
}
+ protected float computeSpeed(){
+ return .5F+(GT_Utility.getTier(getMaxInputVoltage()) - getMinTier()) *.25F;
+ }
+
@Override
protected boolean workingAtBottom(ItemStack aStack, int xDrill, int yDrill, int zDrill, int xPipe, int zPipe, int yHead, int oldYHead) {
switch (tryLowerPipeState(true)) {
@@ -160,7 +164,7 @@ public abstract class GT_MetaTileEntity_OilDrillBase extends GT_MetaTileEntity_D
GT_ChunkManager.requestChunkLoad((TileEntity) getBaseMetaTileEntity(), null);
mWorkChunkNeedsReload = false;
}
- float speed = .5F+(GT_Utility.getTier(getMaxInputVoltage()) - getMinTier()) *.25F;
+ float speed = computeSpeed();
FluidStack tFluid = pumpOil(speed);
if (tFluid != null && tFluid.amount > getTotalConfigValue()){
this.mOutputFluids = new FluidStack[]{tFluid};
@@ -234,7 +238,7 @@ public abstract class GT_MetaTileEntity_OilDrillBase extends GT_MetaTileEntity_D
return !mOilFieldChunks.isEmpty();
}
- private FluidStack pumpOil(float speed){
+ protected FluidStack pumpOil(float speed){
if (mOilId <= 0) return null;
FluidStack tFluid, tOil;
tOil = new FluidStack(FluidRegistry.getFluid(mOilId), 0);
@@ -245,13 +249,13 @@ public abstract class GT_MetaTileEntity_OilDrillBase extends GT_MetaTileEntity_D
}
ArrayList<Chunk> emptyChunks = new ArrayList<>();
-
+
for (Chunk tChunk : mOilFieldChunks) {
tFluid = undergroundOil(tChunk,speed);
if (debugDriller) {
GT_Log.out.println(
- " chunkX = " + tChunk.getChunkCoordIntPair().chunkXPos +
- " chunkZ = " + tChunk.getChunkCoordIntPair().chunkZPos
+ " chunkX = " + tChunk.getChunkCoordIntPair().chunkXPos +
+ " chunkZ = " + tChunk.getChunkCoordIntPair().chunkZPos
);
if( tFluid != null ) {
GT_Log.out.println(
@@ -259,10 +263,10 @@ public abstract class GT_MetaTileEntity_OilDrillBase extends GT_MetaTileEntity_D
);
} else {
GT_Log.out.println(
- " No fluid pumped "
+ " No fluid pumped "
);
}
-
+
}
if (tFluid == null || tFluid.amount<1) emptyChunks.add(tChunk);
if (tOil.isFluidEqual(tFluid)) tOil.amount += tFluid.amount;
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrillInfinite.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrillInfinite.java
new file mode 100644
index 0000000000..59e41656b3
--- /dev/null
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_OilDrillInfinite.java
@@ -0,0 +1,83 @@
+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;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
+import gregtech.api.util.GT_Utility;
+import net.minecraftforge.fluids.FluidStack;
+
+import static gregtech.api.enums.GT_Values.VN;
+
+public class GT_MetaTileEntity_OilDrillInfinite extends GT_MetaTileEntity_OilDrillBase{
+ public GT_MetaTileEntity_OilDrillInfinite(int aID, String aName, String aNameRegional) {
+ super(aID, aName, aNameRegional);
+ }
+
+ public GT_MetaTileEntity_OilDrillInfinite(String aName) {
+ super(aName);
+ }
+
+ @Override
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ String casings = getCasingBlockItem().get(0).getDisplayName();
+
+ final GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType("Pump")
+ .addInfo("Controller Block for the Infinite Oil/Gas/Fluid Drilling Rig ")
+ .addInfo("Works on " + getRangeInChunks() + "x" + getRangeInChunks() + " chunks")
+ .addSeparator()
+ .beginStructureBlock(3, 7, 3, false)
+ .addController("Front bottom")
+ .addStructureInfo(casings + " form the 3x1x3 Base")
+ .addOtherStructurePart(casings, " 1x3x1 pillar above the center of the base (2 minimum total)")
+ .addOtherStructurePart(getFrameMaterial().mName + " Frame Boxes", "Each pillar's side and 1x3x1 on top")
+ .addEnergyHatch(VN[getMinTier()] + "+, Any base casing", 1)
+ .addMaintenanceHatch("Any base casing", 1)
+ .addInputBus("Mining Pipes or Circuits, optional, any base casing", 1)
+ .addOutputHatch("Any base casing", 1)
+ .toolTipFinisher("Gregtech");
+ return tt;
+ }
+
+ @Override
+ public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
+ return new GT_MetaTileEntity_OilDrillInfinite(mName);
+ }
+
+ @Override
+ protected FluidStack pumpOil(float speed){
+ return super.pumpOil(-speed);
+ }
+
+ @Override
+ protected ItemList getCasingBlockItem() {
+ return ItemList.Casing_MiningNeutronium;
+ }
+
+ @Override
+ protected Materials getFrameMaterial() {
+ return Materials.Neutronium;
+ }
+
+ @Override
+ protected int getCasingTextureIndex() {
+ return 178;
+ }
+
+ @Override
+ protected int getRangeInChunks() {
+ return 8;
+ }
+
+ @Override
+ protected float computeSpeed(){
+ return .5F+(GT_Utility.getTier(getMaxInputVoltage()) - getMinTier()+5) *.25F;
+ }
+
+ @Override
+ protected int getMinTier() {
+ return 9;
+ }
+}
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 ffbfa7ea52..93f47823c1 100644
--- a/src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java
+++ b/src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java
@@ -1007,6 +1007,7 @@ public class GT_Loader_MetaTileEntities implements Runnable {//TODO CHECK CIRCUI
ItemList.OilDrill1.set(new GT_MetaTileEntity_OilDrill1(1157, "multimachine.oildrill1", "Oil/Gas/Fluid Drilling Rig").getStackForm(1));
ItemList.OilDrill2.set(new GT_MetaTileEntity_OilDrill2(141, "multimachine.oildrill2", "Oil/Gas/Fluid Drilling Rig II").getStackForm(1));
ItemList.OilDrill3.set(new GT_MetaTileEntity_OilDrill3(142, "multimachine.oildrill3", "Oil/Gas/Fluid Drilling Rig III").getStackForm(1));
+ ItemList.OilDrillInfinite.set(new GT_MetaTileEntity_OilDrillInfinite(148, "multimachine.oildrillinfinite", "Infinite Oil/Gas/Fluid Drilling Rig").getStackForm(1));
ItemList.ConcreteBackfiller1.set(new GT_MetaTileEntity_ConcreteBackfiller1(143, "multimachine.concretebackfiller1", "Concrete Backfiller").getStackForm(1));
ItemList.ConcreteBackfiller2.set(new GT_MetaTileEntity_ConcreteBackfiller2(144, "multimachine.concretebackfiller3", "Advanced Concrete Backfiller").getStackForm(1));