Fixed not being able to start autocrafting in other dimensions with Network Transmitter / Network Receivers, fixes #406

This commit is contained in:
Raoul Van den Berge
2016-10-02 22:57:41 +02:00
parent be6b5fb855
commit 454bc8f88c
4 changed files with 25 additions and 20 deletions

View File

@@ -4,6 +4,7 @@
- Added recipe transfer handler for Solderer (way2muchnoise)
- It is now possible to start a crafting task even if the crafting preview says you can't (raoulvdberge)
- Fixed crash with JEI when changing screens in autocrafting (raoulvdberge)
- Fixed not being able to start autocrafting in other dimensions with Network Transmitter / Network Receivers (raoulvdberge)
- Fixed JEI overlay disappearing now and again (raoulvdberge)
- Fixed Detector hitbox (raoulvdberge)

View File

@@ -40,6 +40,14 @@ public interface IItemGridHandler {
*/
void onInsertHeldItem(EntityPlayerMP player, boolean single);
/**
* Called when a player requests the crafting preview window to be opened.
*
* @param hash the hash of the item we want a preview for, see {@link refinedstorage.api.network.NetworkUtils#getItemStackHashCode(ItemStack)}
* @param quantity the amount of that item that we need a preview for
*/
void onCraftingPreviewRequested(EntityPlayerMP player, int hash, int quantity);
/**
* Called when a player requested crafting for an item.
*

View File

@@ -12,6 +12,8 @@ import refinedstorage.api.network.INetworkMaster;
import refinedstorage.api.network.NetworkUtils;
import refinedstorage.api.network.grid.IItemGridHandler;
import refinedstorage.api.storage.CompareUtils;
import refinedstorage.apiimpl.autocrafting.preview.CraftingPreviewData;
import refinedstorage.network.MessageGridCraftingPreviewResponse;
public class ItemGridHandler implements IItemGridHandler {
private INetworkMaster network;
@@ -118,6 +120,19 @@ public class ItemGridHandler implements IItemGridHandler {
network.getWirelessGridHandler().drainEnergy(player, RefinedStorage.INSTANCE.config.wirelessGridInsertUsage);
}
@Override
public void onCraftingPreviewRequested(EntityPlayerMP player, int hash, int quantity) {
ItemStack stack = network.getItemStorage().get(hash);
if (stack != null) {
CraftingPreviewData previewData = new CraftingPreviewData(network);
previewData.calculate(stack, quantity);
RefinedStorage.INSTANCE.network.sendTo(new MessageGridCraftingPreviewResponse(previewData.values(), hash, quantity), player);
}
}
@Override
public void onCraftingRequested(int hash, int quantity) {
if (quantity <= 0) {

View File

@@ -3,12 +3,7 @@ package refinedstorage.network;
import io.netty.buffer.ByteBuf;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.inventory.Container;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import refinedstorage.RefinedStorage;
import refinedstorage.api.network.INetworkMaster;
import refinedstorage.apiimpl.autocrafting.preview.CraftingPreviewData;
import refinedstorage.container.ContainerGrid;
public class MessageGridCraftingPreview extends MessageHandlerPlayerToServer<MessageGridCraftingPreview> implements IMessage {
@@ -40,21 +35,7 @@ public class MessageGridCraftingPreview extends MessageHandlerPlayerToServer<Mes
Container container = player.openContainer;
if (container instanceof ContainerGrid) {
TileEntity tile = player.getEntityWorld().getTileEntity(((ContainerGrid) container).getGrid().getNetworkPosition());
if (tile != null && tile instanceof INetworkMaster) {
INetworkMaster network = (INetworkMaster) tile;
ItemStack stack = network.getItemStorage().get(message.hash);
if (stack != null) {
CraftingPreviewData previewData = new CraftingPreviewData(network);
previewData.calculate(stack, message.quantity);
RefinedStorage.INSTANCE.network.sendTo(new MessageGridCraftingPreviewResponse(previewData.values(), message.hash, message.quantity), player);
}
}
((ContainerGrid) container).getGrid().getItemHandler().onCraftingPreviewRequested(player, message.hash, message.quantity);
}
}
}