diff --git a/CHANGELOG.md b/CHANGELOG.md index 52bd650b7..4412c1702 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ### 0.6.8 **Bugfixes** +- Performance improvements - Fix CTRL + pick block on machines crashing game ### 0.6.7 diff --git a/src/main/java/refinedstorage/storage/NBTStorage.java b/src/main/java/refinedstorage/storage/NBTStorage.java index 7889b72f7..ad376322b 100755 --- a/src/main/java/refinedstorage/storage/NBTStorage.java +++ b/src/main/java/refinedstorage/storage/NBTStorage.java @@ -1,13 +1,11 @@ package refinedstorage.storage; -import com.google.common.collect.ArrayListMultimap; -import com.google.common.collect.Multimap; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import java.util.Collection; +import java.util.ArrayList; import java.util.List; public abstract class NBTStorage implements IStorage { @@ -24,7 +22,7 @@ public abstract class NBTStorage implements IStorage { private boolean dirty; - private Multimap groups = ArrayListMultimap.create(); + private List groups = new ArrayList(); public NBTStorage(NBTTagCompound tag, int capacity) { this.tag = tag; @@ -46,14 +44,14 @@ public abstract class NBTStorage implements IStorage { tag.hasKey(NBT_ITEM_NBT) ? ((NBTTagCompound) tag.getTag(NBT_ITEM_NBT)) : null ); - groups.put(group.getType(), group); + groups.add(group); } } public void writeToNBT(NBTTagCompound tag) { NBTTagList list = new NBTTagList(); - for (ItemGroup group : groups.values()) { + for (ItemGroup group : groups) { NBTTagCompound itemTag = new NBTTagCompound(); itemTag.setInteger(NBT_ITEM_TYPE, Item.getIdFromItem(group.getType())); @@ -72,16 +70,14 @@ public abstract class NBTStorage implements IStorage { @Override public void addItems(List items) { - items.addAll(groups.values()); + items.addAll(groups); } @Override public void push(ItemStack stack) { tag.setInteger(NBT_STORED, getStored(tag) + stack.stackSize); - Collection candidates = groups.get(stack.getItem()); - - for (ItemGroup group : candidates) { + for (ItemGroup group : groups) { if (group.compareNoQuantity(stack)) { group.setQuantity(group.getQuantity() + stack.stackSize); @@ -91,7 +87,7 @@ public abstract class NBTStorage implements IStorage { } } - groups.put(stack.getItem(), new ItemGroup(stack)); + groups.add(new ItemGroup(stack)); markDirty(); } @@ -100,16 +96,14 @@ public abstract class NBTStorage implements IStorage { public ItemStack take(ItemStack stack, int flags) { int quantity = stack.stackSize; - Collection candidates = groups.get(stack.getItem()); - - for (ItemGroup group : candidates) { + for (ItemGroup group : groups) { if (group.compare(stack, flags)) { if (quantity > group.getQuantity()) { quantity = group.getQuantity(); } if (group.getQuantity() - quantity == 0) { - groups.remove(group.getType(), group); + groups.remove(group); } else { group.setQuantity(group.getQuantity() - quantity); } diff --git a/src/main/java/refinedstorage/tile/TileExternalStorage.java b/src/main/java/refinedstorage/tile/TileExternalStorage.java index 4b97e0641..99b2e289d 100755 --- a/src/main/java/refinedstorage/tile/TileExternalStorage.java +++ b/src/main/java/refinedstorage/tile/TileExternalStorage.java @@ -53,11 +53,7 @@ public class TileExternalStorage extends TileMachine implements IStorageProvider IDeepStorageUnit deep = (IDeepStorageUnit) connectedTile; if (deep.getStoredItemType() != null) { - ItemStack stack = deep.getStoredItemType().copy(); - - while (stack.stackSize > 0) { - items.add(new ItemGroup(stack.splitStack(Math.min(stack.getMaxStackSize(), stack.stackSize)))); - } + items.add(new ItemGroup(deep.getStoredItemType().copy())); } } else if (connectedTile instanceof IInventory) { IInventory inventory = (IInventory) connectedTile;