aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus/xmod/gregtech/api
diff options
context:
space:
mode:
authorGlease <4586901+Glease@users.noreply.github.com>2022-08-19 19:48:08 +0800
committerGitHub <noreply@github.com>2022-08-19 13:48:08 +0200
commitb38a00df73c592f0358ffbbc69f0cab67fcc3817 (patch)
tree0d2b0cbb4369e4ac01ca5e3ed9a66a78c6347e04 /src/main/java/gtPlusPlus/xmod/gregtech/api
parent74f5f3b087f1549fb6dac4f18557f2c16406dee3 (diff)
downloadGT5-Unofficial-b38a00df73c592f0358ffbbc69f0cab67fcc3817.tar.gz
GT5-Unofficial-b38a00df73c592f0358ffbbc69f0cab67fcc3817.tar.bz2
GT5-Unofficial-b38a00df73c592f0358ffbbc69f0cab67fcc3817.zip
Autoplace integration (#280)
* autoplace integration * add missing changes in base class
Diffstat (limited to 'src/main/java/gtPlusPlus/xmod/gregtech/api')
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GT_MetaTileEntity_Hatch_CustomFluidBase.java136
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java126
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_SteamMultiBase.java31
3 files changed, 211 insertions, 82 deletions
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GT_MetaTileEntity_Hatch_CustomFluidBase.java b/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GT_MetaTileEntity_Hatch_CustomFluidBase.java
index 124f8695f5..ba9e618539 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GT_MetaTileEntity_Hatch_CustomFluidBase.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GT_MetaTileEntity_Hatch_CustomFluidBase.java
@@ -1,44 +1,48 @@
package gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base;
+import gregtech.GT_Mod;
+import gregtech.api.interfaces.ITexture;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.metatileentity.MetaTileEntity;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch;
+import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_Utility;
-import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.util.minecraft.FluidUtils;
+import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
-import gregtech.api.metatileentity.MetaTileEntity;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input;
-import gregtech.api.objects.GT_RenderedTexture;
-import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
-import gregtech.api.enums.Textures;
-import gregtech.api.interfaces.IIconContainer;
-import gregtech.api.interfaces.ITexture;
-public class GT_MetaTileEntity_Hatch_CustomFluidBase extends GT_MetaTileEntity_Hatch_Input {
+
+import static gregtech.api.enums.Textures.BlockIcons.FLUID_IN_SIGN;
+import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_PIPE_IN;
+
+public class GT_MetaTileEntity_Hatch_CustomFluidBase extends GT_MetaTileEntity_Hatch {
public final Fluid mLockedFluid;
public final int mFluidCapacity;
+ protected FluidStack mLockedStack = null;
+ protected String mTempMod = null;
public GT_MetaTileEntity_Hatch_CustomFluidBase(Fluid aFluid, int aAmount, final int aID, final String aName, final String aNameRegional) {
- super(aID, aName, aNameRegional, 6);
- this.mRecipeMap = null;
+ super(aID, aName, aNameRegional, 6, 3, new String[]{
+ "Fluid Input for Multiblocks",
+ "Capacity: " + GT_Utility.formatNumbers(aAmount) + "L"});
this.mLockedFluid = aFluid;
this.mFluidCapacity = aAmount;
}
public GT_MetaTileEntity_Hatch_CustomFluidBase(Fluid aFluid, int aAmount, final String aName, final String aDescription,
final ITexture[][][] aTextures) {
- super(aName, 6, aDescription, aTextures);
- this.mRecipeMap = null;
+ super(aName, 6, 3, aDescription, aTextures);
this.mLockedFluid = aFluid;
this.mFluidCapacity = aAmount;
}
public GT_MetaTileEntity_Hatch_CustomFluidBase(Fluid aFluid, int aAmount, final String aName, final String[] aDescription, final ITexture[][][] aTextures) {
- super(aName, 6, aDescription[0], aTextures);
- this.mRecipeMap = null;
+ super(aName, 6, 3, aDescription[0], aTextures);
this.mLockedFluid = aFluid;
this.mFluidCapacity = aAmount;
}
@@ -46,33 +50,98 @@ public class GT_MetaTileEntity_Hatch_CustomFluidBase extends GT_MetaTileEntity_H
public boolean allowPutStack(final IGregTechTileEntity aBaseMetaTileEntity, final int aIndex, final byte aSide,
final ItemStack aStack) {
if (aSide == aBaseMetaTileEntity.getFrontFacing() && aIndex == 0) {
- if (this.mRecipeMap == null)
- return true;
FluidStack fs = GT_Utility.getFluidForFilledItem(aStack, true);
- if (fs != null && fs.getFluid() == this.mLockedFluid)
- return true;
+ return fs != null && fs.getFluid() == this.mLockedFluid;
}
return false;
}
- public ITexture[] getTexturesActive(final ITexture aBaseTexture) {
- return new ITexture[]{aBaseTexture,
- new GT_RenderedTexture((IIconContainer) Textures.BlockIcons.OVERLAY_PUMP)};
+ @Override
+ public boolean allowPullStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) {
+ return aSide == aBaseMetaTileEntity.getFrontFacing() && aIndex == 1;
+ }
+
+ @Override
+ public ITexture[] getTexturesActive(ITexture aBaseTexture) {
+ return GT_Mod.gregtechproxy.mRenderIndicatorsOnHatch ?
+ new ITexture[]{aBaseTexture, TextureFactory.of(OVERLAY_PIPE_IN), TextureFactory.of(FLUID_IN_SIGN)} :
+ new ITexture[]{aBaseTexture, TextureFactory.of(OVERLAY_PIPE_IN)};
}
- public ITexture[] getTexturesInactive(final ITexture aBaseTexture) {
- return new ITexture[]{aBaseTexture,
- new GT_RenderedTexture((IIconContainer) Textures.BlockIcons.OVERLAY_PUMP)};
+ @Override
+ public ITexture[] getTexturesInactive(ITexture aBaseTexture) {
+ return GT_Mod.gregtechproxy.mRenderIndicatorsOnHatch ?
+ new ITexture[]{aBaseTexture, TextureFactory.of(OVERLAY_PIPE_IN), TextureFactory.of(FLUID_IN_SIGN)} :
+ new ITexture[]{aBaseTexture, TextureFactory.of(OVERLAY_PIPE_IN)};
+ }
+
+ @Override
+ public boolean isSimpleMachine() {
+ return true;
+ }
+
+ @Override
+ public boolean isFacingValid(byte aFacing) {
+ return true;
+ }
+
+ @Override
+ public boolean isAccessAllowed(EntityPlayer aPlayer) {
+ return true;
+ }
+
+ @Override
+ public boolean onRightclick(IGregTechTileEntity aBaseMetaTileEntity, EntityPlayer aPlayer) {
+ if (aBaseMetaTileEntity.isClientSide()) return true;
+ aBaseMetaTileEntity.openGUI(aPlayer);
+ return true;
+ }
+
+ @Override
+ public boolean doesFillContainers() {
+ //return true;
+ return false;
+ }
+
+ @Override
+ public boolean doesEmptyContainers() {
+ return true;
+ }
+
+ @Override
+ public boolean canTankBeFilled() {
+ return true;
+ }
+
+ @Override
+ public boolean canTankBeEmptied() {
+ return true;
+ }
+
+ @Override
+ public boolean displaysItemStack() {
+ return true;
+ }
+
+ @Override
+ public boolean displaysStackSize() {
+ return false;
+ }
+
+ public void updateSlots() {
+ if (mInventory[getInputSlot()] != null && mInventory[getInputSlot()].stackSize <= 0)
+ mInventory[getInputSlot()] = null;
+ }
+
+ @Override
+ public int getTankPressure() {
+ return -100;
}
public int getCapacity() {
return this.mFluidCapacity;
}
- protected FluidStack mLockedStack = null;
- protected Integer mLockedTemp = null;
- protected String mTempMod = null;
-
@Override
public String[] getDescription() {
if (mLockedStack == null) {
@@ -84,7 +153,7 @@ public class GT_MetaTileEntity_Hatch_CustomFluidBase extends GT_MetaTileEntity_H
aFluidTemp = mLockedFluid.getTemperature();
mTempMod = mLockedFluid.getName();
}
- if (mTempMod.toLowerCase().equals("steam")) {
+ if (mTempMod.equalsIgnoreCase("steam")) {
isSteam = true;
}
@@ -112,13 +181,12 @@ public class GT_MetaTileEntity_Hatch_CustomFluidBase extends GT_MetaTileEntity_H
aColour = EnumChatFormatting.RED;
}
String aFluidName = "Accepted Fluid: " + aColour + (mLockedStack != null ? mLockedStack.getLocalizedName() : "Empty") + EnumChatFormatting.RESET;
- String[] s2 = new String[]{
+ return new String[]{
"Fluid Input for "+(isSteam ? "Steam " : "")+"Multiblocks",
"Capacity: " + getCapacity()+"L",
aFluidName,
CORE.GT_Tooltip
- };
- return s2;
+ };
}
public boolean isFluidInputAllowed(final FluidStack aFluid) {
@@ -126,6 +194,6 @@ public class GT_MetaTileEntity_Hatch_CustomFluidBase extends GT_MetaTileEntity_H
}
public MetaTileEntity newMetaEntity(final IGregTechTileEntity aTileEntity) {
- return (MetaTileEntity) new GT_MetaTileEntity_Hatch_CustomFluidBase(this.mLockedFluid, this.mFluidCapacity, this.mName, this.mDescription, this.mTextures);
+ return new GT_MetaTileEntity_Hatch_CustomFluidBase(this.mLockedFluid, this.mFluidCapacity, this.mName, this.mDescription, this.mTextures);
}
} \ No newline at end of file
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java b/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java
index d50079803f..da38f14758 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java
@@ -1,13 +1,16 @@
package gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base;
import com.gtnewhorizon.structurelib.StructureLibAPI;
+import com.gtnewhorizon.structurelib.structure.IItemSource;
import com.gtnewhorizon.structurelib.structure.IStructureElement;
+import com.gtnewhorizon.structurelib.structure.StructureUtility;
import gregtech.api.GregTech_API;
import gregtech.api.enums.GT_Values;
import gregtech.api.enums.Materials;
import gregtech.api.enums.Textures;
import gregtech.api.gui.GT_Container_MultiMachine;
import gregtech.api.gui.GT_GUIContainer_MultiMachine;
+import gregtech.api.interfaces.IHatchElement;
import gregtech.api.interfaces.IIconContainer;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
@@ -22,6 +25,7 @@ import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Recipe.GT_Recipe_Map;
import gregtech.api.util.GT_Utility;
+import gregtech.api.util.IGT_HatchAdder;
import gtPlusPlus.GTplusplus;
import gtPlusPlus.GTplusplus.INIT_PHASE;
import gtPlusPlus.api.helpers.GregtechPlusPlus_API.Multiblock_API;
@@ -39,13 +43,10 @@ import gtPlusPlus.core.util.reflect.ReflectionUtils;
import gtPlusPlus.preloader.CORE_Preloader;
import gtPlusPlus.preloader.asm.AsmConfig;
import gtPlusPlus.xmod.gregtech.api.gui.*;
-import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_AirIntake;
-import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_ControlCore;
-import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_InputBattery;
-import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_OutputBattery;
-import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Steam_BusInput;
+import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.*;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.Item;
@@ -53,11 +54,11 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ChatComponentTranslation;
import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.IChatComponent;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.oredict.OreDictionary;
-
import org.apache.commons.lang3.ArrayUtils;
import java.lang.reflect.InvocationTargetException;
@@ -66,7 +67,10 @@ import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.function.BiConsumer;
import java.util.function.BiPredicate;
+import java.util.function.Consumer;
import java.util.function.Function;
+import java.util.stream.Collectors;
+
import static gtPlusPlus.core.util.data.ArrayUtils.removeNulls;
@@ -2597,29 +2601,6 @@ public abstract class GregtechMeta_MultiBlockBase<T extends GT_MetaTileEntity_En
}
@Override
- public boolean depleteInput(final FluidStack aLiquid) {
- if (aLiquid == null) {
- return false;
- }
- for (final GT_MetaTileEntity_Hatch_Input tHatch : this.mInputHatches) {
- tHatch.mRecipeMap = this.getRecipeMap();
- if (isValidMetaTileEntity(tHatch)) {
- FluidStack tLiquid = tHatch.getFluid();
- if (tLiquid == null || !tLiquid.isFluidEqual(aLiquid) || tLiquid.amount < aLiquid.amount) {
- continue;
- }
- tLiquid = tHatch.drain(aLiquid.amount, false);
- if (tLiquid != null && tLiquid.amount >= aLiquid.amount) {
- tLiquid = tHatch.drain(aLiquid.amount, true);
- return tLiquid != null && tLiquid.amount >= aLiquid.amount;
- }
- continue;
- }
- }
- return false;
- }
-
- @Override
public void onServerStart() {
super.onServerStart();
tryTickWaitTimerDown();
@@ -2650,6 +2631,11 @@ public abstract class GregtechMeta_MultiBlockBase<T extends GT_MetaTileEntity_En
}
//Only support to use meta to tier
+
+ /**
+ * accept meta [0, maxMeta)
+ * @param maxMeta exclusive
+ */
public static <T> IStructureElement<T> addTieredBlock(Block aBlock, BiConsumer<T, Integer> aSetTheFuckingMeta, Function<T, Integer> aGetTheFuckingMeta, int maxMeta) {
return addTieredBlock(aBlock, (t, i) -> {
aSetTheFuckingMeta.accept(t, i);
@@ -2658,6 +2644,11 @@ public abstract class GregtechMeta_MultiBlockBase<T extends GT_MetaTileEntity_En
);
}
+ /**
+ *
+ * @param minMeta inclusive
+ * @param maxMeta exclusive
+ */
public static <T> IStructureElement<T> addTieredBlock(Block aBlock, BiConsumer<T, Integer> aSetTheFuckingMeta, Function<T, Integer> aGetTheFuckingMeta, int minMeta, int maxMeta) {
return addTieredBlock(aBlock, (t, i) -> {
aSetTheFuckingMeta.accept(t, i);
@@ -2666,6 +2657,11 @@ public abstract class GregtechMeta_MultiBlockBase<T extends GT_MetaTileEntity_En
);
}
+ /**
+ *
+ * @param minMeta inclusive
+ * @param maxMeta exclusive
+ */
public static <T> IStructureElement<T> addTieredBlock(Block aBlock, BiPredicate<T, Integer> aSetTheFuckingMeta, Function<T, Integer> aGetTheFuckingMeta, int minMeta, int maxMeta) {
return new IStructureElement<T>() {
@@ -2702,6 +2698,17 @@ public abstract class GregtechMeta_MultiBlockBase<T extends GT_MetaTileEntity_En
if (meta + minMeta >= maxMeta) meta = maxMeta - 1 - minMeta;
return meta + minMeta;
}
+
+ @Override
+ public PlaceResult survivalPlaceBlock(T t, World world, int x, int y, int z, ItemStack trigger, IItemSource s, EntityPlayerMP actor, Consumer<IChatComponent> chatter) {
+ if (world.getBlock(x, y, z) == aBlock) {
+ if (world.getBlockMetadata(x, y, z) == getMeta(trigger)) {
+ return PlaceResult.SKIP;
+ }
+ return PlaceResult.REJECT;
+ }
+ return StructureUtility.survivalPlaceBlock(aBlock, getMeta(trigger), world, x, y, z, s, actor, chatter);
+ }
};
}
@@ -2732,4 +2739,65 @@ public abstract class GregtechMeta_MultiBlockBase<T extends GT_MetaTileEntity_En
protected int getCasingTextureId() {
return 0;
}
+
+ public enum GTPPHatchElement implements IHatchElement<GregtechMeta_MultiBlockBase<?>> {
+ AirIntake(GregtechMeta_MultiBlockBase::addAirIntakeToMachineList, GT_MetaTileEntity_Hatch_AirIntake.class) {
+ @Override
+ public long count(GregtechMeta_MultiBlockBase<?> t) {
+ return t.mAirIntakes.size();
+ }
+ },
+ ControlCore(GregtechMeta_MultiBlockBase::addControlCoreToMachineList, GT_MetaTileEntity_Hatch_ControlCore.class) {
+ @Override
+ public long count(GregtechMeta_MultiBlockBase<?> t) {
+ return t.mControlCoreBus.size();
+ }
+ },
+ TTDynamo(GregtechMeta_MultiBlockBase::addMultiAmpDynamoToMachineList, "com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_DynamoMulti") {
+ @Override
+ public long count(GregtechMeta_MultiBlockBase<?> t) {
+ return t.mTecTechDynamoHatches.size();
+ }
+ },
+ TTEnergy(GregtechMeta_MultiBlockBase::addMultiAmpEnergyToMachineList, "com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_EnergyMulti") {
+ @Override
+ public long count(GregtechMeta_MultiBlockBase<?> t) {
+ return t.mTecTechEnergyHatches.size();
+ }
+ },
+ ;
+
+ @SuppressWarnings("unchecked")
+ private static <T> Class<T> retype(Class<?> clazz) {
+ return (Class<T>) clazz;
+ }
+
+ private final List<? extends Class<? extends IMetaTileEntity>> mMteClasses;
+ private final IGT_HatchAdder<? super GregtechMeta_MultiBlockBase<?>> mAdder;
+
+ @SafeVarargs
+ GTPPHatchElement(IGT_HatchAdder<? super GregtechMeta_MultiBlockBase<?>> aAdder, Class<? extends IMetaTileEntity>... aMteClasses) {
+ this.mMteClasses = Arrays.asList(aMteClasses);
+ this.mAdder = aAdder;
+ }
+
+ GTPPHatchElement(IGT_HatchAdder<? super GregtechMeta_MultiBlockBase<?>> aAdder, String... aClassNames) {
+ this.mMteClasses = Arrays.stream(aClassNames)
+ .map(ReflectionUtils::getClass)
+ .filter(Objects::nonNull)
+ .<Class<? extends IMetaTileEntity>>map(GTPPHatchElement::retype)
+ .collect(Collectors.toList());
+ this.mAdder = aAdder;
+ }
+
+ @Override
+ public List<? extends Class<? extends IMetaTileEntity>> mteClasses() {
+ return mMteClasses;
+ }
+
+ @Override
+ public IGT_HatchAdder<? super GregtechMeta_MultiBlockBase<?>> adder() {
+ return mAdder;
+ }
+ }
}
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_SteamMultiBase.java b/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_SteamMultiBase.java
index e963a0e2f7..5503280409 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_SteamMultiBase.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_SteamMultiBase.java
@@ -1,20 +1,18 @@
package gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base;
+import java.util.ArrayList;
+import java.util.List;
+
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_Input;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output;
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Recipe.GT_Recipe_Map;
import gregtech.api.util.GT_Utility;
-import gtPlusPlus.api.objects.data.AutoMap;
-import gtPlusPlus.api.objects.data.ConcurrentHashSet;
-import gtPlusPlus.api.objects.data.ConcurrentSet;
-import gtPlusPlus.api.objects.data.FlexiblePair;
-import gtPlusPlus.api.objects.data.Triplet;
+import gtPlusPlus.api.objects.data.*;
import gtPlusPlus.core.util.minecraft.FluidUtils;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Steam_BusInput;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Steam_BusOutput;
@@ -24,13 +22,11 @@ import net.minecraft.util.StatCollector;
import net.minecraftforge.fluids.FluidStack;
import org.apache.commons.lang3.ArrayUtils;
-import java.util.ArrayList;
-import java.util.List;
import static gregtech.api.enums.GT_Values.V;
import static gtPlusPlus.core.util.data.ArrayUtils.removeNulls;
-public abstract class GregtechMeta_SteamMultiBase extends GregtechMeta_MultiBlockBase {
+public abstract class GregtechMeta_SteamMultiBase<T extends GregtechMeta_SteamMultiBase<T>> extends GregtechMeta_MultiBlockBase<T> {
public ArrayList<GT_MetaTileEntity_Hatch_Steam_BusInput> mSteamInputs = new ArrayList<GT_MetaTileEntity_Hatch_Steam_BusInput>();
public ArrayList<GT_MetaTileEntity_Hatch_Steam_BusOutput> mSteamOutputs = new ArrayList<GT_MetaTileEntity_Hatch_Steam_BusOutput>();
@@ -90,8 +86,8 @@ public abstract class GregtechMeta_SteamMultiBase extends GregtechMeta_MultiBloc
if (tMap == null) {
return false;
}
- ItemStack[] aItemInputs = tItems.toArray(new ItemStack[tItems.size()]);
- FluidStack[] aFluidInputs = tFluids.toArray(new FluidStack[tFluids.size()]);
+ ItemStack[] aItemInputs = tItems.toArray(new ItemStack[0]);
+ FluidStack[] aFluidInputs = tFluids.toArray(new FluidStack[0]);
GT_Recipe tRecipe = tMap.findRecipe(getBaseMetaTileEntity(), mLastRecipe, false, V[1], null, null, aItemInputs);
if (tRecipe == null) {
log("BAD RETURN - 1");
@@ -211,7 +207,7 @@ public abstract class GregtechMeta_SteamMultiBase extends GregtechMeta_MultiBloc
for (ItemStack tS : tOutputItems) {
if (tS.stackSize > 0) tSList.add(tS);
}
- tOutputItems = tSList.toArray(new ItemStack[tSList.size()]);
+ tOutputItems = tSList.toArray(new ItemStack[0]);
// Commit outputs
this.mOutputItems = tOutputItems;
@@ -685,8 +681,7 @@ public abstract class GregtechMeta_SteamMultiBase extends GregtechMeta_MultiBloc
@Override
public boolean depleteInput(FluidStack aLiquid) {
if (aLiquid == null) return false;
- for (GT_MetaTileEntity_Hatch_Input tHatch : mSteamInputFluids) {
- tHatch.mRecipeMap = getRecipeMap();
+ for (GT_MetaTileEntity_Hatch_CustomFluidBase tHatch : mSteamInputFluids) {
if (isValidMetaTileEntity(tHatch)) {
FluidStack tLiquid = tHatch.getFluid();
if (tLiquid != null && tLiquid.isFluidEqual(aLiquid)) {
@@ -706,8 +701,7 @@ public abstract class GregtechMeta_SteamMultiBase extends GregtechMeta_MultiBloc
if (GT_Utility.isStackInvalid(aStack)) return false;
FluidStack aLiquid = GT_Utility.getFluidForFilledItem(aStack, true);
if (aLiquid != null) return depleteInput(aLiquid);
- for (GT_MetaTileEntity_Hatch_Input tHatch : mSteamInputFluids) {
- tHatch.mRecipeMap = getRecipeMap();
+ for (GT_MetaTileEntity_Hatch_CustomFluidBase tHatch : mSteamInputFluids) {
if (isValidMetaTileEntity(tHatch)) {
if (GT_Utility.areStacksEqual(aStack, tHatch.getBaseMetaTileEntity().getStackInSlot(0))) {
if (tHatch.getBaseMetaTileEntity().getStackInSlot(0).stackSize >= aStack.stackSize) {
@@ -736,8 +730,7 @@ public abstract class GregtechMeta_SteamMultiBase extends GregtechMeta_MultiBloc
@Override
public ArrayList<FluidStack> getStoredFluids() {
ArrayList<FluidStack> rList = new ArrayList<FluidStack>();
- for (GT_MetaTileEntity_Hatch_Input tHatch : mSteamInputFluids) {
- tHatch.mRecipeMap = getRecipeMap();
+ for (GT_MetaTileEntity_Hatch_CustomFluidBase tHatch : mSteamInputFluids) {
if (isValidMetaTileEntity(tHatch) && tHatch.getFillableStack() != null) {
rList.add(tHatch.getFillableStack());
}
@@ -800,7 +793,7 @@ public abstract class GregtechMeta_SteamMultiBase extends GregtechMeta_MultiBloc
@Override
public void updateSlots() {
- for (GT_MetaTileEntity_Hatch_Input tHatch : mSteamInputFluids)
+ for (GT_MetaTileEntity_Hatch_CustomFluidBase tHatch : mSteamInputFluids)
if (isValidMetaTileEntity(tHatch)) tHatch.updateSlots();
for (GT_MetaTileEntity_Hatch_Steam_BusInput tHatch : mSteamInputs)
if (isValidMetaTileEntity(tHatch)) tHatch.updateSlots();