From 32e22acd7aab435972493cd895b1b24bfe5e1866 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Fri, 8 Sep 2017 12:51:08 +0200 Subject: [PATCH] Fixed not sanitizing stack when handling knowledge, fixes #1450 --- .../StorageItemTransmutationTable.java | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/integration/projecte/StorageItemTransmutationTable.java b/src/main/java/com/raoulvdberge/refinedstorage/integration/projecte/StorageItemTransmutationTable.java index cd6a282bb..2d12e6fa4 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/integration/projecte/StorageItemTransmutationTable.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/integration/projecte/StorageItemTransmutationTable.java @@ -68,9 +68,7 @@ public class StorageItemTransmutationTable extends StorageItemExternal { if (!simulate) { provider.setEmc(provider.getEmc() + emc); - if (!provider.hasKnowledge(stack)) { - provider.addKnowledge(stack); - } + handleKnowledge(provider, stack.copy()); EntityPlayer player = externalStorage.getWorld().getPlayerEntityByUUID(externalStorage.getOwner()); @@ -86,6 +84,23 @@ public class StorageItemTransmutationTable extends StorageItemExternal { return actualStack; } + // @todo: https://github.com/sinkillerj/ProjectE/issues/1592 + private void handleKnowledge(IKnowledgeProvider provider, ItemStack stack) { + if (stack.getCount() > 1) { + stack.setCount(1); + } + + if (!stack.getHasSubtypes() && stack.getMaxDamage() != 0) { + stack.setItemDamage(0); + } + + if (!provider.hasKnowledge(stack)) { + stack.setTagCompound(null); + + provider.addKnowledge(stack); + } + } + @Nullable @Override public ItemStack extract(@Nonnull ItemStack stack, int size, int flags, boolean simulate) {