fix memory card not saving fluids an level emitters

This commit is contained in:
Salomão
2021-01-12 18:04:10 -03:00
parent e6998913e1
commit 82e3a95f11
10 changed files with 134 additions and 7 deletions
@@ -28,6 +28,7 @@ import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.capability.CapabilityFluidHandler; import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
import net.minecraftforge.fluids.capability.IFluidHandler;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
import appeng.api.AEApi; import appeng.api.AEApi;
@@ -72,7 +73,7 @@ import appeng.util.IConfigManagerHost;
import appeng.util.Platform; import appeng.util.Platform;
public class DualityFluidInterface implements IGridTickable, IStorageMonitorable, IAEFluidInventory, IUpgradeableHost, IConfigManagerHost public class DualityFluidInterface implements IGridTickable, IStorageMonitorable, IAEFluidInventory, IUpgradeableHost, IConfigManagerHost, IConfigurableFluidInventory
{ {
public static final int NUMBER_OF_TANKS = 6; public static final int NUMBER_OF_TANKS = 6;
public static final int TANK_CAPACITY = Fluid.BUCKET_VOLUME * 4; public static final int TANK_CAPACITY = Fluid.BUCKET_VOLUME * 4;
@@ -603,6 +604,14 @@ public class DualityFluidInterface implements IGridTickable, IStorageMonitorable
return null; return null;
} }
@Override
public IFluidHandler getFluidInventoryByName( final String name) {
if (name.equals("config")) {
return this.config;
}
return null;
}
@Override @Override
public int getInstalledUpgrades( Upgrades u ) public int getInstalledUpgrades( Upgrades u )
{ {
@@ -0,0 +1,11 @@
package appeng.fluids.helper;
import net.minecraftforge.fluids.capability.IFluidHandler;
public interface IConfigurableFluidInventory
{
default IFluidHandler getFluidInventoryByName( String name )
{
return null;
}
}
@@ -6,6 +6,7 @@ import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import appeng.fluids.helper.IConfigurableFluidInventory;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.BlockLiquid; import net.minecraft.block.BlockLiquid;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
@@ -51,9 +52,10 @@ import appeng.parts.automation.PartAbstractFormationPlane;
import appeng.parts.automation.PlaneModels; import appeng.parts.automation.PlaneModels;
import appeng.util.Platform; import appeng.util.Platform;
import appeng.util.prioritylist.PrecisePriorityList; import appeng.util.prioritylist.PrecisePriorityList;
import net.minecraftforge.fluids.capability.IFluidHandler;
public class PartFluidFormationPlane extends PartAbstractFormationPlane<IAEFluidStack> implements IAEFluidInventory public class PartFluidFormationPlane extends PartAbstractFormationPlane<IAEFluidStack> implements IAEFluidInventory, IConfigurableFluidInventory
{ {
private static final PlaneModels MODELS = new PlaneModels( "part/fluid_formation_plane_", "part/fluid_formation_plane_on_" ); private static final PlaneModels MODELS = new PlaneModels( "part/fluid_formation_plane_", "part/fluid_formation_plane_on_" );
@@ -222,6 +224,14 @@ public class PartFluidFormationPlane extends PartAbstractFormationPlane<IAEFluid
return this.config; return this.config;
} }
@Override
public IFluidHandler getFluidInventoryByName( final String name) {
if (name.equals("config")) {
return this.config;
}
return null;
}
@Override @Override
public ItemStack getItemStackRepresentation() public ItemStack getItemStackRepresentation()
{ {
@@ -21,6 +21,7 @@ package appeng.fluids.parts;
import java.util.EnumSet; import java.util.EnumSet;
import appeng.fluids.helper.IConfigurableFluidInventory;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
@@ -30,6 +31,7 @@ import net.minecraft.util.EnumHand;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.fluids.capability.IFluidHandler;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
import appeng.api.AEApi; import appeng.api.AEApi;
@@ -61,7 +63,7 @@ import appeng.parts.PartModel;
import appeng.util.Platform; import appeng.util.Platform;
public class PartFluidInterface extends PartBasicState implements IGridTickable, IStorageMonitorable, IFluidInterfaceHost, IPriorityHost public class PartFluidInterface extends PartBasicState implements IGridTickable, IStorageMonitorable, IFluidInterfaceHost, IPriorityHost, IConfigurableFluidInventory
{ {
public static final ResourceLocation MODEL_BASE = new ResourceLocation( AppEng.MOD_ID, "part/fluid_interface_base" ); public static final ResourceLocation MODEL_BASE = new ResourceLocation( AppEng.MOD_ID, "part/fluid_interface_base" );
@@ -233,6 +235,11 @@ public class PartFluidInterface extends PartBasicState implements IGridTickable,
return this.duality.getInventoryByName( name ); return this.duality.getInventoryByName( name );
} }
@Override
public IFluidHandler getFluidInventoryByName( final String name) {
return this.duality.getFluidInventoryByName(name);
}
@Override @Override
public ItemStack getItemStackRepresentation() public ItemStack getItemStackRepresentation()
{ {
@@ -4,6 +4,7 @@ package appeng.fluids.parts;
import java.util.Random; import java.util.Random;
import appeng.fluids.helper.IConfigurableFluidInventory;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
@@ -48,9 +49,10 @@ import appeng.parts.PartModel;
import appeng.parts.automation.PartUpgradeable; import appeng.parts.automation.PartUpgradeable;
import appeng.util.IConfigManagerHost; import appeng.util.IConfigManagerHost;
import appeng.util.Platform; import appeng.util.Platform;
import net.minecraftforge.fluids.capability.IFluidHandler;
public class PartFluidLevelEmitter extends PartUpgradeable implements IStackWatcherHost, IConfigManagerHost, IAEFluidInventory, IMEMonitorHandlerReceiver<IAEFluidStack> public class PartFluidLevelEmitter extends PartUpgradeable implements IStackWatcherHost, IConfigManagerHost, IAEFluidInventory, IMEMonitorHandlerReceiver<IAEFluidStack>, IConfigurableFluidInventory
{ {
@PartModels @PartModels
public static final ResourceLocation MODEL_BASE_OFF = new ResourceLocation( AppEng.MOD_ID, "part/level_emitter_base_off" ); public static final ResourceLocation MODEL_BASE_OFF = new ResourceLocation( AppEng.MOD_ID, "part/level_emitter_base_off" );
@@ -353,6 +355,14 @@ public class PartFluidLevelEmitter extends PartUpgradeable implements IStackWatc
return this.config; return this.config;
} }
@Override
public IFluidHandler getFluidInventoryByName( final String name) {
if (name.equals("config")) {
return this.config;
}
return null;
}
@Override @Override
public void readFromNBT( final NBTTagCompound data ) public void readFromNBT( final NBTTagCompound data )
{ {
@@ -25,6 +25,7 @@ import java.util.Objects;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import appeng.fluids.helper.IConfigurableFluidInventory;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
@@ -87,7 +88,7 @@ import appeng.util.prioritylist.PrecisePriorityList;
* @version rv6 - 22/05/2018 * @version rv6 - 22/05/2018
* @since rv6 22/05/2018 * @since rv6 22/05/2018
*/ */
public class PartFluidStorageBus extends PartSharedStorageBus implements IMEMonitorHandlerReceiver<IAEFluidStack>, IAEFluidInventory public class PartFluidStorageBus extends PartSharedStorageBus implements IMEMonitorHandlerReceiver<IAEFluidStack>, IAEFluidInventory, IConfigurableFluidInventory
{ {
public static final ResourceLocation MODEL_BASE = new ResourceLocation( AppEng.MOD_ID, "part/fluid_storage_bus_base" ); public static final ResourceLocation MODEL_BASE = new ResourceLocation( AppEng.MOD_ID, "part/fluid_storage_bus_base" );
@PartModels @PartModels
@@ -469,6 +470,14 @@ public class PartFluidStorageBus extends PartSharedStorageBus implements IMEMoni
return this.config; return this.config;
} }
@Override
public IFluidHandler getFluidInventoryByName(final String name) {
if (name.equals("config")) {
return this.config;
}
return null;
}
@Nonnull @Nonnull
@Override @Override
public IPartModel getStaticModels() public IPartModel getStaticModels()
@@ -19,6 +19,7 @@
package appeng.fluids.parts; package appeng.fluids.parts;
import appeng.fluids.helper.IConfigurableFluidInventory;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
@@ -44,6 +45,7 @@ import appeng.fluids.util.IAEFluidTank;
import appeng.me.GridAccessException; import appeng.me.GridAccessException;
import appeng.parts.automation.PartUpgradeable; import appeng.parts.automation.PartUpgradeable;
import appeng.util.Platform; import appeng.util.Platform;
import net.minecraftforge.fluids.capability.IFluidHandler;
/** /**
@@ -51,7 +53,7 @@ import appeng.util.Platform;
* @version rv6 - 30/04/2018 * @version rv6 - 30/04/2018
* @since rv6 30/04/2018 * @since rv6 30/04/2018
*/ */
public abstract class PartSharedFluidBus extends PartUpgradeable implements IGridTickable public abstract class PartSharedFluidBus extends PartUpgradeable implements IGridTickable, IConfigurableFluidInventory
{ {
private final AEFluidInventory config = new AEFluidInventory( null, 9 ); private final AEFluidInventory config = new AEFluidInventory( null, 9 );
@@ -176,6 +178,14 @@ public abstract class PartSharedFluidBus extends PartUpgradeable implements IGri
return this.config; return this.config;
} }
@Override
public IFluidHandler getFluidInventoryByName( final String name) {
if (name.equals("config")) {
return this.config;
}
return null;
}
protected IFluidStorageChannel getChannel() protected IFluidStorageChannel getChannel()
{ {
return AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ); return AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class );
@@ -23,11 +23,13 @@ import java.util.EnumSet;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import appeng.fluids.helper.IConfigurableFluidInventory;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.fluids.capability.IFluidHandler;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
import appeng.api.AEApi; import appeng.api.AEApi;
@@ -50,7 +52,7 @@ import appeng.helpers.IPriorityHost;
import appeng.tile.grid.AENetworkTile; import appeng.tile.grid.AENetworkTile;
public class TileFluidInterface extends AENetworkTile implements IGridTickable, IFluidInterfaceHost, IPriorityHost public class TileFluidInterface extends AENetworkTile implements IGridTickable, IFluidInterfaceHost, IPriorityHost, IConfigurableFluidInventory
{ {
private final DualityFluidInterface duality = new DualityFluidInterface( this.getProxy(), this ); private final DualityFluidInterface duality = new DualityFluidInterface( this.getProxy(), this );
@@ -176,6 +178,11 @@ public class TileFluidInterface extends AENetworkTile implements IGridTickable,
return this.duality.getInventoryByName( name ); return this.duality.getInventoryByName( name );
} }
@Override
public IFluidHandler getFluidInventoryByName(final String name) {
return this.duality.getFluidInventoryByName(name);
}
@Override @Override
public ItemStack getItemStackRepresentation() public ItemStack getItemStackRepresentation()
{ {
@@ -26,6 +26,10 @@ import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.Random; import java.util.Random;
import appeng.fluids.helper.IConfigurableFluidInventory;
import appeng.fluids.parts.PartFluidLevelEmitter;
import appeng.fluids.util.AEFluidInventory;
import appeng.parts.automation.PartLevelEmitter;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
@@ -43,6 +47,7 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fluids.capability.IFluidHandler;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
@@ -383,6 +388,26 @@ public abstract class AEBasePart implements IPart, IGridProxyable, IActionHost,
{ {
target.setStackInSlot( x, tmp.getStackInSlot( x ) ); target.setStackInSlot( x, tmp.getStackInSlot( x ) );
} }
if (this instanceof PartLevelEmitter ) {
final PartLevelEmitter partLevelEmitter = (PartLevelEmitter) this;
partLevelEmitter.setReportingValue(compound.getLong("reportingValue"));
}
}
if (this instanceof IConfigurableFluidInventory) {
final IFluidHandler tank = ((IConfigurableFluidInventory) this).getFluidInventoryByName("config");
if (tank instanceof AEFluidInventory ) {
final AEFluidInventory target = (AEFluidInventory) tank;
final AEFluidInventory tmp = new AEFluidInventory(null, target.getSlots());
tmp.readFromNBT(compound, "config");
for (int x = 0; x < tmp.getSlots(); x++) {
target.setFluidInSlot(x, tmp.getFluidInSlot(x));
}
}
if (this instanceof PartFluidLevelEmitter ) {
final PartFluidLevelEmitter partFluidLevelEmitter = (PartFluidLevelEmitter) this;
partFluidLevelEmitter.setReportingValue(compound.getLong("reportingValue"));
}
} }
} }
@@ -415,6 +440,13 @@ public abstract class AEBasePart implements IPart, IGridProxyable, IActionHost,
( (AppEngInternalAEInventory) inv ).writeToNBT( output, "config" ); ( (AppEngInternalAEInventory) inv ).writeToNBT( output, "config" );
} }
if (this instanceof IConfigurableFluidInventory) {
final IFluidHandler tank = ((IConfigurableFluidInventory) this).getFluidInventoryByName("config");
if (tank instanceof AEFluidInventory ) {
((AEFluidInventory) tank).writeToNBT(output, "config");
}
}
return output.hasNoTags() ? null : output; return output.hasNoTags() ? null : output;
} }
+22
View File
@@ -28,6 +28,8 @@ import java.util.Map;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import appeng.fluids.helper.IConfigurableFluidInventory;
import appeng.fluids.util.AEFluidInventory;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled; import io.netty.buffer.Unpooled;
@@ -41,6 +43,7 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fluids.capability.IFluidHandler;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
import appeng.api.implementations.tiles.ISegmentedInventory; import appeng.api.implementations.tiles.ISegmentedInventory;
@@ -398,6 +401,18 @@ public class AEBaseTile extends TileEntity implements IOrientable, ICommonTile,
} }
} }
} }
if (this instanceof IConfigurableFluidInventory ) {
final IFluidHandler tank = ((IConfigurableFluidInventory) this).getFluidInventoryByName("config");
if (tank instanceof AEFluidInventory) {
final AEFluidInventory target = (AEFluidInventory) tank;
final AEFluidInventory tmp = new AEFluidInventory(null, target.getSlots());
tmp.readFromNBT(compound, "config");
for (int x = 0; x < tmp.getSlots(); x++) {
target.setFluidInSlot(x, tmp.getFluidInSlot(x));
}
}
}
} }
/** /**
@@ -462,6 +477,13 @@ public class AEBaseTile extends TileEntity implements IOrientable, ICommonTile,
} }
} }
if (this instanceof IConfigurableFluidInventory) {
final IFluidHandler tank = ((IConfigurableFluidInventory) this).getFluidInventoryByName("config");
if (tank instanceof AEFluidInventory ) {
((AEFluidInventory) tank).writeToNBT(output, "config");
}
}
return output.hasNoTags() ? null : output; return output.hasNoTags() ? null : output;
} }