Consolidate some stuff from controller in other classes. This will make implementing triple clicking easier.
This commit is contained in:
		| @@ -21,7 +21,7 @@ import refinedstorage.RefinedStorage; | |||||||
| import refinedstorage.RefinedStorageBlocks; | import refinedstorage.RefinedStorageBlocks; | ||||||
| import refinedstorage.RefinedStorageGui; | import refinedstorage.RefinedStorageGui; | ||||||
| import refinedstorage.item.ItemBlockController; | import refinedstorage.item.ItemBlockController; | ||||||
| import refinedstorage.tile.TileController; | import refinedstorage.tile.controller.TileController; | ||||||
|  |  | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.List; | import java.util.List; | ||||||
|   | |||||||
| @@ -4,7 +4,8 @@ import net.minecraft.client.renderer.GlStateManager; | |||||||
| import net.minecraft.client.renderer.RenderHelper; | import net.minecraft.client.renderer.RenderHelper; | ||||||
| import refinedstorage.container.ContainerController; | import refinedstorage.container.ContainerController; | ||||||
| import refinedstorage.gui.sidebutton.SideButtonRedstoneMode; | import refinedstorage.gui.sidebutton.SideButtonRedstoneMode; | ||||||
| import refinedstorage.tile.TileController; | import refinedstorage.tile.controller.ClientSideMachine; | ||||||
|  | import refinedstorage.tile.controller.TileController; | ||||||
|  |  | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  |  | ||||||
| @@ -74,13 +75,13 @@ public class GuiController extends GuiBase { | |||||||
|  |  | ||||||
|         RenderHelper.enableGUIStandardItemLighting(); |         RenderHelper.enableGUIStandardItemLighting(); | ||||||
|  |  | ||||||
|         List<TileController.ClientSideMachine> machines = controller.getClientSideMachines(); |         List<ClientSideMachine> machines = controller.getClientSideMachines(); | ||||||
|  |  | ||||||
|         TileController.ClientSideMachine machineHovering = null; |         ClientSideMachine machineHovering = null; | ||||||
|  |  | ||||||
|         for (int i = 0; i < 4; ++i) { |         for (int i = 0; i < 4; ++i) { | ||||||
|             if (slot < machines.size()) { |             if (slot < machines.size()) { | ||||||
|                 TileController.ClientSideMachine machine = machines.get(slot); |                 ClientSideMachine machine = machines.get(slot); | ||||||
|  |  | ||||||
|                 drawItem(x, y + 5, machine.stack); |                 drawItem(x, y + 5, machine.stack); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ import net.minecraft.client.gui.GuiTextField; | |||||||
| import net.minecraftforge.fml.client.FMLClientHandler; | import net.minecraftforge.fml.client.FMLClientHandler; | ||||||
| import org.lwjgl.input.Keyboard; | import org.lwjgl.input.Keyboard; | ||||||
| import refinedstorage.container.ContainerDummy; | import refinedstorage.container.ContainerDummy; | ||||||
| import refinedstorage.tile.TileController; | import refinedstorage.tile.controller.StorageHandler; | ||||||
|  |  | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
|  |  | ||||||
| @@ -81,7 +81,7 @@ public class GuiCraftingSettings extends GuiBase { | |||||||
|     private void startRequest() { |     private void startRequest() { | ||||||
|         Integer quantity = Ints.tryParse(amountField.getText()); |         Integer quantity = Ints.tryParse(amountField.getText()); | ||||||
|  |  | ||||||
|         if (quantity != null && quantity > 0 && quantity <= TileController.MAX_CRAFTING_QUANTITY_PER_REQUEST) { |         if (quantity != null && quantity > 0 && quantity <= StorageHandler.MAX_CRAFTING_PER_REQUEST) { | ||||||
|             gridGui.getGrid().onCraftingRequested(id, quantity); |             gridGui.getGrid().onCraftingRequested(id, quantity); | ||||||
|  |  | ||||||
|             close(); |             close(); | ||||||
|   | |||||||
| @@ -14,6 +14,7 @@ import refinedstorage.tile.*; | |||||||
| import refinedstorage.tile.autocrafting.TileCrafter; | import refinedstorage.tile.autocrafting.TileCrafter; | ||||||
| import refinedstorage.tile.autocrafting.TileCraftingMonitor; | import refinedstorage.tile.autocrafting.TileCraftingMonitor; | ||||||
| import refinedstorage.tile.autocrafting.TileProcessingPatternEncoder; | import refinedstorage.tile.autocrafting.TileProcessingPatternEncoder; | ||||||
|  | import refinedstorage.tile.controller.TileController; | ||||||
| import refinedstorage.tile.grid.TileGrid; | import refinedstorage.tile.grid.TileGrid; | ||||||
| import refinedstorage.tile.grid.WirelessGrid; | import refinedstorage.tile.grid.WirelessGrid; | ||||||
| import refinedstorage.tile.solderer.TileSolderer; | import refinedstorage.tile.solderer.TileSolderer; | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ import net.minecraft.nbt.NBTTagCompound; | |||||||
| import net.minecraft.world.World; | import net.minecraft.world.World; | ||||||
| import refinedstorage.RefinedStorageBlocks; | import refinedstorage.RefinedStorageBlocks; | ||||||
| import refinedstorage.block.EnumControllerType; | import refinedstorage.block.EnumControllerType; | ||||||
| import refinedstorage.tile.TileController; | import refinedstorage.tile.controller.TileController; | ||||||
|  |  | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -17,7 +17,7 @@ import net.minecraft.util.text.TextComponentString; | |||||||
| import net.minecraft.world.World; | import net.minecraft.world.World; | ||||||
| import refinedstorage.RefinedStorage; | import refinedstorage.RefinedStorage; | ||||||
| import refinedstorage.RefinedStorageBlocks; | import refinedstorage.RefinedStorageBlocks; | ||||||
| import refinedstorage.tile.TileController; | import refinedstorage.tile.controller.TileController; | ||||||
| import refinedstorage.tile.grid.TileGrid; | import refinedstorage.tile.grid.TileGrid; | ||||||
|  |  | ||||||
| import java.util.List; | import java.util.List; | ||||||
| @@ -137,7 +137,7 @@ public class ItemWirelessGrid extends ItemEnergyContainer { | |||||||
|             TileEntity tile = world.getTileEntity(new BlockPos(getX(stack), getY(stack), getZ(stack))); |             TileEntity tile = world.getTileEntity(new BlockPos(getX(stack), getY(stack), getZ(stack))); | ||||||
|  |  | ||||||
|             if (tile instanceof TileController) { |             if (tile instanceof TileController) { | ||||||
|                 if (((TileController) tile).onOpenWirelessGrid(player, hand)) { |                 if (((TileController) tile).getWirelessGridHandler().handleOpen(player, hand)) { | ||||||
|                     return new ActionResult(EnumActionResult.SUCCESS, stack); |                     return new ActionResult(EnumActionResult.SUCCESS, stack); | ||||||
|                 } else { |                 } else { | ||||||
|                     player.addChatComponentMessage(new TextComponentString(I18n.format("misc.refinedstorage:wireless_grid.out_of_range"))); |                     player.addChatComponentMessage(new TextComponentString(I18n.format("misc.refinedstorage:wireless_grid.out_of_range"))); | ||||||
|   | |||||||
| @@ -47,7 +47,7 @@ public class MessageCraftingMonitorCancel extends MessageHandlerPlayerToServer<M | |||||||
|             TileCraftingMonitor craftingMonitor = (TileCraftingMonitor) tile; |             TileCraftingMonitor craftingMonitor = (TileCraftingMonitor) tile; | ||||||
|  |  | ||||||
|             if (craftingMonitor.isConnected()) { |             if (craftingMonitor.isConnected()) { | ||||||
|                 craftingMonitor.getController().onCraftingTaskCancelRequested(message.id); |                 craftingMonitor.getController().getStorageHandler().handleCraftingCancel(message.id); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -48,7 +48,7 @@ public class MessageGridCraftingStart extends MessageHandlerPlayerToServer<Messa | |||||||
|         TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.gridX, message.gridY, message.gridZ)); |         TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.gridX, message.gridY, message.gridZ)); | ||||||
|  |  | ||||||
|         if (tile instanceof TileGrid && ((TileGrid) tile).isConnected()) { |         if (tile instanceof TileGrid && ((TileGrid) tile).isConnected()) { | ||||||
|             ((TileGrid) tile).getController().onCraftingRequested(message.id, message.quantity); |             ((TileGrid) tile).getController().getStorageHandler().handleCraftingRequest(message.id, message.quantity); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -48,7 +48,7 @@ public class MessageGridStoragePull extends MessageHandlerPlayerToServer<Message | |||||||
|         TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.gridX, message.gridY, message.gridZ)); |         TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.gridX, message.gridY, message.gridZ)); | ||||||
|  |  | ||||||
|         if (tile instanceof TileGrid && ((TileGrid) tile).isConnected()) { |         if (tile instanceof TileGrid && ((TileGrid) tile).isConnected()) { | ||||||
|             ((TileGrid) tile).getController().handleStoragePull(message.id, message.flags, player); |             ((TileGrid) tile).getController().getStorageHandler().handlePull(message.id, message.flags, player); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -48,7 +48,7 @@ public class MessageGridStoragePush extends MessageHandlerPlayerToServer<Message | |||||||
|         TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.gridX, message.gridY, message.gridZ)); |         TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.gridX, message.gridY, message.gridZ)); | ||||||
|  |  | ||||||
|         if (tile instanceof TileGrid && ((TileGrid) tile).isConnected()) { |         if (tile instanceof TileGrid && ((TileGrid) tile).isConnected()) { | ||||||
|             ((TileGrid) tile).getController().handleStoragePush(message.playerSlot, message.one, player); |             ((TileGrid) tile).getController().getStorageHandler().handlePush(message.playerSlot, message.one, player); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -5,7 +5,7 @@ import net.minecraft.entity.player.EntityPlayerMP; | |||||||
| import net.minecraft.tileentity.TileEntity; | import net.minecraft.tileentity.TileEntity; | ||||||
| import net.minecraft.util.math.BlockPos; | import net.minecraft.util.math.BlockPos; | ||||||
| import net.minecraftforge.fml.common.network.simpleimpl.IMessage; | import net.minecraftforge.fml.common.network.simpleimpl.IMessage; | ||||||
| import refinedstorage.tile.TileController; | import refinedstorage.tile.controller.TileController; | ||||||
|  |  | ||||||
| public class MessageWirelessGridCraftingStart extends MessageHandlerPlayerToServer<MessageWirelessGridCraftingStart> implements IMessage { | public class MessageWirelessGridCraftingStart extends MessageHandlerPlayerToServer<MessageWirelessGridCraftingStart> implements IMessage { | ||||||
|     private int controllerX; |     private int controllerX; | ||||||
| @@ -48,7 +48,7 @@ public class MessageWirelessGridCraftingStart extends MessageHandlerPlayerToServ | |||||||
|         TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.controllerX, message.controllerY, message.controllerZ)); |         TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.controllerX, message.controllerY, message.controllerZ)); | ||||||
|  |  | ||||||
|         if (tile instanceof TileController && ((TileController) tile).mayRun()) { |         if (tile instanceof TileController && ((TileController) tile).mayRun()) { | ||||||
|             ((TileController) tile).onCraftingRequested(message.id, message.quantity); |             ((TileController) tile).getStorageHandler().handleCraftingRequest(message.id, message.quantity); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -5,7 +5,7 @@ import net.minecraftforge.fml.common.network.simpleimpl.IMessage; | |||||||
| import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; | import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; | ||||||
| import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; | import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; | ||||||
| import refinedstorage.storage.ItemGroup; | import refinedstorage.storage.ItemGroup; | ||||||
| import refinedstorage.tile.TileController; | import refinedstorage.tile.controller.TileController; | ||||||
| import refinedstorage.tile.grid.WirelessGrid; | import refinedstorage.tile.grid.WirelessGrid; | ||||||
|  |  | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| @@ -37,7 +37,7 @@ public class MessageWirelessGridItems implements IMessage, IMessageHandler<Messa | |||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public void toBytes(ByteBuf buf) { |     public void toBytes(ByteBuf buf) { | ||||||
|         controller.sendItemGroups(buf); |         controller.writeItemGroups(buf); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|   | |||||||
| @@ -5,7 +5,7 @@ import net.minecraft.entity.player.EntityPlayerMP; | |||||||
| import net.minecraft.tileentity.TileEntity; | import net.minecraft.tileentity.TileEntity; | ||||||
| import net.minecraft.util.math.BlockPos; | import net.minecraft.util.math.BlockPos; | ||||||
| import net.minecraftforge.fml.common.network.simpleimpl.IMessage; | import net.minecraftforge.fml.common.network.simpleimpl.IMessage; | ||||||
| import refinedstorage.tile.TileController; | import refinedstorage.tile.controller.TileController; | ||||||
|  |  | ||||||
| public class MessageWirelessGridStoragePull extends MessageHandlerPlayerToServer<MessageWirelessGridStoragePull> implements IMessage { | public class MessageWirelessGridStoragePull extends MessageHandlerPlayerToServer<MessageWirelessGridStoragePull> implements IMessage { | ||||||
|     private int controllerX; |     private int controllerX; | ||||||
| @@ -48,7 +48,7 @@ public class MessageWirelessGridStoragePull extends MessageHandlerPlayerToServer | |||||||
|         TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.controllerX, message.controllerY, message.controllerZ)); |         TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.controllerX, message.controllerY, message.controllerZ)); | ||||||
|  |  | ||||||
|         if (tile instanceof TileController && ((TileController) tile).mayRun()) { |         if (tile instanceof TileController && ((TileController) tile).mayRun()) { | ||||||
|             ((TileController) tile).handleStoragePull(message.id, message.flags, player); |             ((TileController) tile).getStorageHandler().handlePull(message.id, message.flags, player); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -5,7 +5,7 @@ import net.minecraft.entity.player.EntityPlayerMP; | |||||||
| import net.minecraft.tileentity.TileEntity; | import net.minecraft.tileentity.TileEntity; | ||||||
| import net.minecraft.util.math.BlockPos; | import net.minecraft.util.math.BlockPos; | ||||||
| import net.minecraftforge.fml.common.network.simpleimpl.IMessage; | import net.minecraftforge.fml.common.network.simpleimpl.IMessage; | ||||||
| import refinedstorage.tile.TileController; | import refinedstorage.tile.controller.TileController; | ||||||
|  |  | ||||||
| public class MessageWirelessGridStoragePush extends MessageHandlerPlayerToServer<MessageWirelessGridStoragePush> implements IMessage { | public class MessageWirelessGridStoragePush extends MessageHandlerPlayerToServer<MessageWirelessGridStoragePush> implements IMessage { | ||||||
|     private int controllerX; |     private int controllerX; | ||||||
| @@ -48,7 +48,7 @@ public class MessageWirelessGridStoragePush extends MessageHandlerPlayerToServer | |||||||
|         TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.controllerX, message.controllerY, message.controllerZ)); |         TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.controllerX, message.controllerY, message.controllerZ)); | ||||||
|  |  | ||||||
|         if (tile instanceof TileController && ((TileController) tile).mayRun()) { |         if (tile instanceof TileController && ((TileController) tile).mayRun()) { | ||||||
|             ((TileController) tile).handleStoragePush(message.playerSlot, message.one, player); |             ((TileController) tile).getStorageHandler().handlePush(message.playerSlot, message.one, player); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -26,6 +26,7 @@ import refinedstorage.tile.*; | |||||||
| import refinedstorage.tile.autocrafting.TileCrafter; | import refinedstorage.tile.autocrafting.TileCrafter; | ||||||
| import refinedstorage.tile.autocrafting.TileCraftingMonitor; | import refinedstorage.tile.autocrafting.TileCraftingMonitor; | ||||||
| import refinedstorage.tile.autocrafting.TileProcessingPatternEncoder; | import refinedstorage.tile.autocrafting.TileProcessingPatternEncoder; | ||||||
|  | import refinedstorage.tile.controller.TileController; | ||||||
| import refinedstorage.tile.grid.TileGrid; | import refinedstorage.tile.grid.TileGrid; | ||||||
| import refinedstorage.tile.solderer.*; | import refinedstorage.tile.solderer.*; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -19,6 +19,7 @@ import refinedstorage.container.ContainerConstructor; | |||||||
| import refinedstorage.inventory.BasicItemHandler; | import refinedstorage.inventory.BasicItemHandler; | ||||||
| import refinedstorage.inventory.BasicItemValidator; | import refinedstorage.inventory.BasicItemValidator; | ||||||
| import refinedstorage.item.ItemUpgrade; | import refinedstorage.item.ItemUpgrade; | ||||||
|  | import refinedstorage.tile.autocrafting.task.CraftingTaskScheduler; | ||||||
| import refinedstorage.tile.config.ICompareConfig; | import refinedstorage.tile.config.ICompareConfig; | ||||||
|  |  | ||||||
| public class TileConstructor extends TileMachine implements ICompareConfig { | public class TileConstructor extends TileMachine implements ICompareConfig { | ||||||
|   | |||||||
| @@ -15,6 +15,7 @@ import refinedstorage.container.ContainerExporter; | |||||||
| import refinedstorage.inventory.BasicItemHandler; | import refinedstorage.inventory.BasicItemHandler; | ||||||
| import refinedstorage.inventory.BasicItemValidator; | import refinedstorage.inventory.BasicItemValidator; | ||||||
| import refinedstorage.item.ItemUpgrade; | import refinedstorage.item.ItemUpgrade; | ||||||
|  | import refinedstorage.tile.autocrafting.task.CraftingTaskScheduler; | ||||||
| import refinedstorage.tile.config.ICompareConfig; | import refinedstorage.tile.config.ICompareConfig; | ||||||
|  |  | ||||||
| public class TileExporter extends TileMachine implements ICompareConfig { | public class TileExporter extends TileMachine implements ICompareConfig { | ||||||
|   | |||||||
| @@ -8,6 +8,8 @@ import net.minecraft.world.World; | |||||||
| import refinedstorage.RefinedStorageUtils; | import refinedstorage.RefinedStorageUtils; | ||||||
| import refinedstorage.tile.config.IRedstoneModeConfig; | import refinedstorage.tile.config.IRedstoneModeConfig; | ||||||
| import refinedstorage.tile.config.RedstoneMode; | import refinedstorage.tile.config.RedstoneMode; | ||||||
|  | import refinedstorage.tile.controller.ControllerSearcher; | ||||||
|  | import refinedstorage.tile.controller.TileController; | ||||||
|  |  | ||||||
| import java.util.HashSet; | import java.util.HashSet; | ||||||
| import java.util.Set; | import java.util.Set; | ||||||
|   | |||||||
| @@ -6,8 +6,8 @@ import net.minecraft.nbt.NBTTagList; | |||||||
| import net.minecraft.util.text.TextFormatting; | import net.minecraft.util.text.TextFormatting; | ||||||
| import net.minecraftforge.common.util.Constants; | import net.minecraftforge.common.util.Constants; | ||||||
| import refinedstorage.RefinedStorageUtils; | import refinedstorage.RefinedStorageUtils; | ||||||
| import refinedstorage.tile.TileController; |  | ||||||
| import refinedstorage.tile.autocrafting.CraftingPattern; | import refinedstorage.tile.autocrafting.CraftingPattern; | ||||||
|  | import refinedstorage.tile.controller.TileController; | ||||||
|  |  | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.List; | import java.util.List; | ||||||
|   | |||||||
| @@ -1,9 +1,10 @@ | |||||||
| package refinedstorage.tile; | package refinedstorage.tile.autocrafting.task; | ||||||
| 
 | 
 | ||||||
| import net.minecraft.item.ItemStack; | import net.minecraft.item.ItemStack; | ||||||
| import net.minecraft.nbt.NBTTagCompound; | import net.minecraft.nbt.NBTTagCompound; | ||||||
| import refinedstorage.RefinedStorageUtils; | import refinedstorage.RefinedStorageUtils; | ||||||
| import refinedstorage.tile.autocrafting.CraftingPattern; | import refinedstorage.tile.autocrafting.CraftingPattern; | ||||||
|  | import refinedstorage.tile.controller.TileController; | ||||||
| 
 | 
 | ||||||
| public class CraftingTaskScheduler { | public class CraftingTaskScheduler { | ||||||
|     public static String NBT_SCHEDULED = "CraftingTaskScheduled"; |     public static String NBT_SCHEDULED = "CraftingTaskScheduled"; | ||||||
| @@ -1,8 +1,8 @@ | |||||||
| package refinedstorage.tile.autocrafting.task; | package refinedstorage.tile.autocrafting.task; | ||||||
|  |  | ||||||
| import net.minecraft.nbt.NBTTagCompound; | import net.minecraft.nbt.NBTTagCompound; | ||||||
| import refinedstorage.tile.TileController; |  | ||||||
| import refinedstorage.tile.autocrafting.CraftingPattern; | import refinedstorage.tile.autocrafting.CraftingPattern; | ||||||
|  | import refinedstorage.tile.controller.TileController; | ||||||
|  |  | ||||||
| public interface ICraftingTask { | public interface ICraftingTask { | ||||||
|     CraftingPattern getPattern(); |     CraftingPattern getPattern(); | ||||||
|   | |||||||
| @@ -6,9 +6,9 @@ import net.minecraft.util.text.TextFormatting; | |||||||
| import net.minecraftforge.items.IItemHandler; | import net.minecraftforge.items.IItemHandler; | ||||||
| import net.minecraftforge.items.ItemHandlerHelper; | import net.minecraftforge.items.ItemHandlerHelper; | ||||||
| import refinedstorage.RefinedStorageUtils; | import refinedstorage.RefinedStorageUtils; | ||||||
| import refinedstorage.tile.TileController; |  | ||||||
| import refinedstorage.tile.autocrafting.CraftingPattern; | import refinedstorage.tile.autocrafting.CraftingPattern; | ||||||
| import refinedstorage.tile.autocrafting.TileCrafter; | import refinedstorage.tile.autocrafting.TileCrafter; | ||||||
|  | import refinedstorage.tile.controller.TileController; | ||||||
|  |  | ||||||
| public class ProcessingCraftingTask implements ICraftingTask { | public class ProcessingCraftingTask implements ICraftingTask { | ||||||
|     public static final int ID = 1; |     public static final int ID = 1; | ||||||
|   | |||||||
							
								
								
									
										30
									
								
								src/main/java/refinedstorage/tile/controller/ClientSideMachine.java
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										30
									
								
								src/main/java/refinedstorage/tile/controller/ClientSideMachine.java
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,30 @@ | |||||||
|  | package refinedstorage.tile.controller; | ||||||
|  |  | ||||||
|  | import net.minecraft.item.ItemStack; | ||||||
|  | import refinedstorage.RefinedStorageUtils; | ||||||
|  |  | ||||||
|  | public class ClientSideMachine { | ||||||
|  |     public ItemStack stack; | ||||||
|  |     public int amount; | ||||||
|  |     public int energyUsage; | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public boolean equals(Object other) { | ||||||
|  |         if (this == other) { | ||||||
|  |             return true; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         if (!(other instanceof ClientSideMachine)) { | ||||||
|  |             return false; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return energyUsage == ((ClientSideMachine) other).energyUsage && RefinedStorageUtils.compareStack(stack, ((ClientSideMachine) other).stack); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public int hashCode() { | ||||||
|  |         int result = stack.hashCode(); | ||||||
|  |         result = 31 * result + energyUsage; | ||||||
|  |         return result; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -1,9 +1,11 @@ | |||||||
| package refinedstorage.tile; | package refinedstorage.tile.controller; | ||||||
| 
 | 
 | ||||||
| import net.minecraft.tileentity.TileEntity; | import net.minecraft.tileentity.TileEntity; | ||||||
| import net.minecraft.util.EnumFacing; | import net.minecraft.util.EnumFacing; | ||||||
| import net.minecraft.util.math.BlockPos; | import net.minecraft.util.math.BlockPos; | ||||||
| import net.minecraft.world.World; | import net.minecraft.world.World; | ||||||
|  | import refinedstorage.tile.TileMachine; | ||||||
|  | import refinedstorage.tile.TileRelay; | ||||||
| 
 | 
 | ||||||
| import java.util.Set; | import java.util.Set; | ||||||
| 
 | 
 | ||||||
							
								
								
									
										137
									
								
								src/main/java/refinedstorage/tile/controller/StorageHandler.java
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										137
									
								
								src/main/java/refinedstorage/tile/controller/StorageHandler.java
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,137 @@ | |||||||
|  | package refinedstorage.tile.controller; | ||||||
|  |  | ||||||
|  | import net.minecraft.entity.player.EntityPlayerMP; | ||||||
|  | import net.minecraft.item.ItemStack; | ||||||
|  | import refinedstorage.RefinedStorageUtils; | ||||||
|  | import refinedstorage.item.ItemWirelessGrid; | ||||||
|  | import refinedstorage.network.GridPullFlags; | ||||||
|  | import refinedstorage.storage.ItemGroup; | ||||||
|  | import refinedstorage.tile.autocrafting.CraftingPattern; | ||||||
|  | import refinedstorage.tile.autocrafting.task.ICraftingTask; | ||||||
|  |  | ||||||
|  | public class StorageHandler { | ||||||
|  |     public static final int MAX_CRAFTING_PER_REQUEST = 500; | ||||||
|  |  | ||||||
|  |     private TileController controller; | ||||||
|  |  | ||||||
|  |     public StorageHandler(TileController controller) { | ||||||
|  |         this.controller = controller; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void handlePull(int id, int flags, EntityPlayerMP player) { | ||||||
|  |         if (player.inventory.getItemStack() != null) { | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         if (id < 0 || id > controller.getItemGroups().size() - 1) { | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         ItemGroup group = controller.getItemGroups().get(id); | ||||||
|  |  | ||||||
|  |         int quantity = 64; | ||||||
|  |  | ||||||
|  |         if (GridPullFlags.isPullingHalf(flags) && group.getQuantity() > 1) { | ||||||
|  |             quantity = group.getQuantity() / 2; | ||||||
|  |  | ||||||
|  |             if (quantity > 32) { | ||||||
|  |                 quantity = 32; | ||||||
|  |             } | ||||||
|  |         } else if (GridPullFlags.isPullingOne(flags)) { | ||||||
|  |             quantity = 1; | ||||||
|  |         } else if (GridPullFlags.isPullingWithShift(flags)) { | ||||||
|  |             // NO OP, the quantity already set (64) is needed for shift | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         if (quantity > group.getType().getItemStackLimit(group.toStack())) { | ||||||
|  |             quantity = group.getType().getItemStackLimit(group.toStack()); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         ItemStack took = controller.take(group.copy(quantity).toStack()); | ||||||
|  |  | ||||||
|  |         if (took != null) { | ||||||
|  |             if (GridPullFlags.isPullingWithShift(flags)) { | ||||||
|  |                 if (!player.inventory.addItemStackToInventory(took.copy())) { | ||||||
|  |                     controller.push(took); | ||||||
|  |                 } | ||||||
|  |             } else { | ||||||
|  |                 player.inventory.setItemStack(took); | ||||||
|  |                 player.updateHeldItem(); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             controller.getWirelessGridHandler().drainEnergy(player, ItemWirelessGrid.USAGE_PULL); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void handlePush(int playerSlot, boolean one, EntityPlayerMP player) { | ||||||
|  |         ItemStack stack; | ||||||
|  |  | ||||||
|  |         if (playerSlot == -1) { | ||||||
|  |             stack = player.inventory.getItemStack().copy(); | ||||||
|  |  | ||||||
|  |             if (one) { | ||||||
|  |                 stack.stackSize = 1; | ||||||
|  |             } | ||||||
|  |         } else { | ||||||
|  |             stack = player.inventory.getStackInSlot(playerSlot); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         if (stack != null) { | ||||||
|  |             boolean success = controller.push(stack); | ||||||
|  |  | ||||||
|  |             if (success) { | ||||||
|  |                 if (playerSlot == -1) { | ||||||
|  |                     if (one) { | ||||||
|  |                         player.inventory.getItemStack().stackSize--; | ||||||
|  |  | ||||||
|  |                         if (player.inventory.getItemStack().stackSize == 0) { | ||||||
|  |                             player.inventory.setItemStack(null); | ||||||
|  |                         } | ||||||
|  |                     } else { | ||||||
|  |                         player.inventory.setItemStack(null); | ||||||
|  |                     } | ||||||
|  |  | ||||||
|  |                     player.updateHeldItem(); | ||||||
|  |                 } else { | ||||||
|  |                     player.inventory.setInventorySlotContents(playerSlot, null); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             controller.getWirelessGridHandler().drainEnergy(player, ItemWirelessGrid.USAGE_PUSH); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void handleCraftingRequest(int id, int quantity) { | ||||||
|  |         if (id >= 0 && id < controller.getItemGroups().size() && quantity > 0 && quantity <= MAX_CRAFTING_PER_REQUEST) { | ||||||
|  |             ItemStack requested = controller.getItemGroups().get(id).toStack(); | ||||||
|  |             int quantityPerRequest = 0; | ||||||
|  |             CraftingPattern pattern = controller.getPattern(requested); | ||||||
|  |  | ||||||
|  |             if (pattern != null) { | ||||||
|  |                 for (ItemStack output : pattern.getOutputs()) { | ||||||
|  |                     if (RefinedStorageUtils.compareStackNoQuantity(requested, output)) { | ||||||
|  |                         quantityPerRequest = output.stackSize; | ||||||
|  |  | ||||||
|  |                         break; | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 while (quantity > 0) { | ||||||
|  |                     controller.addCraftingTask(pattern); | ||||||
|  |  | ||||||
|  |                     quantity -= quantityPerRequest; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void handleCraftingCancel(int id) { | ||||||
|  |         if (id >= 0 && id < controller.getCraftingTasks().size()) { | ||||||
|  |             controller.cancelCraftingTask(controller.getCraftingTasks().get(id)); | ||||||
|  |         } else if (id == -1) { | ||||||
|  |             for (ICraftingTask task : controller.getCraftingTasks()) { | ||||||
|  |                 controller.cancelCraftingTask(task); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -1,31 +1,30 @@ | |||||||
| package refinedstorage.tile; | package refinedstorage.tile.controller; | ||||||
| 
 | 
 | ||||||
| import cofh.api.energy.EnergyStorage; | import cofh.api.energy.EnergyStorage; | ||||||
| import cofh.api.energy.IEnergyReceiver; | import cofh.api.energy.IEnergyReceiver; | ||||||
| import io.netty.buffer.ByteBuf; | import io.netty.buffer.ByteBuf; | ||||||
| import net.minecraft.block.state.IBlockState; | import net.minecraft.block.state.IBlockState; | ||||||
| import net.minecraft.entity.player.EntityPlayer; |  | ||||||
| import net.minecraft.entity.player.EntityPlayerMP; |  | ||||||
| import net.minecraft.inventory.Container; | import net.minecraft.inventory.Container; | ||||||
| import net.minecraft.item.ItemStack; | import net.minecraft.item.ItemStack; | ||||||
| import net.minecraft.nbt.NBTTagCompound; | import net.minecraft.nbt.NBTTagCompound; | ||||||
| import net.minecraft.nbt.NBTTagList; | import net.minecraft.nbt.NBTTagList; | ||||||
| import net.minecraft.util.EnumFacing; | import net.minecraft.util.EnumFacing; | ||||||
| import net.minecraft.util.EnumHand; |  | ||||||
| import net.minecraft.util.math.BlockPos; | import net.minecraft.util.math.BlockPos; | ||||||
| import net.minecraftforge.common.util.Constants; | import net.minecraftforge.common.util.Constants; | ||||||
| import net.minecraftforge.fml.common.network.ByteBufUtils; | import net.minecraftforge.fml.common.network.ByteBufUtils; | ||||||
| import refinedstorage.*; | import refinedstorage.RefinedStorageBlocks; | ||||||
|  | import refinedstorage.RefinedStorageUtils; | ||||||
| import refinedstorage.block.BlockController; | import refinedstorage.block.BlockController; | ||||||
| import refinedstorage.block.EnumControllerType; | import refinedstorage.block.EnumControllerType; | ||||||
| import refinedstorage.container.ContainerController; | import refinedstorage.container.ContainerController; | ||||||
| import refinedstorage.item.ItemPattern; | import refinedstorage.item.ItemPattern; | ||||||
| import refinedstorage.item.ItemWirelessGrid; |  | ||||||
| import refinedstorage.network.GridPullFlags; |  | ||||||
| import refinedstorage.network.MessageWirelessGridItems; |  | ||||||
| import refinedstorage.storage.IStorage; | import refinedstorage.storage.IStorage; | ||||||
| import refinedstorage.storage.IStorageProvider; | import refinedstorage.storage.IStorageProvider; | ||||||
| import refinedstorage.storage.ItemGroup; | import refinedstorage.storage.ItemGroup; | ||||||
|  | import refinedstorage.tile.ISynchronizedContainer; | ||||||
|  | import refinedstorage.tile.TileBase; | ||||||
|  | import refinedstorage.tile.TileMachine; | ||||||
|  | import refinedstorage.tile.TileWirelessTransmitter; | ||||||
| import refinedstorage.tile.autocrafting.CraftingPattern; | import refinedstorage.tile.autocrafting.CraftingPattern; | ||||||
| import refinedstorage.tile.autocrafting.TileCrafter; | import refinedstorage.tile.autocrafting.TileCrafter; | ||||||
| import refinedstorage.tile.autocrafting.task.BasicCraftingTask; | import refinedstorage.tile.autocrafting.task.BasicCraftingTask; | ||||||
| @@ -33,50 +32,23 @@ import refinedstorage.tile.autocrafting.task.ICraftingTask; | |||||||
| import refinedstorage.tile.autocrafting.task.ProcessingCraftingTask; | import refinedstorage.tile.autocrafting.task.ProcessingCraftingTask; | ||||||
| import refinedstorage.tile.config.IRedstoneModeConfig; | import refinedstorage.tile.config.IRedstoneModeConfig; | ||||||
| import refinedstorage.tile.config.RedstoneMode; | import refinedstorage.tile.config.RedstoneMode; | ||||||
| import refinedstorage.tile.grid.WirelessGridConsumer; |  | ||||||
| 
 | 
 | ||||||
| import java.util.*; | import java.util.*; | ||||||
| 
 | 
 | ||||||
| public class TileController extends TileBase implements IEnergyReceiver, ISynchronizedContainer, IRedstoneModeConfig { | public class TileController extends TileBase implements IEnergyReceiver, ISynchronizedContainer, IRedstoneModeConfig { | ||||||
|     public class ClientSideMachine { |  | ||||||
|         public ItemStack stack; |  | ||||||
|         public int amount; |  | ||||||
|         public int energyUsage; |  | ||||||
| 
 |  | ||||||
|         @Override |  | ||||||
|         public boolean equals(Object other) { |  | ||||||
|             if (this == other) { |  | ||||||
|                 return true; |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             if (!(other instanceof ClientSideMachine)) { |  | ||||||
|                 return false; |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             return energyUsage == ((ClientSideMachine) other).energyUsage && RefinedStorageUtils.compareStack(stack, ((ClientSideMachine) other).stack); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         @Override |  | ||||||
|         public int hashCode() { |  | ||||||
|             int result = stack.hashCode(); |  | ||||||
|             result = 31 * result + energyUsage; |  | ||||||
|             return result; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     public static final int ENERGY_CAPACITY = 32000; |     public static final int ENERGY_CAPACITY = 32000; | ||||||
| 
 | 
 | ||||||
|     public static final String NBT_CRAFTING_TASKS = "CraftingTasks"; |     public static final String NBT_CRAFTING_TASKS = "CraftingTasks"; | ||||||
|     public static final String NBT_ENERGY = "Energy"; |     public static final String NBT_ENERGY = "Energy"; | ||||||
| 
 | 
 | ||||||
|     public static final int MAX_CRAFTING_QUANTITY_PER_REQUEST = 500; |  | ||||||
| 
 |  | ||||||
|     private EnumControllerType type; |     private EnumControllerType type; | ||||||
| 
 | 
 | ||||||
|  |     private StorageHandler storageHandler = new StorageHandler(this); | ||||||
|  |     private WirelessGridHandler wirelessGridHandler = new WirelessGridHandler(this); | ||||||
|  | 
 | ||||||
|     private List<ItemGroup> itemGroups = new ArrayList<ItemGroup>(); |     private List<ItemGroup> itemGroups = new ArrayList<ItemGroup>(); | ||||||
|  | 
 | ||||||
|     private List<IStorage> storages = new ArrayList<IStorage>(); |     private List<IStorage> storages = new ArrayList<IStorage>(); | ||||||
|     private List<WirelessGridConsumer> wirelessGridConsumers = new ArrayList<WirelessGridConsumer>(); |  | ||||||
|     private List<WirelessGridConsumer> wirelessGridConsumersToRemove = new ArrayList<WirelessGridConsumer>(); |  | ||||||
| 
 | 
 | ||||||
|     private Set<Integer> combinedGroupsIndices = new HashSet<Integer>(); |     private Set<Integer> combinedGroupsIndices = new HashSet<Integer>(); | ||||||
|     private List<ItemGroup> combinedGroups = new ArrayList<ItemGroup>(); |     private List<ItemGroup> combinedGroups = new ArrayList<ItemGroup>(); | ||||||
| @@ -97,20 +69,12 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr | |||||||
|     private EnergyStorage energy = new EnergyStorage(ENERGY_CAPACITY); |     private EnergyStorage energy = new EnergyStorage(ENERGY_CAPACITY); | ||||||
|     private int energyUsage; |     private int energyUsage; | ||||||
| 
 | 
 | ||||||
|  |     private int wirelessGridRange; | ||||||
|  | 
 | ||||||
|     private boolean couldRun; |     private boolean couldRun; | ||||||
| 
 | 
 | ||||||
|     private long lastEnergyUpdate; |     private long lastEnergyUpdate; | ||||||
| 
 | 
 | ||||||
|     private int wirelessGridRange; |  | ||||||
| 
 |  | ||||||
|     public void addMachine(TileMachine machine) { |  | ||||||
|         machinesToAdd.add(machine); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     public void removeMachine(TileMachine machine) { |  | ||||||
|         machinesToRemove.add(machine); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     @Override |     @Override | ||||||
|     public void update() { |     public void update() { | ||||||
|         super.update(); |         super.update(); | ||||||
| @@ -169,22 +133,7 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr | |||||||
|                 worldObj.notifyNeighborsOfStateChange(pos, RefinedStorageBlocks.CONTROLLER); |                 worldObj.notifyNeighborsOfStateChange(pos, RefinedStorageBlocks.CONTROLLER); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             wirelessGridConsumers.removeAll(wirelessGridConsumersToRemove); |             wirelessGridHandler.update(); | ||||||
|             wirelessGridConsumersToRemove.clear(); |  | ||||||
| 
 |  | ||||||
|             Iterator<WirelessGridConsumer> gridConsumerIterator = wirelessGridConsumers.iterator(); |  | ||||||
| 
 |  | ||||||
|             while (gridConsumerIterator.hasNext()) { |  | ||||||
|                 WirelessGridConsumer consumer = gridConsumerIterator.next(); |  | ||||||
| 
 |  | ||||||
|                 if (!RefinedStorageUtils.compareStack(consumer.getWirelessGrid(), consumer.getPlayer().getHeldItem(consumer.getHand()))) { |  | ||||||
|                     consumer.getPlayer().closeScreen(); // This will call onContainerClosed on the Container and remove it from the list |  | ||||||
|                 } else { |  | ||||||
|                     if (mayRun()) { |  | ||||||
|                         RefinedStorage.NETWORK.sendTo(new MessageWirelessGridItems(this), (EntityPlayerMP) consumer.getPlayer()); |  | ||||||
|                     } |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
| 
 | 
 | ||||||
|             if (getType() == EnumControllerType.NORMAL && energyUsage > 0) { |             if (getType() == EnumControllerType.NORMAL && energyUsage > 0) { | ||||||
|                 if (energy.getEnergyStored() - energyUsage >= 0) { |                 if (energy.getEnergyStored() - energyUsage >= 0) { | ||||||
| @@ -256,6 +205,15 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr | |||||||
|         syncItems(); |         syncItems(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  |     public void addMachine(TileMachine machine) { | ||||||
|  |         machinesToAdd.add(machine); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void removeMachine(TileMachine machine) { | ||||||
|  |         machinesToRemove.add(machine); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     public EnumControllerType getType() { |     public EnumControllerType getType() { | ||||||
|         if (type == null && worldObj.getBlockState(pos).getBlock() == RefinedStorageBlocks.CONTROLLER) { |         if (type == null && worldObj.getBlockState(pos).getBlock() == RefinedStorageBlocks.CONTROLLER) { | ||||||
|             this.type = (EnumControllerType) worldObj.getBlockState(pos).getValue(BlockController.TYPE); |             this.type = (EnumControllerType) worldObj.getBlockState(pos).getValue(BlockController.TYPE); | ||||||
| @@ -264,6 +222,14 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr | |||||||
|         return type == null ? EnumControllerType.NORMAL : type; |         return type == null ? EnumControllerType.NORMAL : type; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     public StorageHandler getStorageHandler() { | ||||||
|  |         return storageHandler; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public WirelessGridHandler getWirelessGridHandler() { | ||||||
|  |         return wirelessGridHandler; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     public int getWirelessGridRange() { |     public int getWirelessGridRange() { | ||||||
|         return wirelessGridRange; |         return wirelessGridRange; | ||||||
|     } |     } | ||||||
| @@ -280,6 +246,14 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr | |||||||
|         return itemGroups; |         return itemGroups; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     public void writeItemGroups(ByteBuf buf) { | ||||||
|  |         buf.writeInt(itemGroups.size()); | ||||||
|  | 
 | ||||||
|  |         for (ItemGroup group : itemGroups) { | ||||||
|  |             group.toBytes(buf, itemGroups.indexOf(group)); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     public List<ICraftingTask> getCraftingTasks() { |     public List<ICraftingTask> getCraftingTasks() { | ||||||
|         return craftingTasks; |         return craftingTasks; | ||||||
|     } |     } | ||||||
| @@ -439,62 +413,6 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr | |||||||
|         energy.setEnergyStored(amount); |         energy.setEnergyStored(amount); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public boolean onOpenWirelessGrid(EntityPlayer player, EnumHand hand) { |  | ||||||
|         boolean inRange = (int) Math.sqrt(Math.pow(getPos().getX() - player.posX, 2) + Math.pow(getPos().getY() - player.posY, 2) + Math.pow(getPos().getZ() - player.posZ, 2)) < getWirelessGridRange(); |  | ||||||
| 
 |  | ||||||
|         if (!inRange) { |  | ||||||
|             return false; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         wirelessGridConsumers.add(new WirelessGridConsumer(player, hand, player.getHeldItem(hand))); |  | ||||||
| 
 |  | ||||||
|         player.openGui(RefinedStorage.INSTANCE, RefinedStorageGui.WIRELESS_GRID, worldObj, RefinedStorageUtils.getIdFromHand(hand), 0, 0); |  | ||||||
| 
 |  | ||||||
|         drainEnergyFromWirelessGrid(player, ItemWirelessGrid.USAGE_OPEN); |  | ||||||
| 
 |  | ||||||
|         return true; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     public void onCloseWirelessGrid(EntityPlayer player) { |  | ||||||
|         WirelessGridConsumer consumer = getWirelessGridConsumer(player); |  | ||||||
| 
 |  | ||||||
|         if (consumer != null) { |  | ||||||
|             wirelessGridConsumersToRemove.add(consumer); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     public void drainEnergyFromWirelessGrid(EntityPlayer player, int energy) { |  | ||||||
|         WirelessGridConsumer consumer = getWirelessGridConsumer(player); |  | ||||||
| 
 |  | ||||||
|         if (consumer != null) { |  | ||||||
|             ItemWirelessGrid item = RefinedStorageItems.WIRELESS_GRID; |  | ||||||
|             ItemStack held = consumer.getPlayer().getHeldItem(consumer.getHand()); |  | ||||||
| 
 |  | ||||||
|             if (held.getItemDamage() != ItemWirelessGrid.TYPE_CREATIVE) { |  | ||||||
|                 item.extractEnergy(held, energy, false); |  | ||||||
| 
 |  | ||||||
|                 if (item.getEnergyStored(held) <= 0) { |  | ||||||
|                     onCloseWirelessGrid(player); |  | ||||||
|                     consumer.getPlayer().closeScreen(); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     public WirelessGridConsumer getWirelessGridConsumer(EntityPlayer player) { |  | ||||||
|         Iterator<WirelessGridConsumer> it = wirelessGridConsumers.iterator(); |  | ||||||
| 
 |  | ||||||
|         while (it.hasNext()) { |  | ||||||
|             WirelessGridConsumer consumer = it.next(); |  | ||||||
| 
 |  | ||||||
|             if (consumer.getPlayer() == player) { |  | ||||||
|                 return consumer; |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         return null; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     @Override |     @Override | ||||||
|     public NBTTagCompound write(NBTTagCompound tag) { |     public NBTTagCompound write(NBTTagCompound tag) { | ||||||
|         super.write(tag); |         super.write(tag); | ||||||
| @@ -688,129 +606,4 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr | |||||||
|     public Class<? extends Container> getContainer() { |     public Class<? extends Container> getContainer() { | ||||||
|         return ContainerController.class; |         return ContainerController.class; | ||||||
|     } |     } | ||||||
| 
 |  | ||||||
|     public void handleStoragePull(int id, int flags, EntityPlayerMP player) { |  | ||||||
|         if (player.inventory.getItemStack() != null) { |  | ||||||
|             return; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         if (id < 0 || id > itemGroups.size() - 1) { |  | ||||||
|             return; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         ItemGroup group = itemGroups.get(id); |  | ||||||
| 
 |  | ||||||
|         int quantity = 64; |  | ||||||
| 
 |  | ||||||
|         if (GridPullFlags.isPullingHalf(flags) && group.getQuantity() > 1) { |  | ||||||
|             quantity = group.getQuantity() / 2; |  | ||||||
| 
 |  | ||||||
|             if (quantity > 32) { |  | ||||||
|                 quantity = 32; |  | ||||||
|             } |  | ||||||
|         } else if (GridPullFlags.isPullingOne(flags)) { |  | ||||||
|             quantity = 1; |  | ||||||
|         } else if (GridPullFlags.isPullingWithShift(flags)) { |  | ||||||
|             // NO OP, the quantity already set (64) is needed for shift |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         if (quantity > group.getType().getItemStackLimit(group.toStack())) { |  | ||||||
|             quantity = group.getType().getItemStackLimit(group.toStack()); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         ItemStack took = take(group.copy(quantity).toStack()); |  | ||||||
| 
 |  | ||||||
|         if (took != null) { |  | ||||||
|             if (GridPullFlags.isPullingWithShift(flags)) { |  | ||||||
|                 if (!player.inventory.addItemStackToInventory(took.copy())) { |  | ||||||
|                     push(took); |  | ||||||
|                 } |  | ||||||
|             } else { |  | ||||||
|                 player.inventory.setItemStack(took); |  | ||||||
|                 player.updateHeldItem(); |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             drainEnergyFromWirelessGrid(player, ItemWirelessGrid.USAGE_PULL); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     public void handleStoragePush(int playerSlot, boolean one, EntityPlayerMP player) { |  | ||||||
|         ItemStack stack; |  | ||||||
| 
 |  | ||||||
|         if (playerSlot == -1) { |  | ||||||
|             stack = player.inventory.getItemStack().copy(); |  | ||||||
| 
 |  | ||||||
|             if (one) { |  | ||||||
|                 stack.stackSize = 1; |  | ||||||
|             } |  | ||||||
|         } else { |  | ||||||
|             stack = player.inventory.getStackInSlot(playerSlot); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         if (stack != null) { |  | ||||||
|             boolean success = push(stack); |  | ||||||
| 
 |  | ||||||
|             if (success) { |  | ||||||
|                 if (playerSlot == -1) { |  | ||||||
|                     if (one) { |  | ||||||
|                         player.inventory.getItemStack().stackSize--; |  | ||||||
| 
 |  | ||||||
|                         if (player.inventory.getItemStack().stackSize == 0) { |  | ||||||
|                             player.inventory.setItemStack(null); |  | ||||||
|                         } |  | ||||||
|                     } else { |  | ||||||
|                         player.inventory.setItemStack(null); |  | ||||||
|                     } |  | ||||||
| 
 |  | ||||||
|                     player.updateHeldItem(); |  | ||||||
|                 } else { |  | ||||||
|                     player.inventory.setInventorySlotContents(playerSlot, null); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             drainEnergyFromWirelessGrid(player, ItemWirelessGrid.USAGE_PUSH); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     public void sendItemGroups(ByteBuf buf) { |  | ||||||
|         buf.writeInt(getItemGroups().size()); |  | ||||||
| 
 |  | ||||||
|         for (ItemGroup group : getItemGroups()) { |  | ||||||
|             group.toBytes(buf, getItemGroups().indexOf(group)); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     public void onCraftingRequested(int id, int quantity) { |  | ||||||
|         if (id >= 0 && id < itemGroups.size() && quantity > 0 && quantity <= MAX_CRAFTING_QUANTITY_PER_REQUEST) { |  | ||||||
|             ItemStack requested = itemGroups.get(id).toStack(); |  | ||||||
|             int quantityPerRequest = 0; |  | ||||||
|             CraftingPattern pattern = getPattern(requested); |  | ||||||
| 
 |  | ||||||
|             if (pattern != null) { |  | ||||||
|                 for (ItemStack output : pattern.getOutputs()) { |  | ||||||
|                     if (RefinedStorageUtils.compareStackNoQuantity(requested, output)) { |  | ||||||
|                         quantityPerRequest = output.stackSize; |  | ||||||
| 
 |  | ||||||
|                         break; |  | ||||||
|                     } |  | ||||||
|                 } |  | ||||||
| 
 |  | ||||||
|                 while (quantity > 0) { |  | ||||||
|                     addCraftingTask(pattern); |  | ||||||
| 
 |  | ||||||
|                     quantity -= quantityPerRequest; |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     public void onCraftingTaskCancelRequested(int id) { |  | ||||||
|         if (id >= 0 && id < craftingTasks.size()) { |  | ||||||
|             cancelCraftingTask(craftingTasks.get(id)); |  | ||||||
|         } else if (id == -1) { |  | ||||||
|             for (ICraftingTask task : craftingTasks) { |  | ||||||
|                 cancelCraftingTask(task); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } | } | ||||||
							
								
								
									
										103
									
								
								src/main/java/refinedstorage/tile/controller/WirelessGridHandler.java
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										103
									
								
								src/main/java/refinedstorage/tile/controller/WirelessGridHandler.java
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,103 @@ | |||||||
|  | package refinedstorage.tile.controller; | ||||||
|  |  | ||||||
|  | import net.minecraft.entity.player.EntityPlayer; | ||||||
|  | import net.minecraft.entity.player.EntityPlayerMP; | ||||||
|  | import net.minecraft.item.ItemStack; | ||||||
|  | import net.minecraft.util.EnumHand; | ||||||
|  | import refinedstorage.RefinedStorage; | ||||||
|  | import refinedstorage.RefinedStorageGui; | ||||||
|  | import refinedstorage.RefinedStorageItems; | ||||||
|  | import refinedstorage.RefinedStorageUtils; | ||||||
|  | import refinedstorage.item.ItemWirelessGrid; | ||||||
|  | import refinedstorage.network.MessageWirelessGridItems; | ||||||
|  | import refinedstorage.tile.grid.WirelessGridConsumer; | ||||||
|  |  | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.Iterator; | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
|  | public class WirelessGridHandler { | ||||||
|  |     private TileController controller; | ||||||
|  |  | ||||||
|  |     private List<WirelessGridConsumer> consumers = new ArrayList<WirelessGridConsumer>(); | ||||||
|  |     private List<WirelessGridConsumer> consumersToRemove = new ArrayList<WirelessGridConsumer>(); | ||||||
|  |  | ||||||
|  |     public WirelessGridHandler(TileController controller) { | ||||||
|  |         this.controller = controller; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void update() { | ||||||
|  |         consumers.removeAll(consumersToRemove); | ||||||
|  |         consumersToRemove.clear(); | ||||||
|  |  | ||||||
|  |         Iterator<WirelessGridConsumer> it = consumers.iterator(); | ||||||
|  |  | ||||||
|  |         while (it.hasNext()) { | ||||||
|  |             WirelessGridConsumer consumer = it.next(); | ||||||
|  |  | ||||||
|  |             if (!RefinedStorageUtils.compareStack(consumer.getWirelessGrid(), consumer.getPlayer().getHeldItem(consumer.getHand()))) { | ||||||
|  |                 consumer.getPlayer().closeScreen(); // This will call onContainerClosed on the Container and remove it from the list | ||||||
|  |             } else { | ||||||
|  |                 if (controller.mayRun()) { | ||||||
|  |                     RefinedStorage.NETWORK.sendTo(new MessageWirelessGridItems(controller), (EntityPlayerMP) consumer.getPlayer()); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public boolean handleOpen(EntityPlayer player, EnumHand hand) { | ||||||
|  |         int distance = (int) Math.sqrt(Math.pow(controller.getPos().getX() - player.posX, 2) + Math.pow(controller.getPos().getY() - player.posY, 2) + Math.pow(controller.getPos().getZ() - player.posZ, 2)); | ||||||
|  |  | ||||||
|  |         if (distance > controller.getWirelessGridRange()) { | ||||||
|  |             return false; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         consumers.add(new WirelessGridConsumer(player, hand, player.getHeldItem(hand))); | ||||||
|  |  | ||||||
|  |         player.openGui(RefinedStorage.INSTANCE, RefinedStorageGui.WIRELESS_GRID, controller.getWorld(), RefinedStorageUtils.getIdFromHand(hand), 0, 0); | ||||||
|  |  | ||||||
|  |         drainEnergy(player, ItemWirelessGrid.USAGE_OPEN); | ||||||
|  |  | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void handleClose(EntityPlayer player) { | ||||||
|  |         WirelessGridConsumer consumer = getConsumer(player); | ||||||
|  |  | ||||||
|  |         if (consumer != null) { | ||||||
|  |             consumersToRemove.add(consumer); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void drainEnergy(EntityPlayer player, int energy) { | ||||||
|  |         WirelessGridConsumer consumer = getConsumer(player); | ||||||
|  |  | ||||||
|  |         if (consumer != null) { | ||||||
|  |             ItemWirelessGrid item = RefinedStorageItems.WIRELESS_GRID; | ||||||
|  |             ItemStack held = consumer.getPlayer().getHeldItem(consumer.getHand()); | ||||||
|  |  | ||||||
|  |             if (held.getItemDamage() != ItemWirelessGrid.TYPE_CREATIVE) { | ||||||
|  |                 item.extractEnergy(held, energy, false); | ||||||
|  |  | ||||||
|  |                 if (item.getEnergyStored(held) <= 0) { | ||||||
|  |                     handleClose(player); | ||||||
|  |                     consumer.getPlayer().closeScreen(); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public WirelessGridConsumer getConsumer(EntityPlayer player) { | ||||||
|  |         Iterator<WirelessGridConsumer> it = consumers.iterator(); | ||||||
|  |  | ||||||
|  |         while (it.hasNext()) { | ||||||
|  |             WirelessGridConsumer consumer = it.next(); | ||||||
|  |  | ||||||
|  |             if (consumer.getPlayer() == player) { | ||||||
|  |                 return consumer; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return null; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -337,7 +337,7 @@ public class TileGrid extends TileMachine implements IGrid { | |||||||
|         buf.writeInt(searchBoxMode); |         buf.writeInt(searchBoxMode); | ||||||
|  |  | ||||||
|         if (connected) { |         if (connected) { | ||||||
|             controller.sendItemGroups(buf); |             controller.writeItemGroups(buf); | ||||||
|         } else { |         } else { | ||||||
|             buf.writeInt(0); |             buf.writeInt(0); | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -14,8 +14,8 @@ import refinedstorage.network.MessageWirelessGridSettingsUpdate; | |||||||
| import refinedstorage.network.MessageWirelessGridStoragePull; | import refinedstorage.network.MessageWirelessGridStoragePull; | ||||||
| import refinedstorage.network.MessageWirelessGridStoragePush; | import refinedstorage.network.MessageWirelessGridStoragePush; | ||||||
| import refinedstorage.storage.ItemGroup; | import refinedstorage.storage.ItemGroup; | ||||||
| import refinedstorage.tile.TileController; |  | ||||||
| import refinedstorage.tile.config.IRedstoneModeConfig; | import refinedstorage.tile.config.IRedstoneModeConfig; | ||||||
|  | import refinedstorage.tile.controller.TileController; | ||||||
|  |  | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| @@ -62,7 +62,7 @@ public class WirelessGrid implements IGrid { | |||||||
|         TileEntity tile = player.worldObj.getTileEntity(new BlockPos(ItemWirelessGrid.getX(stack), ItemWirelessGrid.getY(stack), ItemWirelessGrid.getZ(stack))); |         TileEntity tile = player.worldObj.getTileEntity(new BlockPos(ItemWirelessGrid.getX(stack), ItemWirelessGrid.getY(stack), ItemWirelessGrid.getZ(stack))); | ||||||
|  |  | ||||||
|         if (tile instanceof TileController) { |         if (tile instanceof TileController) { | ||||||
|             ((TileController) tile).onCloseWirelessGrid(player); |             ((TileController) tile).getWirelessGridHandler().handleClose(player); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Raoul Van den Berge
					Raoul Van den Berge