mirror of
https://github.com/GTNewHorizons/Applied-Energistics-2-Unofficial.git
synced 2026-10-25 20:22:23 +00:00
Copy terminal pins with memory cards (#1680)
Co-authored-by: UltraProdigy <187078471+UltraProdigy@users.noreply.github.com>
This commit is contained in:
1 parent
e31d7dae3f
commit
e69c59ccd7
2 files changed
+40
-1
No files matched your search
@@ -5,6 +5,9 @@ import java.util.Arrays;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.nbt.NBTTagList;
|
||||
import net.minecraftforge.common.util.Constants.NBT;
|
||||
|
||||
import appeng.api.config.PinsRows;
|
||||
import appeng.api.storage.data.IAEStack;
|
||||
@@ -15,7 +18,7 @@ import appeng.core.sync.packets.PacketPinsUpdate;
|
||||
public class PinsHandler {
|
||||
|
||||
private final PinsHolder holder;
|
||||
private final PinList pinsInv;
|
||||
private PinList pinsInv;
|
||||
private PinsRows craftingPinsRows;
|
||||
private PinsRows playerPinsRows;
|
||||
private final EntityPlayer player;
|
||||
@@ -125,6 +128,34 @@ public class PinsHandler {
|
||||
return playerPinsRows;
|
||||
}
|
||||
|
||||
public void writeToNBT(NBTTagCompound data) {
|
||||
final NBTTagCompound pinsData = new NBTTagCompound();
|
||||
holder.writeToNBT(pinsData, "pins");
|
||||
final NBTTagList pins = pinsData.getTagList("pins", NBT.TAG_COMPOUND);
|
||||
for (int i = 0; i < pins.tagCount(); i++) {
|
||||
final NBTTagCompound playerPins = pins.getCompoundTagAt(i);
|
||||
if (player.getPersistentID().toString().equals(playerPins.getString("playerId"))) {
|
||||
data.setTag("pins", playerPins);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void readFromNBT(NBTTagCompound data) {
|
||||
final NBTTagCompound playerPins = (NBTTagCompound) data.getCompoundTag("pins").copy();
|
||||
playerPins.setString("playerId", player.getPersistentID().toString());
|
||||
final NBTTagList pins = new NBTTagList();
|
||||
pins.appendTag(playerPins);
|
||||
final NBTTagCompound pinsData = new NBTTagCompound();
|
||||
pinsData.setTag("pins", pins);
|
||||
holder.readFromNBT(pinsData, "pins");
|
||||
pinsInv = holder.getPinsInv(player);
|
||||
craftingPinsRows = holder.getCraftingPinsRows(player);
|
||||
playerPinsRows = holder.getPlayerPinsRows(player);
|
||||
needUpdate = true;
|
||||
holder.markDirty();
|
||||
}
|
||||
|
||||
/** Returns the full pins array (TOTAL_SLOTS) for the client. */
|
||||
public IAEStack<?>[] getEnabledPins() {
|
||||
if (needUpdate) update();
|
||||
|
||||
@@ -53,6 +53,7 @@ import appeng.api.parts.IPartHost;
|
||||
import appeng.api.parts.IPartRenderHelper;
|
||||
import appeng.api.parts.ISimplifiedBundle;
|
||||
import appeng.api.parts.PartItemStack;
|
||||
import appeng.api.storage.ITerminalPins;
|
||||
import appeng.api.storage.ITerminalTypeFilterProvider;
|
||||
import appeng.api.storage.StorageName;
|
||||
import appeng.api.util.AECableType;
|
||||
@@ -446,6 +447,9 @@ public abstract class AEBasePart implements IPart, IGridProxyable, IActionHost,
|
||||
filters.getFiltersMap().putAll(provider.getTypeFilter(player));
|
||||
filters.writeToNBT(data);
|
||||
}
|
||||
if (this instanceof ITerminalPins terminal) {
|
||||
terminal.getPinsHandler(player).writeToNBT(data);
|
||||
}
|
||||
memoryCard.setMemoryCardContents(memCardIS, name, data);
|
||||
|
||||
if (this.getInventoryByName("upgrades") instanceof UpgradeInventory ui)
|
||||
@@ -476,6 +480,10 @@ public abstract class AEBasePart implements IPart, IGridProxyable, IActionHost,
|
||||
provider.getTypeFilter(player).putAll(filters.getFiltersMap());
|
||||
provider.saveTypeFilter();
|
||||
}
|
||||
if (this instanceof ITerminalPins terminal && data.hasKey("pins", NBT.TAG_COMPOUND)) {
|
||||
terminal.getPinsHandler(player).readFromNBT(data);
|
||||
this.getHost().markForSave();
|
||||
}
|
||||
|
||||
// After insertUpgrades for the same reason as above
|
||||
if (this instanceof IInterfaceHost iHost) {
|
||||
|
||||
Reference in new issue
Block a user