mirror of
https://github.com/GTNewHorizons/AE2FluidCraft-Rework.git
synced 2026-10-25 20:22:20 +00:00
Allow to copy Fluid Interface fluid config to Memory Card (#443)
This commit is contained in:
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;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user