Allow to copy Fluid Interface fluid config to Memory Card (#443)

This commit is contained in:
Kogepan229 authored and GitHub committed 2026-06-10 06:44:42 +00:00
1 parent 1aba13e96f
commit 208e4d66d9
5 files changed
+97

No files matched your search

@@ -24,6 +24,7 @@ import com.glodblock.github.inventory.AEFluidInventory;
import com.glodblock.github.inventory.IAEFluidTank;
import com.glodblock.github.inventory.IDualHost;
import com.glodblock.github.loader.ItemAndBlockHolder;
import com.glodblock.github.util.DualHostSettings;
import com.glodblock.github.util.DualityFluidInterface;
import com.glodblock.github.util.Util;
@@ -41,6 +42,7 @@ import appeng.helpers.ICustomButtonDataObject;
import appeng.helpers.ICustomButtonProvider;
import appeng.parts.misc.PartInterface;
import appeng.tile.inventory.AppEngInternalAEInventory;
import appeng.util.SettingsFrom;
import cpw.mods.fml.common.network.ByteBufUtils;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@@ -156,6 +158,20 @@ public class PartFluidInterface extends PartInterface implements IDualHost, ICus
getInternalFluid().writeToNBT(data, "FluidInv");
}
@Override
public void uploadSettings(@NotNull SettingsFrom from, @NotNull NBTTagCompound compound) {
super.uploadSettings(from, compound);
DualHostSettings.uploadSettings(this, compound);
}
@Override
@NotNull
public NBTTagCompound downloadSettings(SettingsFrom from) {
NBTTagCompound output = super.downloadSettings(from);
DualHostSettings.downloadSettings(this, output);
return output;
}
@Override
public int getInstalledUpgrades(final Upgrades u) {
return getInterfaceDuality().getInstalledUpgrades(u);
@@ -25,6 +25,7 @@ import com.glodblock.github.inventory.AEFluidInventory;
import com.glodblock.github.inventory.IAEFluidTank;
import com.glodblock.github.inventory.IDualHost;
import com.glodblock.github.loader.ItemAndBlockHolder;
import com.glodblock.github.util.DualHostSettings;
import com.glodblock.github.util.DualityFluidInterface;
import com.glodblock.github.util.Util;
@@ -43,6 +44,7 @@ import appeng.parts.p2p.PartP2PInterface;
import appeng.parts.p2p.PartP2PTunnel;
import appeng.tile.inventory.AppEngInternalAEInventory;
import appeng.util.Platform;
import appeng.util.SettingsFrom;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@@ -71,6 +73,13 @@ public class PartFluidP2PInterface extends PartP2PInterface implements IDualHost
return ItemAndBlockHolder.INTERFACE.getBlockTextureFromSide(0);
}
@Override
public NBTTagCompound getMemoryCardData() {
NBTTagCompound output = super.getMemoryCardData();
DualHostSettings.downloadSettings(this, output);
return output;
}
@Override
public PartP2PTunnel<?> applyMemoryCard(EntityPlayer player, IMemoryCard memoryCard, ItemStack is) {
PartP2PTunnel<?> newTunnel = super.applyMemoryCard(player, memoryCard, is);
@@ -78,6 +87,7 @@ public class PartFluidP2PInterface extends PartP2PInterface implements IDualHost
NBTTagCompound data = memoryCard.getData(is);
if (newTunnel instanceof PartFluidP2PInterface p2PInterface) {
p2PInterface.duality.getConfigManager().readFromNBT(data);
DualHostSettings.uploadSettings(p2PInterface, data);
}
return newTunnel;
}
@@ -90,9 +100,24 @@ public class PartFluidP2PInterface extends PartP2PInterface implements IDualHost
IConfigManager config = fromInterface.duality.getConfigManager();
config.getSettings()
.forEach(setting -> newDuality.getConfigManager().putSetting(setting, config.getSetting(setting)));
DualHostSettings.copySettings(this, fromInterface);
}
}
@Override
public void uploadSettings(@NotNull SettingsFrom from, @NotNull NBTTagCompound compound) {
super.uploadSettings(from, compound);
DualHostSettings.uploadSettings(this, compound);
}
@Override
@NotNull
public NBTTagCompound downloadSettings(SettingsFrom from) {
NBTTagCompound output = super.downloadSettings(from);
DualHostSettings.downloadSettings(this, output);
return output;
}
@Override
public TickingRequest getTickingRequest(IGridNode node) {
TickingRequest item = duality.getTickingRequest(node);
@@ -25,6 +25,7 @@ import com.glodblock.github.inventory.AEFluidInventory;
import com.glodblock.github.inventory.IAEFluidTank;
import com.glodblock.github.inventory.IDualHost;
import com.glodblock.github.loader.ItemAndBlockHolder;
import com.glodblock.github.util.DualHostSettings;
import com.glodblock.github.util.DualityFluidInterface;
import com.glodblock.github.util.Util;
@@ -47,6 +48,7 @@ import appeng.tile.TileEvent;
import appeng.tile.events.TileEventType;
import appeng.tile.inventory.AppEngInternalAEInventory;
import appeng.tile.misc.TileInterface;
import appeng.util.SettingsFrom;
import cpw.mods.fml.common.network.ByteBufUtils;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@@ -187,6 +189,20 @@ public class TileFluidInterface extends TileInterface implements IDualHost, ICus
return data;
}
@Override
public void uploadSettings(SettingsFrom from, NBTTagCompound compound) {
super.uploadSettings(from, compound);
DualHostSettings.uploadSettings(this, compound);
}
@Override
public NBTTagCompound downloadSettings(SettingsFrom from) {
NBTTagCompound output = super.downloadSettings(from);
output = output == null ? new NBTTagCompound() : output;
DualHostSettings.downloadSettings(this, output);
return output;
}
@Nullable
protected ItemStack getItemFromTile(final Object obj) {
if (obj instanceof TileFluidInterface) {
@@ -0,0 +1,30 @@
package com.glodblock.github.util;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.util.Constants.NBT;
import com.glodblock.github.inventory.IDualHost;
public final class DualHostSettings {
private static final String FLUID_CONFIG_KEY = "fluidConfig";
private DualHostSettings() {}
public static void uploadSettings(IDualHost host, NBTTagCompound compound) {
if (compound.hasKey(FLUID_CONFIG_KEY, NBT.TAG_COMPOUND)) {
host.getDualityFluid().readConfigFromNBT(compound, FLUID_CONFIG_KEY);
host.getConfig();
}
}
public static void downloadSettings(IDualHost host, NBTTagCompound output) {
host.getDualityFluid().writeConfigToNBT(output, FLUID_CONFIG_KEY);
}
public static void copySettings(IDualHost target, IDualHost source) {
NBTTagCompound data = new NBTTagCompound();
downloadSettings(source, data);
uploadSettings(target, data);
}
}
@@ -147,6 +147,16 @@ public class DualityFluidInterface implements IGridTickable, IStorageMonitorable
this.readConfig();
}
public void writeConfigToNBT(NBTTagCompound data, String name) {
this.config.writeToNBT(data, name);
}
public void readConfigFromNBT(NBTTagCompound data, String name) {
this.config.readFromNBT(data, name);
this.readConfig();
this.saveChanges();
}
public AEFluidInventory getConfig() {
return this.config;
}