diff --git a/src/main/java/com/glodblock/github/common/storage/FluidCellInventory.java b/src/main/java/com/glodblock/github/common/storage/FluidCellInventory.java index 79c538ca..bcc81542 100644 --- a/src/main/java/com/glodblock/github/common/storage/FluidCellInventory.java +++ b/src/main/java/com/glodblock/github/common/storage/FluidCellInventory.java @@ -29,18 +29,18 @@ import com.glodblock.github.common.item.ItemCreativeFluidStorageCell; public class FluidCellInventory implements IFluidCellInventory { - private static final String FLUID_TYPE_TAG = "ft"; - private static final String FLUID_COUNT_TAG = "fc"; - private static final String FLUID_SLOT = "#"; - private static final String FLUID_SLOT_COUNT = "@"; + protected static final String FLUID_TYPE_TAG = "ft"; + protected static final String FLUID_COUNT_TAG = "fc"; + protected static final String FLUID_SLOT = "#"; + protected static final String FLUID_SLOT_COUNT = "@"; protected IStorageFluidCell cellType; protected static String[] fluidSlots; protected static String[] fluidSlotCount; protected final ItemStack cellItem; private final ISaveProvider container; private final int MAX_TYPE = 63; - private long storedFluidCount; - private short storedFluids; + protected long storedFluidCount; + protected short storedFluids; protected IItemList cellFluids; protected final NBTTagCompound tagCompound; public static final int singleByteAmount = 256 * 8; diff --git a/src/main/java/com/glodblock/github/crossmod/extracells/ProxyItem.java b/src/main/java/com/glodblock/github/crossmod/extracells/ProxyItem.java index 815cc4b7..19c53631 100644 --- a/src/main/java/com/glodblock/github/crossmod/extracells/ProxyItem.java +++ b/src/main/java/com/glodblock/github/crossmod/extracells/ProxyItem.java @@ -69,8 +69,8 @@ public class ProxyItem extends FCBaseItem { player.inventory.setInventorySlotContents(i, null); } else { ItemStack replaceStack = new ItemStack(r.replacement, stack.stackSize, r.replacementMeta); - if (replaceStack.hasTagCompound()) { - replaceStack.setTagCompound(r.replaceNBT(replaceStack.getTagCompound())); + if (stack.hasTagCompound()) { + replaceStack.setTagCompound(r.replaceNBT(stack.getTagCompound())); } player.inventory.setInventorySlotContents(i, replaceStack); } @@ -129,7 +129,9 @@ public class ProxyItem extends FCBaseItem { @Override NBTTagCompound replaceNBT(NBTTagCompound compound) { - System.out.println(compound); + if (compound != null && compound.hasKey("ecc")) { + compound.removeTag("ecc"); + } return compound; } } diff --git a/src/main/java/com/glodblock/github/crossmod/extracells/storage/ProxyFluidCellInventory.java b/src/main/java/com/glodblock/github/crossmod/extracells/storage/ProxyFluidCellInventory.java index 5df4a0cc..c95be55a 100644 --- a/src/main/java/com/glodblock/github/crossmod/extracells/storage/ProxyFluidCellInventory.java +++ b/src/main/java/com/glodblock/github/crossmod/extracells/storage/ProxyFluidCellInventory.java @@ -1,24 +1,18 @@ package com.glodblock.github.crossmod.extracells.storage; import appeng.api.AEApi; -import appeng.api.config.Actionable; import appeng.api.exceptions.AppEngException; -import appeng.api.networking.security.BaseActionSource; import appeng.api.storage.ISaveProvider; -import appeng.api.storage.StorageChannel; import appeng.api.storage.data.IAEFluidStack; -import appeng.api.storage.data.IItemList; import appeng.util.item.AEFluidStack; import com.glodblock.github.common.storage.FluidCellInventory; -import com.glodblock.github.common.storage.IFluidCellInventory; -import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTBase; +import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.fluids.FluidStack; -import java.util.List; - public class ProxyFluidCellInventory extends FluidCellInventory { - private static final String EC_CONVERTED = "ec_converted"; + private static final String EC_CONVERTED = "ecc"; public ProxyFluidCellInventory(ItemStack o, ISaveProvider container) throws AppEngException { super(o, container); } @@ -35,6 +29,7 @@ public class ProxyFluidCellInventory extends FluidCellInventory { // Load using Extra Cell's NBT format for (int i = 0; i < this.cellType.getTotalTypes(this.cellItem); i++) { FluidStack fs = FluidStack.loadFluidStackFromNBT(tagCompound.getCompoundTag("Fluid#" + i)); + tagCompound.removeTag("Fluid#" + i); final AEFluidStack aet = AEFluidStack.create(fs); if (aet != null) { if (aet.getStackSize() > 0) { @@ -43,6 +38,33 @@ public class ProxyFluidCellInventory extends FluidCellInventory { } } this.tagCompound.setBoolean(EC_CONVERTED, true); + // Convert to the new format + long fluidCount = 0; + int x = 0; + + for (final IAEFluidStack v : this.cellFluids) { + fluidCount += v.getStackSize(); + final NBTBase c = this.tagCompound.getTag(fluidSlots[x]); + if (c instanceof NBTTagCompound) { + v.writeToNBT((NBTTagCompound) c); + } else { + final NBTTagCompound g = new NBTTagCompound(); + v.writeToNBT(g); + this.tagCompound.setTag(fluidSlots[x], g); + } + this.tagCompound.setLong(fluidSlotCount[x], v.getStackSize()); + x++; + } + this.storedFluids = (short) this.cellFluids.size(); + + if (!this.cellFluids.isEmpty()) { + this.tagCompound.setShort(FLUID_TYPE_TAG, this.storedFluids); + } + + this.storedFluidCount = fluidCount; + if (fluidCount > 0) { + this.tagCompound.setLong(FLUID_COUNT_TAG, fluidCount); + } } else { super.loadCellFluids(); }