Fixed not sanitizing stack when handling knowledge, fixes #1450

This commit is contained in:
raoulvdberge
2017-09-08 12:51:08 +02:00
parent 400d98043e
commit 32e22acd7a

View File

@@ -68,9 +68,7 @@ public class StorageItemTransmutationTable extends StorageItemExternal {
if (!simulate) { if (!simulate) {
provider.setEmc(provider.getEmc() + emc); provider.setEmc(provider.getEmc() + emc);
if (!provider.hasKnowledge(stack)) { handleKnowledge(provider, stack.copy());
provider.addKnowledge(stack);
}
EntityPlayer player = externalStorage.getWorld().getPlayerEntityByUUID(externalStorage.getOwner()); EntityPlayer player = externalStorage.getWorld().getPlayerEntityByUUID(externalStorage.getOwner());
@@ -86,6 +84,23 @@ public class StorageItemTransmutationTable extends StorageItemExternal {
return actualStack; 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 @Nullable
@Override @Override
public ItemStack extract(@Nonnull ItemStack stack, int size, int flags, boolean simulate) { public ItemStack extract(@Nonnull ItemStack stack, int size, int flags, boolean simulate) {