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