diff --git a/CHANGELOG.md b/CHANGELOG.md index 51dd2169c..9ea114001 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - Fixed device names overflowing Controller GUI (raoulvdberge) - Fixed high CPU load when Refined Storage GUIs are open (raoulvdberge) - Fixed not being able to extract Mekanism tanks and bins from the Grid (raoulvdberge) +- Fixed not being able to craft Immersive Engineering Revolver (raoulvdberge) ### 1.5.18 - Added Project E integration for the External Storage on the Transmutation Table (raoulvdberge) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/network/grid/handler/IItemGridHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/api/network/grid/handler/IItemGridHandler.java index e0fce94d8..0719fac39 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/network/grid/handler/IItemGridHandler.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/network/grid/handler/IItemGridHandler.java @@ -53,6 +53,7 @@ public interface IItemGridHandler { /** * Called when a player requests the crafting preview window to be opened. * + * @param player the player * @param hash the item stack hash * @param quantity the amount of that item that we need a preview for * @param noPreview true if the crafting preview window shouldn't be shown, false otherwise @@ -63,10 +64,10 @@ public interface IItemGridHandler { * Called when a player requested crafting for an item. * * @param player the player that is requesting the crafting - * @param stack the {@link ItemStack} to request a craft for + * @param hash the hash of the item to request a craft for * @param quantity the amount of the item that has to be crafted */ - void onCraftingRequested(EntityPlayerMP player, ItemStack stack, int quantity); + void onCraftingRequested(EntityPlayerMP player, int hash, int quantity); /** * Called when a player wants to cancel a crafting task. diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/handler/ItemGridHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/handler/ItemGridHandler.java index db14eba9e..8964549a4 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/handler/ItemGridHandler.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/handler/ItemGridHandler.java @@ -183,20 +183,36 @@ public class ItemGridHandler implements IItemGridHandler { RS.INSTANCE.network.sendTo(new MessageGridCraftingStartResponse(), player); } else { - RS.INSTANCE.network.sendTo(new MessageGridCraftingPreviewResponse(task.getPreviewStacks(), stack, quantity), player); + RS.INSTANCE.network.sendTo(new MessageGridCraftingPreviewResponse(task.getPreviewStacks(), hash, quantity), player); } - }, "RS crafting calculation"); + }, "RS crafting preview calculation"); calculationThread.start(); } } @Override - public void onCraftingRequested(EntityPlayerMP player, ItemStack stack, int quantity) { + public void onCraftingRequested(EntityPlayerMP player, int hash, int quantity) { if (quantity <= 0 || !network.getSecurityManager().hasPermission(Permission.AUTOCRAFTING, player)) { return; } + ItemStack stack = null; + + for (ICraftingPattern pattern : network.getCraftingManager().getPatterns()) { + for (ItemStack output : pattern.getOutputs()) { + if (output != null && API.instance().getItemStackHashCode(output) == hash) { + stack = output; + + break; + } + } + + if (stack != null) { + break; + } + } + if (stack != null) { ICraftingTask task = new CraftingTask(network, stack, network.getCraftingManager().getPatternChain(stack), quantity, false); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/handler/ItemGridHandlerPortable.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/handler/ItemGridHandlerPortable.java index cba608f6b..95635cf8d 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/handler/ItemGridHandlerPortable.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/handler/ItemGridHandlerPortable.java @@ -149,7 +149,7 @@ public class ItemGridHandlerPortable implements IItemGridHandler { } @Override - public void onCraftingRequested(EntityPlayerMP player, ItemStack stack, int quantity) { + public void onCraftingRequested(EntityPlayerMP player, int hash, int quantity) { // NO OP } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiCraftingPreview.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiCraftingPreview.java index 129ce6e6f..227934c73 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiCraftingPreview.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiCraftingPreview.java @@ -44,7 +44,7 @@ public class GuiCraftingPreview extends GuiBase { private List stacks; private GuiScreen parent; - private ItemStack stack; + private int hash; private int quantity; private GuiButton startButton; @@ -52,7 +52,7 @@ public class GuiCraftingPreview extends GuiBase { private IElementDrawers drawers = new CraftingPreviewElementDrawers(); - public GuiCraftingPreview(GuiScreen parent, List stacks, ItemStack stack, int quantity) { + public GuiCraftingPreview(GuiScreen parent, List stacks, int hash, int quantity) { super(new Container() { @Override public boolean canInteractWith(EntityPlayer player) { @@ -63,7 +63,7 @@ public class GuiCraftingPreview extends GuiBase { this.stacks = new ArrayList<>(stacks); this.parent = parent; - this.stack = stack; + this.hash = hash; this.quantity = quantity; this.scrollbar = new Scrollbar(149, 20, 12, 119); @@ -184,7 +184,7 @@ public class GuiCraftingPreview extends GuiBase { } private void startRequest() { - RS.INSTANCE.network.sendToServer(new MessageGridCraftingStart(stack, quantity)); + RS.INSTANCE.network.sendToServer(new MessageGridCraftingStart(hash, quantity)); close(); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridCraftingPreviewResponse.java b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridCraftingPreviewResponse.java index e064c5f4c..4925bbad6 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridCraftingPreviewResponse.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridCraftingPreviewResponse.java @@ -4,7 +4,6 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.preview.ICraftingPreview import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.proxy.ProxyClient; import io.netty.buffer.ByteBuf; -import net.minecraft.item.ItemStack; import net.minecraftforge.fml.common.network.ByteBufUtils; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; @@ -15,21 +14,21 @@ import java.util.List; public class MessageGridCraftingPreviewResponse implements IMessage, IMessageHandler { public List stacks; - public ItemStack stack; + public int hash; public int quantity; public MessageGridCraftingPreviewResponse() { } - public MessageGridCraftingPreviewResponse(List stacks, ItemStack stack, int quantity) { + public MessageGridCraftingPreviewResponse(List stacks, int hash, int quantity) { this.stacks = stacks; - this.stack = stack; + this.hash = hash; this.quantity = quantity; } @Override public void fromBytes(ByteBuf buf) { - this.stack = ByteBufUtils.readItemStack(buf); + this.hash = buf.readInt(); this.quantity = buf.readInt(); this.stacks = new LinkedList<>(); @@ -43,8 +42,8 @@ public class MessageGridCraftingPreviewResponse implements IMessage, IMessageHan @Override public void toBytes(ByteBuf buf) { - ByteBufUtils.writeItemStack(buf, this.stack); - buf.writeInt(this.quantity); + buf.writeInt(hash); + buf.writeInt(quantity); buf.writeInt(stacks.size()); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridCraftingStart.java b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridCraftingStart.java index 95f4c6671..fa4b62cea 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridCraftingStart.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridCraftingStart.java @@ -5,31 +5,29 @@ import com.raoulvdberge.refinedstorage.container.ContainerGrid; import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.Container; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fml.common.network.ByteBufUtils; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; public class MessageGridCraftingStart extends MessageHandlerPlayerToServer implements IMessage { - private ItemStack stack; + private int hash; private int quantity; public MessageGridCraftingStart() { } - public MessageGridCraftingStart(ItemStack stack, int quantity) { - this.stack = stack; + public MessageGridCraftingStart(int hash, int quantity) { + this.hash = hash; this.quantity = quantity; } @Override public void fromBytes(ByteBuf buf) { - stack = ByteBufUtils.readItemStack(buf); + hash = buf.readInt(); quantity = buf.readInt(); } @Override public void toBytes(ByteBuf buf) { - ByteBufUtils.writeItemStack(buf, stack); + buf.writeInt(hash); buf.writeInt(quantity); } @@ -41,7 +39,7 @@ public class MessageGridCraftingStart extends MessageHandlerPlayerToServer