Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add missing Gas API methods #166

Merged
merged 2 commits into from
Mar 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/main/java/mekanism/api/gas/GasTank.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
* @author aidancbrady
*
*/
public class GasTank
public class GasTank implements GasTankInfo
{
public GasStack stored;

Expand Down
28 changes: 28 additions & 0 deletions src/main/java/mekanism/api/gas/GasTankInfo.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package mekanism.api.gas;

import javax.annotation.Nullable;

public interface GasTankInfo {

/**
* Retrieve the stored gas stack. DO NOT MODIFY.
*
* @return the stored gas, or null
*/
@Nullable
GasStack getGas();

/**
* Gets the amount of gas stored by this GasTank
*
* @return amount of gas stored
*/
int getStored();

/**
* Gets the maximum amount of gas this tank can hold
*
* @return - max gas
*/
int getMaxGas();
}
23 changes: 23 additions & 0 deletions src/main/java/mekanism/api/gas/IGasTankInfoProvider.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package mekanism.api.gas;

import javax.annotation.Nonnull;

/**
* Implement this if your tile entity extends IGasHandler.
* Backported from 1.12.2, separated from IGasHandler to maintain compatibility.
*/
public interface IGasTankInfoProvider
{

GasTankInfo[] NONE = new GasTankInfo[0];

/**
* Gets the tanks present on this handler. READ ONLY. DO NOT MODIFY.
*
* @return an array of GasTankInfo elements corresponding to all tanks.
*/
@Nonnull
default GasTankInfo[] getTankInfo() {
return NONE;
}
}
20 changes: 19 additions & 1 deletion src/main/java/mekanism/common/multipart/PartPressurizedTube.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,17 @@

import java.util.Collection;

import javax.annotation.Nonnull;

import mekanism.api.MekanismConfig.client;
import mekanism.api.gas.Gas;
import mekanism.api.gas.GasNetwork;
import mekanism.api.gas.GasStack;
import mekanism.api.gas.GasTank;
import mekanism.api.gas.GasTankInfo;
import mekanism.api.gas.GasTransmission;
import mekanism.api.gas.IGasHandler;
import mekanism.api.gas.IGasTankInfoProvider;
import mekanism.api.transmitters.TransmissionType;
import mekanism.client.render.RenderPartTransmitter;
import mekanism.common.Tier;
Expand All @@ -26,7 +30,7 @@
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class PartPressurizedTube extends PartTransmitter<IGasHandler, GasNetwork> implements IGasHandler
public class PartPressurizedTube extends PartTransmitter<IGasHandler, GasNetwork> implements IGasHandler, IGasTankInfoProvider
{
public Tier.TubeTier tier = Tier.TubeTier.BASIC;

Expand Down Expand Up @@ -303,6 +307,20 @@ public boolean canDrawGas(ForgeDirection side, Gas type)
return false;
}

@Override
@Nonnull
public GasTankInfo[] getTankInfo()
{
if (getTransmitter().hasTransmitterNetwork())
{
GasNetwork network = getTransmitter().getTransmitterNetwork();
GasTank networkTank = new GasTank(network.getCapacity());
networkTank.setGas(network.buffer);
return new GasTankInfo[] {networkTank};
}
return new GasTankInfo[] {buffer};
}

public int takeGas(GasStack gasStack, boolean doEmit)
{
if(getTransmitter().hasTransmitterNetwork())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,15 @@

import java.util.ArrayList;

import javax.annotation.Nonnull;

import mekanism.api.EnumColor;
import mekanism.api.gas.Gas;
import mekanism.api.gas.GasStack;
import mekanism.api.gas.GasTank;
import mekanism.api.gas.GasTankInfo;
import mekanism.api.gas.IGasHandler;
import mekanism.api.gas.IGasTankInfoProvider;
import mekanism.api.gas.ITubeConnection;
import mekanism.api.transmitters.TransmissionType;
import mekanism.common.MekanismBlocks;
Expand All @@ -35,7 +39,7 @@
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.util.ForgeDirection;

public abstract class TileEntityAdvancedElectricMachine<RECIPE extends AdvancedMachineRecipe<RECIPE>> extends TileEntityBasicMachine<AdvancedMachineInput, ItemStackOutput, RECIPE> implements IGasHandler, ITubeConnection, ITierUpgradeable
public abstract class TileEntityAdvancedElectricMachine<RECIPE extends AdvancedMachineRecipe<RECIPE>> extends TileEntityBasicMachine<AdvancedMachineInput, ItemStackOutput, RECIPE> implements IGasHandler, IGasTankInfoProvider, ITubeConnection, ITierUpgradeable
{
/** How much secondary energy (fuel) this machine uses per tick, not including upgrades. */
public int BASE_SECONDARY_ENERGY_PER_TICK;
Expand Down Expand Up @@ -438,6 +442,13 @@ public boolean canDrawGas(ForgeDirection side, Gas type)
return false;
}

@Override
@Nonnull
public GasTankInfo[] getTankInfo()
{
return new GasTankInfo[] {gasTank};
}

@Override
public void recalculateUpgradables(Upgrade upgrade)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,22 @@
import java.util.ArrayList;
import java.util.Random;

import javax.annotation.Nonnull;

import mekanism.api.gas.Gas;
import mekanism.api.gas.GasStack;
import mekanism.api.gas.GasTank;
import mekanism.api.gas.GasTankInfo;
import mekanism.api.gas.IGasHandler;
import mekanism.api.gas.IGasTankInfoProvider;
import mekanism.api.gas.ITubeConnection;
import mekanism.common.recipe.RecipeHandler;
import mekanism.common.recipe.inputs.IntegerInput;
import mekanism.common.recipe.machines.AmbientGasRecipe;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.ForgeDirection;

public class TileEntityAmbientAccumulator extends TileEntityContainerBlock implements IGasHandler, ITubeConnection
public class TileEntityAmbientAccumulator extends TileEntityContainerBlock implements IGasHandler, IGasTankInfoProvider, ITubeConnection
{
public GasTank collectedGas = new GasTank(1000);

Expand Down Expand Up @@ -86,6 +90,13 @@ public boolean canDrawGas(ForgeDirection side, Gas type)
return type == collectedGas.getGasType();
}

@Override
@Nonnull
public GasTankInfo[] getTankInfo()
{
return new GasTankInfo[] {collectedGas};
}

@Override
public boolean canTubeConnect(ForgeDirection side)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

import java.util.ArrayList;

import javax.annotation.Nonnull;

import mekanism.api.Coord4D;
import mekanism.api.EnumColor;
import mekanism.api.IConfigCardAccess;
Expand All @@ -13,9 +15,11 @@
import mekanism.api.gas.GasRegistry;
import mekanism.api.gas.GasStack;
import mekanism.api.gas.GasTank;
import mekanism.api.gas.GasTankInfo;
import mekanism.api.gas.GasTransmission;
import mekanism.api.gas.IGasHandler;
import mekanism.api.gas.IGasItem;
import mekanism.api.gas.IGasTankInfoProvider;
import mekanism.api.gas.ITubeConnection;
import mekanism.api.transmitters.TransmissionType;
import mekanism.common.Mekanism;
Expand Down Expand Up @@ -43,7 +47,7 @@
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.util.ForgeDirection;

public class TileEntityChemicalCrystallizer extends TileEntityNoisyElectricBlock implements IGasHandler, ITubeConnection, IRedstoneControl, ISideConfiguration, IUpgradeTile, ISustainedData, ITankManager, IConfigCardAccess, ISecurityTile
public class TileEntityChemicalCrystallizer extends TileEntityNoisyElectricBlock implements IGasHandler, IGasTankInfoProvider, ITubeConnection, IRedstoneControl, ISideConfiguration, IUpgradeTile, ISustainedData, ITankManager, IConfigCardAccess, ISecurityTile
{
public static final int MAX_GAS = 10000;

Expand Down Expand Up @@ -390,6 +394,13 @@ public boolean canDrawGas(ForgeDirection side, Gas type)
return false;
}

@Override
@Nonnull
public GasTankInfo[] getTankInfo()
{
return new GasTankInfo[] {inputTank};
}

@Override
public boolean isItemValidForSlot(int slotID, ItemStack itemstack)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,20 @@

import java.util.ArrayList;

import javax.annotation.Nonnull;

import mekanism.api.Coord4D;
import mekanism.api.MekanismConfig.usage;
import mekanism.api.Range4D;
import mekanism.api.gas.Gas;
import mekanism.api.gas.GasRegistry;
import mekanism.api.gas.GasStack;
import mekanism.api.gas.GasTank;
import mekanism.api.gas.GasTankInfo;
import mekanism.api.gas.GasTransmission;
import mekanism.api.gas.IGasHandler;
import mekanism.api.gas.IGasItem;
import mekanism.api.gas.IGasTankInfoProvider;
import mekanism.api.gas.ITubeConnection;
import mekanism.common.Mekanism;
import mekanism.common.Upgrade;
Expand All @@ -39,7 +43,7 @@
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;

public class TileEntityChemicalDissolutionChamber extends TileEntityNoisyElectricBlock implements ITubeConnection, IRedstoneControl, IGasHandler, IUpgradeTile, ISustainedData, ITankManager, ISecurityTile
public class TileEntityChemicalDissolutionChamber extends TileEntityNoisyElectricBlock implements ITubeConnection, IRedstoneControl, IGasHandler, IGasTankInfoProvider, IUpgradeTile, ISustainedData, ITankManager, ISecurityTile
{
public GasTank injectTank = new GasTank(MAX_GAS);
public GasTank outputTank = new GasTank(MAX_GAS);
Expand Down Expand Up @@ -453,6 +457,13 @@ public boolean canDrawGas(ForgeDirection side, Gas type)
return false;
}

@Override
@Nonnull
public GasTankInfo[] getTankInfo()
{
return new GasTankInfo[] {injectTank, outputTank};
}

@Override
public TileComponentUpgrade getComponent()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,20 @@
import java.util.ArrayList;
import java.util.List;

import javax.annotation.Nonnull;

import mekanism.api.Coord4D;
import mekanism.api.MekanismConfig.usage;
import mekanism.api.Range4D;
import mekanism.api.gas.Gas;
import mekanism.api.gas.GasRegistry;
import mekanism.api.gas.GasStack;
import mekanism.api.gas.GasTank;
import mekanism.api.gas.GasTankInfo;
import mekanism.api.gas.GasTransmission;
import mekanism.api.gas.IGasHandler;
import mekanism.api.gas.IGasItem;
import mekanism.api.gas.IGasTankInfoProvider;
import mekanism.api.gas.ITubeConnection;
import mekanism.common.Mekanism;
import mekanism.common.Upgrade;
Expand All @@ -39,7 +43,7 @@
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;

public class TileEntityChemicalInfuser extends TileEntityNoisyElectricBlock implements IGasHandler, ITubeConnection, IRedstoneControl, ISustainedData, IUpgradeTile, IUpgradeInfoHandler, ITankManager, ISecurityTile
public class TileEntityChemicalInfuser extends TileEntityNoisyElectricBlock implements IGasHandler, IGasTankInfoProvider, ITubeConnection, IRedstoneControl, ISustainedData, IUpgradeTile, IUpgradeInfoHandler, ITankManager, ISecurityTile
{
public GasTank leftTank = new GasTank(MAX_GAS);
public GasTank rightTank = new GasTank(MAX_GAS);
Expand Down Expand Up @@ -449,6 +453,13 @@ public boolean canDrawGas(ForgeDirection side, Gas type)
return getTank(side) != null && getTank(side) == centerTank ? getTank(side).canDraw(type) : false;
}

@Override
@Nonnull
public GasTankInfo[] getTankInfo()
{
return new GasTankInfo[] {leftTank, rightTank, centerTank};
}

@Override
public boolean isItemValidForSlot(int slotID, ItemStack itemstack)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,19 @@

import java.util.ArrayList;

import javax.annotation.Nonnull;

import mekanism.api.Coord4D;
import mekanism.api.MekanismConfig.usage;
import mekanism.api.Range4D;
import mekanism.api.gas.GasRegistry;
import mekanism.api.gas.GasStack;
import mekanism.api.gas.GasTank;
import mekanism.api.gas.GasTankInfo;
import mekanism.api.gas.GasTransmission;
import mekanism.api.gas.IGasHandler;
import mekanism.api.gas.IGasItem;
import mekanism.api.gas.IGasTankInfoProvider;
import mekanism.api.gas.ITubeConnection;
import mekanism.common.Mekanism;
import mekanism.common.Upgrade;
Expand All @@ -36,7 +40,7 @@
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;

public class TileEntityChemicalOxidizer extends TileEntityNoisyElectricBlock implements ITubeConnection, IRedstoneControl, IUpgradeTile, ISustainedData, ITankManager, ISecurityTile
public class TileEntityChemicalOxidizer extends TileEntityNoisyElectricBlock implements ITubeConnection, IRedstoneControl, IUpgradeTile, ISustainedData, ITankManager, ISecurityTile, IGasTankInfoProvider
{
public GasTank gasTank = new GasTank(MAX_GAS);

Expand Down Expand Up @@ -408,6 +412,13 @@ public Object[] getTanks()
{
return new Object[] {gasTank};
}

@Override
@Nonnull
public GasTankInfo[] getTankInfo()
{
return new GasTankInfo[] {gasTank};
}

@Override
public TileComponentSecurity getSecurity()
Expand Down
Loading