Fixed not being able to craft Immersive Engineering Revolver, fixes #1465
This commit is contained in:
		| @@ -7,6 +7,7 @@ | |||||||
| - Fixed device names overflowing Controller GUI (raoulvdberge) | - Fixed device names overflowing Controller GUI (raoulvdberge) | ||||||
| - Fixed high CPU load when Refined Storage GUIs are open (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 extract Mekanism tanks and bins from the Grid (raoulvdberge) | ||||||
|  | - Fixed not being able to craft Immersive Engineering Revolver (raoulvdberge) | ||||||
|  |  | ||||||
| ### 1.5.18 | ### 1.5.18 | ||||||
| - Added Project E integration for the External Storage on the Transmutation Table (raoulvdberge) | - Added Project E integration for the External Storage on the Transmutation Table (raoulvdberge) | ||||||
|   | |||||||
| @@ -53,6 +53,7 @@ public interface IItemGridHandler { | |||||||
|     /** |     /** | ||||||
|      * Called when a player requests the crafting preview window to be opened. |      * Called when a player requests the crafting preview window to be opened. | ||||||
|      * |      * | ||||||
|  |      * @param player    the player | ||||||
|      * @param hash      the item stack hash |      * @param hash      the item stack hash | ||||||
|      * @param quantity  the amount of that item that we need a preview for |      * @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 |      * @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. |      * Called when a player requested crafting for an item. | ||||||
|      * |      * | ||||||
|      * @param player   the player that is requesting the crafting |      * @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 |      * @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. |      * Called when a player wants to cancel a crafting task. | ||||||
|   | |||||||
| @@ -183,20 +183,36 @@ public class ItemGridHandler implements IItemGridHandler { | |||||||
|  |  | ||||||
|                     RS.INSTANCE.network.sendTo(new MessageGridCraftingStartResponse(), player); |                     RS.INSTANCE.network.sendTo(new MessageGridCraftingStartResponse(), player); | ||||||
|                 } else { |                 } 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(); |             calculationThread.start(); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @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)) { |         if (quantity <= 0 || !network.getSecurityManager().hasPermission(Permission.AUTOCRAFTING, player)) { | ||||||
|             return; |             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) { |         if (stack != null) { | ||||||
|             ICraftingTask task = new CraftingTask(network, stack, network.getCraftingManager().getPatternChain(stack), quantity, false); |             ICraftingTask task = new CraftingTask(network, stack, network.getCraftingManager().getPatternChain(stack), quantity, false); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -149,7 +149,7 @@ public class ItemGridHandlerPortable implements IItemGridHandler { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public void onCraftingRequested(EntityPlayerMP player, ItemStack stack, int quantity) { |     public void onCraftingRequested(EntityPlayerMP player, int hash, int quantity) { | ||||||
|         // NO OP |         // NO OP | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -44,7 +44,7 @@ public class GuiCraftingPreview extends GuiBase { | |||||||
|     private List<ICraftingPreviewElement> stacks; |     private List<ICraftingPreviewElement> stacks; | ||||||
|     private GuiScreen parent; |     private GuiScreen parent; | ||||||
|  |  | ||||||
|     private ItemStack stack; |     private int hash; | ||||||
|     private int quantity; |     private int quantity; | ||||||
|  |  | ||||||
|     private GuiButton startButton; |     private GuiButton startButton; | ||||||
| @@ -52,7 +52,7 @@ public class GuiCraftingPreview extends GuiBase { | |||||||
|  |  | ||||||
|     private IElementDrawers drawers = new CraftingPreviewElementDrawers(); |     private IElementDrawers drawers = new CraftingPreviewElementDrawers(); | ||||||
|  |  | ||||||
|     public GuiCraftingPreview(GuiScreen parent, List<ICraftingPreviewElement> stacks, ItemStack stack, int quantity) { |     public GuiCraftingPreview(GuiScreen parent, List<ICraftingPreviewElement> stacks, int hash, int quantity) { | ||||||
|         super(new Container() { |         super(new Container() { | ||||||
|             @Override |             @Override | ||||||
|             public boolean canInteractWith(EntityPlayer player) { |             public boolean canInteractWith(EntityPlayer player) { | ||||||
| @@ -63,7 +63,7 @@ public class GuiCraftingPreview extends GuiBase { | |||||||
|         this.stacks = new ArrayList<>(stacks); |         this.stacks = new ArrayList<>(stacks); | ||||||
|         this.parent = parent; |         this.parent = parent; | ||||||
|  |  | ||||||
|         this.stack = stack; |         this.hash = hash; | ||||||
|         this.quantity = quantity; |         this.quantity = quantity; | ||||||
|  |  | ||||||
|         this.scrollbar = new Scrollbar(149, 20, 12, 119); |         this.scrollbar = new Scrollbar(149, 20, 12, 119); | ||||||
| @@ -184,7 +184,7 @@ public class GuiCraftingPreview extends GuiBase { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     private void startRequest() { |     private void startRequest() { | ||||||
|         RS.INSTANCE.network.sendToServer(new MessageGridCraftingStart(stack, quantity)); |         RS.INSTANCE.network.sendToServer(new MessageGridCraftingStart(hash, quantity)); | ||||||
|  |  | ||||||
|         close(); |         close(); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -4,7 +4,6 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.preview.ICraftingPreview | |||||||
| import com.raoulvdberge.refinedstorage.apiimpl.API; | import com.raoulvdberge.refinedstorage.apiimpl.API; | ||||||
| import com.raoulvdberge.refinedstorage.proxy.ProxyClient; | import com.raoulvdberge.refinedstorage.proxy.ProxyClient; | ||||||
| import io.netty.buffer.ByteBuf; | import io.netty.buffer.ByteBuf; | ||||||
| import net.minecraft.item.ItemStack; |  | ||||||
| import net.minecraftforge.fml.common.network.ByteBufUtils; | import net.minecraftforge.fml.common.network.ByteBufUtils; | ||||||
| import net.minecraftforge.fml.common.network.simpleimpl.IMessage; | import net.minecraftforge.fml.common.network.simpleimpl.IMessage; | ||||||
| import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; | import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; | ||||||
| @@ -15,21 +14,21 @@ import java.util.List; | |||||||
|  |  | ||||||
| public class MessageGridCraftingPreviewResponse implements IMessage, IMessageHandler<MessageGridCraftingPreviewResponse, IMessage> { | public class MessageGridCraftingPreviewResponse implements IMessage, IMessageHandler<MessageGridCraftingPreviewResponse, IMessage> { | ||||||
|     public List<ICraftingPreviewElement> stacks; |     public List<ICraftingPreviewElement> stacks; | ||||||
|     public ItemStack stack; |     public int hash; | ||||||
|     public int quantity; |     public int quantity; | ||||||
|  |  | ||||||
|     public MessageGridCraftingPreviewResponse() { |     public MessageGridCraftingPreviewResponse() { | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public MessageGridCraftingPreviewResponse(List<ICraftingPreviewElement> stacks, ItemStack stack, int quantity) { |     public MessageGridCraftingPreviewResponse(List<ICraftingPreviewElement> stacks, int hash, int quantity) { | ||||||
|         this.stacks = stacks; |         this.stacks = stacks; | ||||||
|         this.stack = stack; |         this.hash = hash; | ||||||
|         this.quantity = quantity; |         this.quantity = quantity; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public void fromBytes(ByteBuf buf) { |     public void fromBytes(ByteBuf buf) { | ||||||
|         this.stack = ByteBufUtils.readItemStack(buf); |         this.hash = buf.readInt(); | ||||||
|         this.quantity = buf.readInt(); |         this.quantity = buf.readInt(); | ||||||
|  |  | ||||||
|         this.stacks = new LinkedList<>(); |         this.stacks = new LinkedList<>(); | ||||||
| @@ -43,8 +42,8 @@ public class MessageGridCraftingPreviewResponse implements IMessage, IMessageHan | |||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public void toBytes(ByteBuf buf) { |     public void toBytes(ByteBuf buf) { | ||||||
|         ByteBufUtils.writeItemStack(buf, this.stack); |         buf.writeInt(hash); | ||||||
|         buf.writeInt(this.quantity); |         buf.writeInt(quantity); | ||||||
|  |  | ||||||
|         buf.writeInt(stacks.size()); |         buf.writeInt(stacks.size()); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -5,31 +5,29 @@ import com.raoulvdberge.refinedstorage.container.ContainerGrid; | |||||||
| import io.netty.buffer.ByteBuf; | import io.netty.buffer.ByteBuf; | ||||||
| import net.minecraft.entity.player.EntityPlayerMP; | import net.minecraft.entity.player.EntityPlayerMP; | ||||||
| import net.minecraft.inventory.Container; | 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; | import net.minecraftforge.fml.common.network.simpleimpl.IMessage; | ||||||
|  |  | ||||||
| public class MessageGridCraftingStart extends MessageHandlerPlayerToServer<MessageGridCraftingStart> implements IMessage { | public class MessageGridCraftingStart extends MessageHandlerPlayerToServer<MessageGridCraftingStart> implements IMessage { | ||||||
|     private ItemStack stack; |     private int hash; | ||||||
|     private int quantity; |     private int quantity; | ||||||
|  |  | ||||||
|     public MessageGridCraftingStart() { |     public MessageGridCraftingStart() { | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public MessageGridCraftingStart(ItemStack stack, int quantity) { |     public MessageGridCraftingStart(int hash, int quantity) { | ||||||
|         this.stack = stack; |         this.hash = hash; | ||||||
|         this.quantity = quantity; |         this.quantity = quantity; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public void fromBytes(ByteBuf buf) { |     public void fromBytes(ByteBuf buf) { | ||||||
|         stack = ByteBufUtils.readItemStack(buf); |         hash = buf.readInt(); | ||||||
|         quantity = buf.readInt(); |         quantity = buf.readInt(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public void toBytes(ByteBuf buf) { |     public void toBytes(ByteBuf buf) { | ||||||
|         ByteBufUtils.writeItemStack(buf, stack); |         buf.writeInt(hash); | ||||||
|         buf.writeInt(quantity); |         buf.writeInt(quantity); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -41,7 +39,7 @@ public class MessageGridCraftingStart extends MessageHandlerPlayerToServer<Messa | |||||||
|             IGrid grid = ((ContainerGrid) container).getGrid(); |             IGrid grid = ((ContainerGrid) container).getGrid(); | ||||||
|  |  | ||||||
|             if (grid.getItemHandler() != null) { |             if (grid.getItemHandler() != null) { | ||||||
|                 grid.getItemHandler().onCraftingRequested(player, message.stack, message.quantity); |                 grid.getItemHandler().onCraftingRequested(player, message.hash, message.quantity); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -293,7 +293,7 @@ public class ProxyClient extends ProxyCommon { | |||||||
|                 screen = ((GuiCraftingStart) screen).getParent(); |                 screen = ((GuiCraftingStart) screen).getParent(); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             FMLCommonHandler.instance().showGuiScreen(new GuiCraftingPreview(screen, message.stacks, message.stack, message.quantity)); |             FMLCommonHandler.instance().showGuiScreen(new GuiCraftingPreview(screen, message.stacks, message.hash, message.quantity)); | ||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 raoulvdberge
					raoulvdberge