Rewrite network item system. Added keybindings to open wireless items. The default one set to open a Wireless Grid is CTRL + G.

This commit is contained in:
raoulvdberge
2018-12-11 22:00:49 +01:00
parent cb58826f1e
commit cef892f199
48 changed files with 803 additions and 404 deletions

View File

@@ -2,6 +2,7 @@
### 1.6.13
- Fixed Interface with Crafting Upgrade being stuck if an earlier item configuration has missing items or fluids (raoulvdberge)
- Added keybindings to open wireless items. The default one set to open a Wireless Grid is CTRL + G (raoulvdberge)
### 1.6.12
- Increased the speed of autocrafting (raoulvdberge)

View File

@@ -2,30 +2,27 @@ package com.raoulvdberge.refinedstorage;
public final class RSGui {
public static final int CONTROLLER = 0;
public static final int GRID = 1;
public static final int DISK_DRIVE = 2;
public static final int IMPORTER = 3;
public static final int EXPORTER = 4;
public static final int DETECTOR = 5;
public static final int DESTRUCTOR = 7;
public static final int CONSTRUCTOR = 8;
public static final int STORAGE = 9;
public static final int RELAY = 10;
public static final int INTERFACE = 11;
public static final int WIRELESS_GRID = 12;
public static final int CRAFTING_MONITOR = 13;
public static final int WIRELESS_TRANSMITTER = 14;
public static final int CRAFTER = 15;
public static final int FILTER = 16;
public static final int NETWORK_TRANSMITTER = 17;
public static final int FLUID_INTERFACE = 18;
public static final int EXTERNAL_STORAGE = 19;
public static final int FLUID_STORAGE = 20;
public static final int DISK_MANIPULATOR = 21;
public static final int WIRELESS_CRAFTING_MONITOR = 22;
public static final int READER_WRITER = 23;
public static final int SECURITY_MANAGER = 24;
public static final int STORAGE_MONITOR = 25;
public static final int PORTABLE_GRID = 26;
public static final int CRAFTER_MANAGER = 27;
public static final int DISK_DRIVE = 1;
public static final int IMPORTER = 2;
public static final int EXPORTER = 3;
public static final int DETECTOR = 4;
public static final int DESTRUCTOR = 5;
public static final int CONSTRUCTOR = 6;
public static final int STORAGE = 7;
public static final int RELAY = 8;
public static final int INTERFACE = 9;
public static final int CRAFTING_MONITOR = 10;
public static final int WIRELESS_TRANSMITTER = 11;
public static final int CRAFTER = 12;
public static final int FILTER = 13;
public static final int NETWORK_TRANSMITTER = 14;
public static final int FLUID_INTERFACE = 15;
public static final int EXTERNAL_STORAGE = 16;
public static final int FLUID_STORAGE = 17;
public static final int DISK_MANIPULATOR = 18;
public static final int WIRELESS_CRAFTING_MONITOR = 19;
public static final int READER_WRITER = 20;
public static final int SECURITY_MANAGER = 21;
public static final int STORAGE_MONITOR = 22;
public static final int CRAFTER_MANAGER = 23;
}

View File

@@ -9,9 +9,17 @@ import org.lwjgl.input.Keyboard;
public final class RSKeyBindings {
public static final KeyBinding FOCUS_SEARCH_BAR = new KeyBinding("key.refinedstorage.focusSearchBar", KeyConflictContext.GUI, Keyboard.KEY_TAB, "Refined Storage");
public static final KeyBinding CLEAR_GRID_CRAFTING_MATRIX = new KeyBinding("key.refinedstorage.clearGridCraftingMatrix", KeyConflictContext.GUI, KeyModifier.CONTROL, Keyboard.KEY_X, "Refined Storage");
public static final KeyBinding OPEN_WIRELESS_GRID = new KeyBinding("key.refinedstorage.openWirelessGrid", KeyConflictContext.IN_GAME, KeyModifier.CONTROL, Keyboard.KEY_G, "Refined Storage");
public static final KeyBinding OPEN_WIRELESS_FLUID_GRID = new KeyBinding("key.refinedstorage.openWirelessFluidGrid", KeyConflictContext.IN_GAME, 0, "Refined Storage");
public static final KeyBinding OPEN_PORTABLE_GRID = new KeyBinding("key.refinedstorage.openPortableGrid", KeyConflictContext.IN_GAME, 0, "Refined Storage");
public static final KeyBinding OPEN_WIRELESS_CRAFTING_MONITOR = new KeyBinding("key.refinedstorage.openWirelessCraftingMonitor", KeyConflictContext.IN_GAME, 0, "Refined Storage");
public static void init() {
ClientRegistry.registerKeyBinding(FOCUS_SEARCH_BAR);
ClientRegistry.registerKeyBinding(CLEAR_GRID_CRAFTING_MATRIX);
ClientRegistry.registerKeyBinding(OPEN_WIRELESS_GRID);
ClientRegistry.registerKeyBinding(OPEN_WIRELESS_FLUID_GRID);
ClientRegistry.registerKeyBinding(OPEN_PORTABLE_GRID);
ClientRegistry.registerKeyBinding(OPEN_WIRELESS_CRAFTING_MONITOR);
}
}

View File

@@ -8,8 +8,7 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.registry.ICraftingTaskRe
import com.raoulvdberge.refinedstorage.api.autocrafting.task.CraftingTaskReadException;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingRequestInfo;
import com.raoulvdberge.refinedstorage.api.network.INetwork;
import com.raoulvdberge.refinedstorage.api.network.grid.wireless.IWirelessGridFactory;
import com.raoulvdberge.refinedstorage.api.network.grid.wireless.IWirelessGridRegistry;
import com.raoulvdberge.refinedstorage.api.network.grid.IGridManager;
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeManager;
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeRegistry;
@@ -25,10 +24,8 @@ import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.api.util.IOneSixMigrationHelper;
import com.raoulvdberge.refinedstorage.api.util.IQuantityFormatter;
import com.raoulvdberge.refinedstorage.api.util.IStackList;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.fluids.FluidStack;
@@ -121,10 +118,10 @@ public interface IRSAPI {
ICraftingMonitorElementList createCraftingMonitorElementList();
/**
* @return the wireless grid registry
* @return the grid manager
*/
@Nonnull
IWirelessGridRegistry getWirelessGridRegistry();
IGridManager getGridManager();
/**
* @return the storage disk registry
@@ -218,16 +215,6 @@ public interface IRSAPI {
*/
List<ICraftingPatternRenderHandler> getPatternRenderHandlers();
/**
* Opens a wireless grid for the given player.
*
* @param player the player
* @param hand the hand where the wireless grid is in
* @param networkDimension the dimension of the bound network
* @param id the id of the wireless grid, as returned in {@link IWirelessGridRegistry#add(IWirelessGridFactory)}
*/
void openWirelessGrid(EntityPlayer player, EnumHand hand, int networkDimension, int id);
/**
* Notifies the neighbors of a node that there is a node placed at the given position.
*

View File

@@ -0,0 +1,15 @@
package com.raoulvdberge.refinedstorage.api.network.grid;
/**
* The type of grid factory.
*/
public enum GridFactoryType {
/**
* A grid factory for item stacks.
*/
STACK,
/**
* A grid factory for blocks with a position.
*/
BLOCK
}

View File

@@ -0,0 +1,49 @@
package com.raoulvdberge.refinedstorage.api.network.grid;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import javax.annotation.Nullable;
/**
* Creates a grid.
*/
public interface IGridFactory {
/**
* Creates a grid from a stack. Used when {@link #getType()} is STACK.
*
* @param player the player
* @param stack the stack
* @return the grid, or null if a problem occurred
*/
@Nullable
IGrid createFromStack(EntityPlayer player, ItemStack stack);
/**
* Creates a grid from a block. Used when {@link #getType()} is BLOCK.
*
* @param player the player
* @param pos the block position
* @return the grid, or null if a problem occurred
*/
@Nullable
IGrid createFromBlock(EntityPlayer player, BlockPos pos);
/**
* Returns a possible tile for this grid if {@link #getType()} is BLOCK.
*
* @param world the world
* @param pos the position
* @return the tile, or null if no tile is required
*/
@Nullable
TileEntity getRelevantTile(World world, BlockPos pos);
/**
* @return the type
*/
GridFactoryType getType();
}

View File

@@ -0,0 +1,58 @@
package com.raoulvdberge.refinedstorage.api.network.grid;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import org.apache.commons.lang3.tuple.Pair;
import javax.annotation.Nullable;
/**
* Manages {@link IGridFactory} instances and has code that opens grids.
*/
public interface IGridManager {
/**
* @param factory the factory
* @return the id of this factory
*/
int add(IGridFactory factory);
/**
* @param id the id of the factory
* @return the factory, or null if no factory was found
*/
@Nullable
IGridFactory get(int id);
/**
* Opens a grid. Can only be called on the server.
*
* @param id the grid factory id as returned from {@link #add(IGridFactory)}
* @param player the player
* @param pos the block position
*/
void openGrid(int id, EntityPlayerMP player, BlockPos pos);
/**
* Opens a grid. Can only be called on the server.
*
* @param id the grid factory id as returned from {@link #add(IGridFactory)}
* @param player the player
* @param stack the stack
*/
void openGrid(int id, EntityPlayerMP player, ItemStack stack);
/**
* Creates a grid.
*
* @param id the grid factory id as returned from {@link #add(IGridFactory)}
* @param player the player
* @param stack the stack, if there is one
* @param pos the block position, if there is one
* @return a grid, or null if an error has occurred
*/
@Nullable
Pair<IGrid, TileEntity> createGrid(int id, EntityPlayer player, @Nullable ItemStack stack, @Nullable BlockPos pos);
}

View File

@@ -1,23 +0,0 @@
package com.raoulvdberge.refinedstorage.api.network.grid.wireless;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.EnumHand;
import javax.annotation.Nonnull;
/**
* A factory interface for a wireless grid.
*/
public interface IWirelessGridFactory {
/**
* Creates a new wireless grid.
*
* @param player the player
* @param hand the hand
* @param networkDimension the network dimension of the grid
* @return the grid
*/
@Nonnull
IGrid create(EntityPlayer player, EnumHand hand, int networkDimension);
}

View File

@@ -1,28 +0,0 @@
package com.raoulvdberge.refinedstorage.api.network.grid.wireless;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.EnumHand;
import javax.annotation.Nullable;
/**
* A registry for wireless grid factories.
*/
public interface IWirelessGridRegistry {
/**
* Registers a new wireless grid factory.
*
* @param factory the factory
* @return the id of this new wireless grid, use this id in {@link com.raoulvdberge.refinedstorage.api.IRSAPI#openWirelessGrid(EntityPlayer, EnumHand, int, int)}.
*/
int add(IWirelessGridFactory factory);
/**
* Gets a wireless grid factory by id.
*
* @param id the id, as returned by {@link #add(IWirelessGridFactory)}
* @return the wireless grid factory, or null if none is found
*/
@Nullable
IWirelessGridFactory get(int id);
}

View File

@@ -2,7 +2,6 @@ package com.raoulvdberge.refinedstorage.api.network.item;
import com.raoulvdberge.refinedstorage.api.network.INetwork;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.EnumHand;
/**
* Represents a network item (an item that is connected to the network somehow).
@@ -16,19 +15,15 @@ public interface INetworkItem {
EntityPlayer getPlayer();
/**
* Called when the network item is opened.
* Called when the network item is being opened.
*
* @param network the network
* @param player the player
* @param hand the hand
* @return true if the network item can be opened, false otherwise
* @return true if the item can be opened, false otherwise
*/
boolean onOpen(INetwork network, EntityPlayer player, EnumHand hand);
boolean onOpen(INetwork network);
/**
* Called when an action occurs that is defined in {@link NetworkItemAction} and the network item is in use.
*
* @param action the action
* @param energy the energy to extract
*/
void onAction(NetworkItemAction action);
void drainEnergy(int energy);
}

View File

@@ -1,7 +1,7 @@
package com.raoulvdberge.refinedstorage.api.network.item;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.EnumHand;
import net.minecraft.item.ItemStack;
import javax.annotation.Nullable;
@@ -14,16 +14,16 @@ public interface INetworkItemHandler {
* Called when a player opens a network item.
*
* @param player the player that opened the network item
* @param hand the hand the player opened it with
* @param stack the stack that has been opened
*/
void onOpen(EntityPlayer player, EnumHand hand);
void open(EntityPlayer player, ItemStack stack);
/**
* Called when the player closes a network item.
*
* @param player the player that closed the network item
*/
void onClose(EntityPlayer player);
void close(EntityPlayer player);
/**
* Returns a {@link INetworkItem} for a player.
@@ -33,4 +33,10 @@ public interface INetworkItemHandler {
*/
@Nullable
INetworkItem getItem(EntityPlayer player);
/**
* @param player the player
* @param energy energy to extract
*/
void drainEnergy(EntityPlayer player, int energy);
}

View File

@@ -1,36 +0,0 @@
package com.raoulvdberge.refinedstorage.api.network.item;
/**
* Represents an network item action.
* Called with {@link INetworkItem#onAction(NetworkItemAction)}.
*/
public enum NetworkItemAction {
/**
* Used when an item is inserted in a grid.
*/
ITEM_INSERTED,
/**
* Used when an item is extracted in a grid.
*/
ITEM_EXTRACTED,
/**
* Used when an item is crafted in a crafting grid (regular crafting, not autocrafting).
*/
ITEM_CRAFTED,
/**
* Used when a fluid is inserted in a grid.
*/
FLUID_INSERTED,
/**
* Used when a fluid is extracted in a grid.
*/
FLUID_EXTRACTED,
/**
* Used when a crafting task is cancelled in a crafting monitor.
*/
CRAFTING_TASK_CANCELLED,
/**
* Used when all crafting tasks are cancelled in a crafting monitor.
*/
CRAFTING_TASK_ALL_CANCELLED
}

View File

@@ -1,7 +1,5 @@
package com.raoulvdberge.refinedstorage.apiimpl;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.api.IRSAPI;
import com.raoulvdberge.refinedstorage.api.RSAPIInject;
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPatternRenderHandler;
@@ -12,7 +10,7 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.registry.ICraftingTaskRe
import com.raoulvdberge.refinedstorage.api.autocrafting.task.CraftingTaskReadException;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingRequestInfo;
import com.raoulvdberge.refinedstorage.api.network.INetwork;
import com.raoulvdberge.refinedstorage.api.network.grid.wireless.IWirelessGridRegistry;
import com.raoulvdberge.refinedstorage.api.network.grid.IGridManager;
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeManager;
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeProxy;
@@ -33,20 +31,18 @@ import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.CraftingPrev
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.registry.CraftingTaskRegistry;
import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkNodeManager;
import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkNodeRegistry;
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.wireless.WirelessGridRegistry;
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.GridManager;
import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterChannel;
import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterHandlerRegistry;
import com.raoulvdberge.refinedstorage.apiimpl.storage.disk.*;
import com.raoulvdberge.refinedstorage.apiimpl.util.*;
import com.raoulvdberge.refinedstorage.capability.CapabilityNetworkNodeProxy;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraft.world.storage.MapStorage;
@@ -67,7 +63,7 @@ public class API implements IRSAPI {
private ICraftingMonitorElementRegistry craftingMonitorElementRegistry = new CraftingMonitorElementRegistry();
private ICraftingPreviewElementRegistry craftingPreviewElementRegistry = new CraftingPreviewElementRegistry();
private IReaderWriterHandlerRegistry readerWriterHandlerRegistry = new ReaderWriterHandlerRegistry();
private IWirelessGridRegistry gridRegistry = new WirelessGridRegistry();
private IGridManager gridManager = new GridManager();
private IStorageDiskRegistry storageDiskRegistry = new StorageDiskRegistry();
private IStorageDiskSync storageDiskSync = new StorageDiskSync();
private IOneSixMigrationHelper oneSixMigrationHelper = new OneSixMigrationHelper();
@@ -185,8 +181,8 @@ public class API implements IRSAPI {
@Nonnull
@Override
public IWirelessGridRegistry getWirelessGridRegistry() {
return gridRegistry;
public IGridManager getGridManager() {
return gridManager;
}
@Nonnull
@@ -277,11 +273,6 @@ public class API implements IRSAPI {
return patternRenderHandlers;
}
@Override
public void openWirelessGrid(EntityPlayer player, EnumHand hand, int networkDimension, int id) {
player.openGui(RS.INSTANCE, RSGui.WIRELESS_GRID, player.getEntityWorld(), hand.ordinal(), networkDimension, id);
}
@Override
public void discoverNode(World world, BlockPos pos) {
for (EnumFacing facing : EnumFacing.VALUES) {

View File

@@ -0,0 +1,44 @@
package com.raoulvdberge.refinedstorage.apiimpl.network.grid;
import com.raoulvdberge.refinedstorage.api.network.grid.GridFactoryType;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.api.network.grid.IGridFactory;
import com.raoulvdberge.refinedstorage.tile.grid.TileGrid;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import javax.annotation.Nullable;
public class GridFactoryGridBlock implements IGridFactory {
@Override
@Nullable
public IGrid createFromStack(EntityPlayer player, ItemStack stack) {
return null;
}
@Override
@Nullable
public IGrid createFromBlock(EntityPlayer player, BlockPos pos) {
TileEntity tile = getRelevantTile(player.world, pos);
if (tile instanceof TileGrid) {
return ((TileGrid) tile).getNode();
}
return null;
}
@Nullable
@Override
public TileEntity getRelevantTile(World world, BlockPos pos) {
return world.getTileEntity(pos);
}
@Override
public GridFactoryType getType() {
return GridFactoryType.BLOCK;
}
}

View File

@@ -0,0 +1,38 @@
package com.raoulvdberge.refinedstorage.apiimpl.network.grid;
import com.raoulvdberge.refinedstorage.api.network.grid.GridFactoryType;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.api.network.grid.IGridFactory;
import com.raoulvdberge.refinedstorage.tile.grid.portable.PortableGrid;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import javax.annotation.Nullable;
public class GridFactoryPortableGrid implements IGridFactory {
@Nullable
@Override
public IGrid createFromStack(EntityPlayer player, ItemStack stack) {
return new PortableGrid(player, stack);
}
@Nullable
@Override
public IGrid createFromBlock(EntityPlayer player, BlockPos pos) {
return null;
}
@Nullable
@Override
public TileEntity getRelevantTile(World world, BlockPos pos) {
return null;
}
@Override
public GridFactoryType getType() {
return GridFactoryType.STACK;
}
}

View File

@@ -0,0 +1,44 @@
package com.raoulvdberge.refinedstorage.apiimpl.network.grid;
import com.raoulvdberge.refinedstorage.api.network.grid.GridFactoryType;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.api.network.grid.IGridFactory;
import com.raoulvdberge.refinedstorage.tile.grid.portable.TilePortableGrid;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import javax.annotation.Nullable;
public class GridFactoryPortableGridBlock implements IGridFactory {
@Override
@Nullable
public IGrid createFromStack(EntityPlayer player, ItemStack stack) {
return null;
}
@Override
@Nullable
public IGrid createFromBlock(EntityPlayer player, BlockPos pos) {
TileEntity tile = getRelevantTile(player.world, pos);
if (tile instanceof TilePortableGrid) {
return (TilePortableGrid) tile;
}
return null;
}
@Nullable
@Override
public TileEntity getRelevantTile(World world, BlockPos pos) {
return world.getTileEntity(pos);
}
@Override
public GridFactoryType getType() {
return GridFactoryType.BLOCK;
}
}

View File

@@ -0,0 +1,38 @@
package com.raoulvdberge.refinedstorage.apiimpl.network.grid;
import com.raoulvdberge.refinedstorage.api.network.grid.GridFactoryType;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.api.network.grid.IGridFactory;
import com.raoulvdberge.refinedstorage.tile.grid.WirelessFluidGrid;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import javax.annotation.Nullable;
public class GridFactoryWirelessFluidGrid implements IGridFactory {
@Nullable
@Override
public IGrid createFromStack(EntityPlayer player, ItemStack stack) {
return new WirelessFluidGrid(stack);
}
@Nullable
@Override
public IGrid createFromBlock(EntityPlayer player, BlockPos pos) {
return null;
}
@Nullable
@Override
public TileEntity getRelevantTile(World world, BlockPos pos) {
return null;
}
@Override
public GridFactoryType getType() {
return GridFactoryType.STACK;
}
}

View File

@@ -0,0 +1,38 @@
package com.raoulvdberge.refinedstorage.apiimpl.network.grid;
import com.raoulvdberge.refinedstorage.api.network.grid.GridFactoryType;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.api.network.grid.IGridFactory;
import com.raoulvdberge.refinedstorage.tile.grid.WirelessGrid;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import javax.annotation.Nullable;
public class GridFactoryWirelessGrid implements IGridFactory {
@Nullable
@Override
public IGrid createFromStack(EntityPlayer player, ItemStack stack) {
return new WirelessGrid(stack);
}
@Nullable
@Override
public IGrid createFromBlock(EntityPlayer player, BlockPos pos) {
return null;
}
@Nullable
@Override
public TileEntity getRelevantTile(World world, BlockPos pos) {
return null;
}
@Override
public GridFactoryType getType() {
return GridFactoryType.STACK;
}
}

View File

@@ -0,0 +1,100 @@
package com.raoulvdberge.refinedstorage.apiimpl.network.grid;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.api.network.grid.IGridFactory;
import com.raoulvdberge.refinedstorage.api.network.grid.IGridManager;
import com.raoulvdberge.refinedstorage.container.ContainerGrid;
import com.raoulvdberge.refinedstorage.gui.ResizableDisplayDummy;
import com.raoulvdberge.refinedstorage.network.MessageGridOpen;
import com.raoulvdberge.refinedstorage.tile.TileBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.PlayerContainerEvent;
import org.apache.commons.lang3.tuple.Pair;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
public class GridManager implements IGridManager {
private List<IGridFactory> factories = new ArrayList<>();
@Override
public int add(IGridFactory factory) {
factories.add(factory);
return factories.size() - 1;
}
@Override
@Nullable
public IGridFactory get(int id) {
if (id < 0 || id >= factories.size()) {
return null;
}
return factories.get(id);
}
@Override
public void openGrid(int id, EntityPlayerMP player, BlockPos pos) {
openGrid(id, player, null, pos);
}
@Override
public void openGrid(int id, EntityPlayerMP player, ItemStack stack) {
openGrid(id, player, stack, null);
}
private void openGrid(int id, EntityPlayerMP player, @Nullable ItemStack stack, @Nullable BlockPos pos) {
Pair<IGrid, TileEntity> grid = createGrid(id, player, stack, pos);
if (grid == null) {
return;
}
// @Volatile: FMLNetworkHandler#openGui
player.getNextWindowId();
player.closeContainer();
player.openContainer = new ContainerGrid(grid.getLeft(), new ResizableDisplayDummy(), grid.getRight() instanceof TileBase ? (TileBase) grid.getRight() : null, player);
player.openContainer.windowId = player.currentWindowId;
player.openContainer.addListener(player);
MinecraftForge.EVENT_BUS.post(new PlayerContainerEvent.Open(player, player.openContainer));
RS.INSTANCE.network.sendTo(new MessageGridOpen(player.currentWindowId, pos, id, stack), player);
}
@Override
@Nullable
public Pair<IGrid, TileEntity> createGrid(int id, EntityPlayer player, @Nullable ItemStack stack, @Nullable BlockPos pos) {
IGridFactory factory = get(id);
if (factory == null) {
return null;
}
IGrid grid = null;
TileEntity tile = factory.getRelevantTile(player.world, pos);
switch (factory.getType()) {
case STACK:
grid = factory.createFromStack(player, stack);
break;
case BLOCK:
grid = factory.createFromBlock(player, pos);
break;
}
if (grid == null) {
return null;
}
return Pair.of(grid, tile);
}
}

View File

@@ -0,0 +1,42 @@
package com.raoulvdberge.refinedstorage.apiimpl.network.grid;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.container.ContainerGrid;
import com.raoulvdberge.refinedstorage.gui.grid.GuiGrid;
import com.raoulvdberge.refinedstorage.network.MessageGridOpen;
import com.raoulvdberge.refinedstorage.tile.TileBase;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.fml.client.FMLClientHandler;
import org.apache.commons.lang3.tuple.Pair;
public class GridOpenHandler implements Runnable {
private MessageGridOpen message;
public GridOpenHandler(MessageGridOpen message) {
this.message = message;
}
@Override
public void run() {
EntityPlayer player = Minecraft.getMinecraft().player;
Pair<IGrid, TileEntity> grid = API.instance().getGridManager().createGrid(message.getGridId(), player, message.getStack(), message.getPos());
if (grid == null) {
return;
}
GuiGrid gui = new GuiGrid(null, grid.getLeft());
// @Volatile: Just set the windowId: from OpenGuiHandler#process
player.openContainer = new ContainerGrid(grid.getLeft(), gui, grid.getRight() instanceof TileBase ? (TileBase) grid.getRight() : null, player);
player.openContainer.windowId = message.getWindowId();
gui.inventorySlots = player.openContainer;
FMLClientHandler.instance().showGuiScreen(gui);
}
}

View File

@@ -6,8 +6,6 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTaskError;
import com.raoulvdberge.refinedstorage.api.network.INetwork;
import com.raoulvdberge.refinedstorage.api.network.grid.handler.IFluidGridHandler;
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem;
import com.raoulvdberge.refinedstorage.api.network.item.NetworkItemAction;
import com.raoulvdberge.refinedstorage.api.network.security.Permission;
import com.raoulvdberge.refinedstorage.api.util.Action;
import com.raoulvdberge.refinedstorage.api.util.IStackList;
@@ -78,11 +76,7 @@ public class FluidGridHandler implements IFluidGridHandler {
player.updateHeldItem();
}
INetworkItem networkItem = network.getNetworkItemHandler().getItem(player);
if (networkItem != null) {
networkItem.onAction(NetworkItemAction.FLUID_EXTRACTED);
}
network.getNetworkItemHandler().drainEnergy(player, RS.INSTANCE.config.wirelessFluidGridExtractUsage);
}
}
}
@@ -103,11 +97,7 @@ public class FluidGridHandler implements IFluidGridHandler {
network.insertFluid(result.getValue(), result.getValue().amount, Action.PERFORM);
INetworkItem networkItem = network.getNetworkItemHandler().getItem(player);
if (networkItem != null) {
networkItem.onAction(NetworkItemAction.FLUID_INSERTED);
}
network.getNetworkItemHandler().drainEnergy(player, RS.INSTANCE.config.wirelessFluidGridInsertUsage);
return result.getLeft();
}

View File

@@ -6,8 +6,6 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTaskError;
import com.raoulvdberge.refinedstorage.api.network.INetwork;
import com.raoulvdberge.refinedstorage.api.network.grid.handler.IItemGridHandler;
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem;
import com.raoulvdberge.refinedstorage.api.network.item.NetworkItemAction;
import com.raoulvdberge.refinedstorage.api.network.security.Permission;
import com.raoulvdberge.refinedstorage.api.util.Action;
import com.raoulvdberge.refinedstorage.api.util.IStackList;
@@ -108,11 +106,7 @@ public class ItemGridHandler implements IItemGridHandler {
}
}
INetworkItem networkItem = network.getNetworkItemHandler().getItem(player);
if (networkItem != null) {
networkItem.onAction(NetworkItemAction.ITEM_EXTRACTED);
}
network.getNetworkItemHandler().drainEnergy(player, RS.INSTANCE.config.wirelessGridExtractUsage);
}
}
@@ -126,11 +120,7 @@ public class ItemGridHandler implements IItemGridHandler {
ItemStack remainder = network.insertItem(stack, stack.getCount(), Action.PERFORM);
INetworkItem networkItem = network.getNetworkItemHandler().getItem(player);
if (networkItem != null) {
networkItem.onAction(NetworkItemAction.ITEM_INSERTED);
}
network.getNetworkItemHandler().drainEnergy(player, RS.INSTANCE.config.wirelessGridInsertUsage);
return remainder;
}
@@ -162,11 +152,7 @@ public class ItemGridHandler implements IItemGridHandler {
player.updateHeldItem();
INetworkItem networkItem = network.getNetworkItemHandler().getItem(player);
if (networkItem != null) {
networkItem.onAction(NetworkItemAction.ITEM_INSERTED);
}
network.getNetworkItemHandler().drainEnergy(player, RS.INSTANCE.config.wirelessGridInsertUsage);
}
@Override
@@ -257,10 +243,6 @@ public class ItemGridHandler implements IItemGridHandler {
network.getCraftingManager().cancel(id);
INetworkItem networkItem = network.getNetworkItemHandler().getItem(player);
if (networkItem != null) {
networkItem.onAction(id == null ? NetworkItemAction.CRAFTING_TASK_ALL_CANCELLED : NetworkItemAction.CRAFTING_TASK_CANCELLED);
}
network.getNetworkItemHandler().drainEnergy(player, id == null ? RS.INSTANCE.config.wirelessCraftingMonitorCancelAllUsage : RS.INSTANCE.config.wirelessCraftingMonitorCancelUsage);
}
}

View File

@@ -1,17 +0,0 @@
package com.raoulvdberge.refinedstorage.apiimpl.network.grid.wireless;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.api.network.grid.wireless.IWirelessGridFactory;
import com.raoulvdberge.refinedstorage.tile.grid.portable.PortableGrid;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.EnumHand;
import javax.annotation.Nonnull;
public class WirelessGridFactoryPortableGrid implements IWirelessGridFactory {
@Nonnull
@Override
public IGrid create(EntityPlayer player, EnumHand hand, int networkDimension) {
return new PortableGrid(player, player.getHeldItem(hand));
}
}

View File

@@ -1,17 +0,0 @@
package com.raoulvdberge.refinedstorage.apiimpl.network.grid.wireless;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.api.network.grid.wireless.IWirelessGridFactory;
import com.raoulvdberge.refinedstorage.tile.grid.WirelessFluidGrid;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.EnumHand;
import javax.annotation.Nonnull;
public class WirelessGridFactoryWirelessFluidGrid implements IWirelessGridFactory {
@Nonnull
@Override
public IGrid create(EntityPlayer player, EnumHand hand, int networkDimension) {
return new WirelessFluidGrid(networkDimension, player.getHeldItem(hand));
}
}

View File

@@ -1,17 +0,0 @@
package com.raoulvdberge.refinedstorage.apiimpl.network.grid.wireless;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.api.network.grid.wireless.IWirelessGridFactory;
import com.raoulvdberge.refinedstorage.tile.grid.WirelessGrid;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.EnumHand;
import javax.annotation.Nonnull;
public class WirelessGridFactoryWirelessGrid implements IWirelessGridFactory {
@Nonnull
@Override
public IGrid create(EntityPlayer player, EnumHand hand, int networkDimension) {
return new WirelessGrid(networkDimension, player.getHeldItem(hand));
}
}

View File

@@ -1,26 +0,0 @@
package com.raoulvdberge.refinedstorage.apiimpl.network.grid.wireless;
import com.raoulvdberge.refinedstorage.api.network.grid.wireless.IWirelessGridFactory;
import com.raoulvdberge.refinedstorage.api.network.grid.wireless.IWirelessGridRegistry;
import javax.annotation.Nullable;
import java.util.HashMap;
import java.util.Map;
public class WirelessGridRegistry implements IWirelessGridRegistry {
private int lastId = 0;
private Map<Integer, IWirelessGridFactory> factories = new HashMap<>();
@Override
public int add(IWirelessGridFactory factory) {
factories.put(lastId, factory);
return lastId++;
}
@Nullable
@Override
public IWirelessGridFactory get(int id) {
return factories.get(id);
}
}

View File

@@ -7,7 +7,7 @@ import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemProvider;
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.EnumHand;
import net.minecraft.item.ItemStack;
import net.minecraft.util.text.TextComponentTranslation;
import java.util.Map;
@@ -23,7 +23,7 @@ public class NetworkItemHandler implements INetworkItemHandler {
}
@Override
public void onOpen(EntityPlayer player, EnumHand hand) {
public void open(EntityPlayer player, ItemStack stack) {
boolean inRange = false;
for (INetworkNode node : network.getNodeGraph().all()) {
@@ -46,15 +46,15 @@ public class NetworkItemHandler implements INetworkItemHandler {
return;
}
INetworkItem item = ((INetworkItemProvider) player.getHeldItem(hand).getItem()).provide(this, player, player.getHeldItem(hand));
INetworkItem item = ((INetworkItemProvider) stack.getItem()).provide(this, player, stack);
if (item.onOpen(network, player, hand)) {
if (item.onOpen(network)) {
items.put(player, item);
}
}
@Override
public void onClose(EntityPlayer player) {
public void close(EntityPlayer player) {
items.remove(player);
}
@@ -62,4 +62,13 @@ public class NetworkItemHandler implements INetworkItemHandler {
public INetworkItem getItem(EntityPlayer player) {
return items.get(player);
}
@Override
public void drainEnergy(EntityPlayer player, int energy) {
INetworkItem item = getItem(player);
if (item != null) {
item.drainEnergy(energy);
}
}
}

View File

@@ -5,13 +5,11 @@ import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.api.network.INetwork;
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem;
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
import com.raoulvdberge.refinedstorage.api.network.item.NetworkItemAction;
import com.raoulvdberge.refinedstorage.api.network.security.Permission;
import com.raoulvdberge.refinedstorage.item.ItemWirelessCraftingMonitor;
import com.raoulvdberge.refinedstorage.util.WorldUtils;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumHand;
import net.minecraftforge.energy.CapabilityEnergy;
import net.minecraftforge.energy.IEnergyStorage;
@@ -19,11 +17,13 @@ public class NetworkItemWirelessCraftingMonitor implements INetworkItem {
private INetworkItemHandler handler;
private EntityPlayer player;
private ItemStack stack;
private int invIndex;
public NetworkItemWirelessCraftingMonitor(INetworkItemHandler handler, EntityPlayer player, ItemStack stack) {
public NetworkItemWirelessCraftingMonitor(INetworkItemHandler handler, EntityPlayer player, ItemStack stack, int invIndex) {
this.handler = handler;
this.player = player;
this.stack = stack;
this.invIndex = invIndex;
}
@Override
@@ -32,7 +32,7 @@ public class NetworkItemWirelessCraftingMonitor implements INetworkItem {
}
@Override
public boolean onOpen(INetwork network, EntityPlayer player, EnumHand hand) {
public boolean onOpen(INetwork network) {
if (RS.INSTANCE.config.wirelessCraftingMonitorUsesEnergy && stack.getItemDamage() != ItemWirelessCraftingMonitor.TYPE_CREATIVE && stack.getCapability(CapabilityEnergy.ENERGY, null).getEnergyStored() <= RS.INSTANCE.config.wirelessCraftingMonitorOpenUsage) {
return false;
}
@@ -43,7 +43,7 @@ public class NetworkItemWirelessCraftingMonitor implements INetworkItem {
return false;
}
player.openGui(RS.INSTANCE, RSGui.WIRELESS_CRAFTING_MONITOR, player.getEntityWorld(), hand.ordinal(), network.world().provider.getDimension(), 0);
player.openGui(RS.INSTANCE, RSGui.WIRELESS_CRAFTING_MONITOR, player.getEntityWorld(), invIndex, 0, 0);
drainEnergy(RS.INSTANCE.config.wirelessCraftingMonitorOpenUsage);
@@ -51,25 +51,14 @@ public class NetworkItemWirelessCraftingMonitor implements INetworkItem {
}
@Override
public void onAction(NetworkItemAction action) {
switch (action) {
case CRAFTING_TASK_CANCELLED:
drainEnergy(RS.INSTANCE.config.wirelessCraftingMonitorCancelUsage);
break;
case CRAFTING_TASK_ALL_CANCELLED:
drainEnergy(RS.INSTANCE.config.wirelessCraftingMonitorCancelAllUsage);
break;
}
}
private void drainEnergy(int energy) {
public void drainEnergy(int energy) {
if (RS.INSTANCE.config.wirelessCraftingMonitorUsesEnergy && stack.getItemDamage() != ItemWirelessCraftingMonitor.TYPE_CREATIVE) {
IEnergyStorage energyStorage = stack.getCapability(CapabilityEnergy.ENERGY, null);
energyStorage.extractEnergy(energy, false);
if (energyStorage.getEnergyStored() <= 0) {
handler.onClose(player);
handler.close(player);
player.closeScreen();
}

View File

@@ -4,15 +4,14 @@ import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.network.INetwork;
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem;
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
import com.raoulvdberge.refinedstorage.api.network.item.NetworkItemAction;
import com.raoulvdberge.refinedstorage.api.network.security.Permission;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.item.ItemWirelessFluidGrid;
import com.raoulvdberge.refinedstorage.tile.grid.WirelessFluidGrid;
import com.raoulvdberge.refinedstorage.util.WorldUtils;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumHand;
import net.minecraftforge.energy.CapabilityEnergy;
import net.minecraftforge.energy.IEnergyStorage;
@@ -33,7 +32,7 @@ public class NetworkItemWirelessFluidGrid implements INetworkItem {
}
@Override
public boolean onOpen(INetwork network, EntityPlayer player, EnumHand hand) {
public boolean onOpen(INetwork network) {
if (RS.INSTANCE.config.wirelessFluidGridUsesEnergy && stack.getItemDamage() != ItemWirelessFluidGrid.TYPE_CREATIVE && stack.getCapability(CapabilityEnergy.ENERGY, null).getEnergyStored() <= RS.INSTANCE.config.wirelessFluidGridOpenUsage) {
return false;
}
@@ -44,7 +43,7 @@ public class NetworkItemWirelessFluidGrid implements INetworkItem {
return false;
}
API.instance().openWirelessGrid(player, hand, network.world().provider.getDimension(), WirelessFluidGrid.ID);
API.instance().getGridManager().openGrid(WirelessFluidGrid.ID, (EntityPlayerMP) player, stack);
drainEnergy(RS.INSTANCE.config.wirelessFluidGridOpenUsage);
@@ -52,25 +51,14 @@ public class NetworkItemWirelessFluidGrid implements INetworkItem {
}
@Override
public void onAction(NetworkItemAction action) {
switch (action) {
case FLUID_INSERTED:
drainEnergy(RS.INSTANCE.config.wirelessFluidGridInsertUsage);
break;
case FLUID_EXTRACTED:
drainEnergy(RS.INSTANCE.config.wirelessFluidGridExtractUsage);
break;
}
}
private void drainEnergy(int energy) {
public void drainEnergy(int energy) {
if (RS.INSTANCE.config.wirelessFluidGridUsesEnergy && stack.getItemDamage() != ItemWirelessFluidGrid.TYPE_CREATIVE) {
IEnergyStorage energyStorage = stack.getCapability(CapabilityEnergy.ENERGY, null);
energyStorage.extractEnergy(energy, false);
if (energyStorage.getEnergyStored() <= 0) {
handler.onClose(player);
handler.close(player);
player.closeScreen();
}

View File

@@ -4,15 +4,14 @@ import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.network.INetwork;
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem;
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
import com.raoulvdberge.refinedstorage.api.network.item.NetworkItemAction;
import com.raoulvdberge.refinedstorage.api.network.security.Permission;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.item.ItemWirelessGrid;
import com.raoulvdberge.refinedstorage.tile.grid.WirelessGrid;
import com.raoulvdberge.refinedstorage.util.WorldUtils;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumHand;
import net.minecraftforge.energy.CapabilityEnergy;
import net.minecraftforge.energy.IEnergyStorage;
@@ -33,7 +32,7 @@ public class NetworkItemWirelessGrid implements INetworkItem {
}
@Override
public boolean onOpen(INetwork network, EntityPlayer player, EnumHand hand) {
public boolean onOpen(INetwork network) {
if (RS.INSTANCE.config.wirelessGridUsesEnergy && stack.getItemDamage() != ItemWirelessGrid.TYPE_CREATIVE && stack.getCapability(CapabilityEnergy.ENERGY, null).getEnergyStored() <= RS.INSTANCE.config.wirelessGridOpenUsage) {
return false;
}
@@ -44,7 +43,7 @@ public class NetworkItemWirelessGrid implements INetworkItem {
return false;
}
API.instance().openWirelessGrid(player, hand, network.world().provider.getDimension(), WirelessGrid.ID);
API.instance().getGridManager().openGrid(WirelessGrid.ID, (EntityPlayerMP) player, stack);
drainEnergy(RS.INSTANCE.config.wirelessGridOpenUsage);
@@ -52,25 +51,14 @@ public class NetworkItemWirelessGrid implements INetworkItem {
}
@Override
public void onAction(NetworkItemAction action) {
switch (action) {
case ITEM_INSERTED:
drainEnergy(RS.INSTANCE.config.wirelessGridInsertUsage);
break;
case ITEM_EXTRACTED:
drainEnergy(RS.INSTANCE.config.wirelessGridExtractUsage);
break;
}
}
private void drainEnergy(int energy) {
public void drainEnergy(int energy) {
if (RS.INSTANCE.config.wirelessGridUsesEnergy && stack.getItemDamage() != ItemWirelessGrid.TYPE_CREATIVE) {
IEnergyStorage energyStorage = stack.getCapability(CapabilityEnergy.ENERGY, null);
energyStorage.extractEnergy(energy, false);
if (energyStorage.getEnergyStored() <= 0) {
handler.onClose(player);
handler.close(player);
player.closeScreen();
}

View File

@@ -7,8 +7,6 @@ import com.raoulvdberge.refinedstorage.api.network.INetwork;
import com.raoulvdberge.refinedstorage.api.network.grid.*;
import com.raoulvdberge.refinedstorage.api.network.grid.handler.IFluidGridHandler;
import com.raoulvdberge.refinedstorage.api.network.grid.handler.IItemGridHandler;
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem;
import com.raoulvdberge.refinedstorage.api.network.item.NetworkItemAction;
import com.raoulvdberge.refinedstorage.api.network.security.Permission;
import com.raoulvdberge.refinedstorage.api.storage.IStorageCache;
import com.raoulvdberge.refinedstorage.api.storage.IStorageCacheListener;
@@ -58,6 +56,7 @@ import java.util.Set;
public class NetworkNodeGrid extends NetworkNode implements IGridNetworkAware, IType {
public static final String ID = "grid";
public static int FACTORY_ID = 0;
public static final String NBT_VIEW_TYPE = "ViewType";
public static final String NBT_SORTING_DIRECTION = "SortingDirection";
@@ -496,14 +495,6 @@ public class NetworkNodeGrid extends NetworkNode implements IGridNetworkAware, I
}
grid.onCraftingMatrixChanged();
if (network != null) {
INetworkItem networkItem = network.getNetworkItemHandler().getItem(player);
if (networkItem != null) {
networkItem.onAction(NetworkItemAction.ITEM_CRAFTED);
}
}
}
@Override

View File

@@ -1,8 +1,9 @@
package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.api.network.grid.GridType;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeGrid;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.item.itemblock.ItemBlockBase;
@@ -15,6 +16,7 @@ import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockRenderLayer;
@@ -89,7 +91,7 @@ public class BlockGrid extends BlockNode {
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
return openNetworkGui(RSGui.GRID, player, world, pos, side);
return openNetworkGui(player, world, pos, side, () -> API.instance().getGridManager().openGrid(NetworkNodeGrid.FACTORY_ID, (EntityPlayerMP) player, pos));
}
@Override

View File

@@ -58,6 +58,14 @@ public abstract class BlockNodeProxy extends BlockBase {
}
protected boolean openNetworkGui(int guiId, EntityPlayer player, World world, BlockPos pos, EnumFacing facing, Permission... permissions) {
return openNetworkGui(player, world, pos, facing, () -> player.openGui(info.getModObject(), guiId, world, pos.getX(), pos.getY(), pos.getZ()), permissions);
}
protected boolean openNetworkGui(EntityPlayer player, World world, BlockPos pos, EnumFacing facing, Runnable action) {
return openNetworkGui(player, world, pos, facing, action, Permission.MODIFY);
}
protected boolean openNetworkGui(EntityPlayer player, World world, BlockPos pos, EnumFacing facing, Runnable action, Permission... permissions) {
if (world.isRemote) {
return true;
}
@@ -79,7 +87,7 @@ public abstract class BlockNodeProxy extends BlockBase {
}
}
player.openGui(info.getModObject(), guiId, world, pos.getX(), pos.getY(), pos.getZ());
action.run();
return true;
}

View File

@@ -1,7 +1,7 @@
package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.block.enums.PortableGridDiskState;
import com.raoulvdberge.refinedstorage.block.enums.PortableGridType;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
@@ -21,6 +21,7 @@ import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.block.statemap.StateMap;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
@@ -131,7 +132,7 @@ public class BlockPortableGrid extends BlockBase {
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!world.isRemote) {
player.openGui(RS.INSTANCE, RSGui.PORTABLE_GRID, world, pos.getX(), pos.getY(), pos.getZ());
API.instance().getGridManager().openGrid(TilePortableGrid.FACTORY_ID, (EntityPlayerMP) player, pos);
((TilePortableGrid) world.getTileEntity(pos)).onOpened();
}

View File

@@ -1,17 +1,12 @@
package com.raoulvdberge.refinedstorage.gui;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.IGuiReaderWriter;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeCraftingMonitor;
import com.raoulvdberge.refinedstorage.container.*;
import com.raoulvdberge.refinedstorage.gui.grid.GuiGrid;
import com.raoulvdberge.refinedstorage.tile.*;
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.WirelessCraftingMonitor;
import com.raoulvdberge.refinedstorage.tile.grid.TileGrid;
import com.raoulvdberge.refinedstorage.tile.grid.portable.TilePortableGrid;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.tileentity.TileEntity;
@@ -25,10 +20,6 @@ public class GuiHandler implements IGuiHandler {
switch (ID) {
case RSGui.CONTROLLER:
return new ContainerController((TileController) tile, player);
case RSGui.GRID:
return new ContainerGrid(((TileGrid) tile).getNode(), new ResizableDisplayDummy(), (TileGrid) tile, player);
case RSGui.PORTABLE_GRID:
return new ContainerGrid((TilePortableGrid) tile, new ResizableDisplayDummy(), (TilePortableGrid) tile, player);
case RSGui.DISK_DRIVE:
return new ContainerDiskDrive((TileDiskDrive) tile, player);
case RSGui.IMPORTER:
@@ -78,12 +69,10 @@ public class GuiHandler implements IGuiHandler {
@Override
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
if (ID == RSGui.WIRELESS_GRID) {
return getGridContainer(player, x, y, z);
} else if (ID == RSGui.FILTER) {
if (ID == RSGui.FILTER) {
return getFilterContainer(player, x);
} else if (ID == RSGui.WIRELESS_CRAFTING_MONITOR) {
return getCraftingMonitorContainer(player, x, y);
return getCraftingMonitorContainer(player, x);
}
return getContainer(ID, player, world.getTileEntity(new BlockPos(x, y, z)));
@@ -96,15 +85,6 @@ public class GuiHandler implements IGuiHandler {
switch (ID) {
case RSGui.CONTROLLER:
return new GuiController((ContainerController) getContainer(ID, player, tile), (TileController) tile);
case RSGui.GRID:
case RSGui.PORTABLE_GRID: {
IGrid grid = ID == RSGui.GRID ? ((TileGrid) tile).getNode() : (TilePortableGrid) tile;
GuiGrid gui = new GuiGrid(null, grid);
gui.inventorySlots = new ContainerGrid(grid, gui, null, player);
return gui;
}
case RSGui.WIRELESS_GRID:
return getGridGui(player, x, y, z);
case RSGui.DISK_DRIVE:
return new GuiStorage((ContainerDiskDrive) getContainer(ID, player, tile), ((TileDiskDrive) tile).getNode(), "gui/disk_drive.png");
case RSGui.IMPORTER:
@@ -146,7 +126,7 @@ public class GuiHandler implements IGuiHandler {
case RSGui.DISK_MANIPULATOR:
return new GuiDiskManipulator((ContainerDiskManipulator) getContainer(ID, player, tile));
case RSGui.WIRELESS_CRAFTING_MONITOR:
return getCraftingMonitorGui(player, x, y);
return getWirelessCraftingMonitorGui(player, x);
case RSGui.READER_WRITER:
return new GuiReaderWriter((ContainerReaderWriter) getContainer(ID, player, tile), (IGuiReaderWriter) ((TileNode) tile).getNode());
case RSGui.SECURITY_MANAGER:
@@ -162,36 +142,20 @@ public class GuiHandler implements IGuiHandler {
}
}
private IGrid getGrid(EntityPlayer player, int hand, int networkDimension, int id) {
return API.instance().getWirelessGridRegistry().get(id).create(player, EnumHand.values()[hand], networkDimension);
private WirelessCraftingMonitor getWirelessCraftingMonitor(EntityPlayer player, int invIndex) {
return new WirelessCraftingMonitor(player.inventory.getStackInSlot(invIndex));
}
private GuiGrid getGridGui(EntityPlayer player, int hand, int networkDimension, int id) {
IGrid grid = getGrid(player, hand, networkDimension, id);
GuiGrid gui = new GuiGrid(null, grid);
gui.inventorySlots = new ContainerGrid(grid, gui, null, player);
return gui;
}
private ContainerGrid getGridContainer(EntityPlayer player, int hand, int networkDimension, int id) {
return new ContainerGrid(getGrid(player, hand, networkDimension, id), new ResizableDisplayDummy(), null, player);
}
private WirelessCraftingMonitor getCraftingMonitor(EntityPlayer player, int hand, int networkDimension) {
return new WirelessCraftingMonitor(networkDimension, player.getHeldItem(EnumHand.values()[hand]));
}
private GuiCraftingMonitor getCraftingMonitorGui(EntityPlayer player, int hand, int networkDimension) {
WirelessCraftingMonitor craftingMonitor = getCraftingMonitor(player, hand, networkDimension);
private GuiCraftingMonitor getWirelessCraftingMonitorGui(EntityPlayer player, int invIndex) {
WirelessCraftingMonitor craftingMonitor = getWirelessCraftingMonitor(player, invIndex);
GuiCraftingMonitor gui = new GuiCraftingMonitor(null, craftingMonitor);
gui.inventorySlots = new ContainerCraftingMonitor(craftingMonitor, null, player);
return gui;
}
private ContainerCraftingMonitor getCraftingMonitorContainer(EntityPlayer player, int hand, int networkDimension) {
return new ContainerCraftingMonitor(getCraftingMonitor(player, hand, networkDimension), null, player);
private ContainerCraftingMonitor getCraftingMonitorContainer(EntityPlayer player, int invIndex) {
return new ContainerCraftingMonitor(getWirelessCraftingMonitor(player, invIndex), null, player);
}
private ContainerFilter getFilterContainer(EntityPlayer player, int hand) {

View File

@@ -0,0 +1,43 @@
package com.raoulvdberge.refinedstorage.gui;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSBlocks;
import com.raoulvdberge.refinedstorage.RSItems;
import com.raoulvdberge.refinedstorage.RSKeyBindings;
import com.raoulvdberge.refinedstorage.network.MessageNetworkItemOpen;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.InputEvent;
public class KeyInputListener {
@SubscribeEvent
public void onKeyInput(InputEvent.KeyInputEvent e) {
InventoryPlayer inv = Minecraft.getMinecraft().player.inventory;
if (RSKeyBindings.OPEN_WIRELESS_GRID.isKeyDown()) {
findAndOpen(inv, RSItems.WIRELESS_GRID);
} else if (RSKeyBindings.OPEN_WIRELESS_FLUID_GRID.isKeyDown()) {
findAndOpen(inv, RSItems.WIRELESS_FLUID_GRID);
} else if (RSKeyBindings.OPEN_PORTABLE_GRID.isKeyDown()) {
findAndOpen(inv, Item.getItemFromBlock(RSBlocks.PORTABLE_GRID));
} else if (RSKeyBindings.OPEN_WIRELESS_CRAFTING_MONITOR.isKeyDown()) {
findAndOpen(inv, RSItems.WIRELESS_CRAFTING_MONITOR);
}
}
private void findAndOpen(IInventory inv, Item search) {
for (int i = 0; i < inv.getSizeInventory(); ++i) {
ItemStack slot = inv.getStackInSlot(i);
if (slot.getItem() == search) {
RS.INSTANCE.network.sendToServer(new MessageNetworkItemOpen(i));
return;
}
}
}
}

View File

@@ -47,7 +47,7 @@ public abstract class ItemNetworkItem extends ItemEnergyItem implements INetwork
ItemStack stack = player.getHeldItem(hand);
if (!world.isRemote) {
applyNetwork(stack, n -> n.getNetworkItemHandler().onOpen(player, hand), player::sendMessage);
applyNetwork(stack, n -> n.getNetworkItemHandler().open(player, player.getHeldItem(hand)), player::sendMessage);
}
return ActionResult.newResult(EnumActionResult.SUCCESS, stack);

View File

@@ -34,7 +34,15 @@ public class ItemWirelessCraftingMonitor extends ItemNetworkItem {
@Override
@Nonnull
public INetworkItem provide(INetworkItemHandler handler, EntityPlayer player, ItemStack stack) {
return new NetworkItemWirelessCraftingMonitor(handler, player, stack);
int invIndex = 0;
for (int i = 0; i < player.inventory.getSizeInventory(); ++i) {
if (player.inventory.getStackInSlot(i) == stack) {
invIndex = i;
break;
}
}
return new NetworkItemWirelessCraftingMonitor(handler, player, stack, invIndex);
}
public static Optional<UUID> getTabSelected(ItemStack stack) {

View File

@@ -8,6 +8,7 @@ import com.raoulvdberge.refinedstorage.tile.grid.portable.PortableGrid;
import net.minecraft.client.resources.I18n;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult;
@@ -29,7 +30,7 @@ public class ItemBlockPortableGrid extends ItemBlockEnergyItem {
ItemStack stack = player.getHeldItem(hand);
if (!world.isRemote) {
API.instance().openWirelessGrid(player, hand, world.provider.getDimension(), PortableGrid.ID);
API.instance().getGridManager().openGrid(PortableGrid.ID, (EntityPlayerMP) player, stack);
}
return ActionResult.newResult(EnumActionResult.SUCCESS, stack);

View File

@@ -0,0 +1,93 @@
package com.raoulvdberge.refinedstorage.network;
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.GridOpenHandler;
import io.netty.buffer.ByteBuf;
import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos;
import net.minecraftforge.fml.common.network.ByteBufUtils;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
import javax.annotation.Nullable;
public class MessageGridOpen implements IMessage, IMessageHandler<MessageGridOpen, IMessage> {
private int windowId;
@Nullable
private BlockPos pos;
@Nullable
private ItemStack stack;
private int gridId;
public MessageGridOpen() {
}
public MessageGridOpen(int windowId, @Nullable BlockPos pos, int gridId, @Nullable ItemStack stack) {
if (pos == null && stack == null) {
throw new IllegalArgumentException("Can't be both null");
}
this.windowId = windowId;
this.pos = pos;
this.stack = stack;
this.gridId = gridId;
}
@Override
public void fromBytes(ByteBuf buf) {
windowId = buf.readInt();
gridId = buf.readInt();
if (buf.readBoolean()) {
pos = new BlockPos(buf.readInt(), buf.readInt(), buf.readInt());
}
if (buf.readBoolean()) {
stack = ByteBufUtils.readItemStack(buf);
}
}
@Override
public void toBytes(ByteBuf buf) {
buf.writeInt(windowId);
buf.writeInt(gridId);
buf.writeBoolean(pos != null);
if (pos != null) {
buf.writeInt(pos.getX());
buf.writeInt(pos.getY());
buf.writeInt(pos.getZ());
}
buf.writeBoolean(stack != null);
if (stack != null) {
ByteBufUtils.writeItemStack(buf, stack);
}
}
public int getWindowId() {
return windowId;
}
@Nullable
public BlockPos getPos() {
return pos;
}
@Nullable
public ItemStack getStack() {
return stack;
}
public int getGridId() {
return gridId;
}
@Override
public IMessage onMessage(MessageGridOpen message, MessageContext ctx) {
Minecraft.getMinecraft().addScheduledTask(new GridOpenHandler(message));
return null;
}
}

View File

@@ -0,0 +1,43 @@
package com.raoulvdberge.refinedstorage.network;
import com.raoulvdberge.refinedstorage.RSBlocks;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.item.ItemNetworkItem;
import com.raoulvdberge.refinedstorage.tile.grid.portable.PortableGrid;
import io.netty.buffer.ByteBuf;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
public class MessageNetworkItemOpen extends MessageHandlerPlayerToServer<MessageNetworkItemOpen> implements IMessage {
private int slotId;
public MessageNetworkItemOpen() {
}
public MessageNetworkItemOpen(int slotId) {
this.slotId = slotId;
}
@Override
protected void handle(MessageNetworkItemOpen message, EntityPlayerMP player) {
ItemStack stack = player.inventory.getStackInSlot(message.slotId);
if (stack.getItem() instanceof ItemNetworkItem) {
((ItemNetworkItem) stack.getItem()).applyNetwork(stack, n -> n.getNetworkItemHandler().open(player, player.inventory.getStackInSlot(message.slotId)), player::sendMessage);
} else if (stack.getItem() == Item.getItemFromBlock(RSBlocks.PORTABLE_GRID)) { // @Hack
API.instance().getGridManager().openGrid(PortableGrid.ID, player, stack);
}
}
@Override
public void fromBytes(ByteBuf buf) {
slotId = buf.readInt();
}
@Override
public void toBytes(ByteBuf buf) {
buf.writeInt(slotId);
}
}

View File

@@ -2,6 +2,7 @@ package com.raoulvdberge.refinedstorage.proxy;
import com.raoulvdberge.refinedstorage.RSKeyBindings;
import com.raoulvdberge.refinedstorage.block.BlockBase;
import com.raoulvdberge.refinedstorage.gui.KeyInputListener;
import com.raoulvdberge.refinedstorage.item.ItemBase;
import com.raoulvdberge.refinedstorage.render.IModelRegistration;
import com.raoulvdberge.refinedstorage.render.collision.BlockHighlightListener;
@@ -45,6 +46,7 @@ public class ProxyClient extends ProxyCommon implements IModelRegistration {
super.preInit(e);
MinecraftForge.EVENT_BUS.register(new BlockHighlightListener());
MinecraftForge.EVENT_BUS.register(new KeyInputListener());
}
@Override

View File

@@ -13,10 +13,9 @@ import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.CraftingPrev
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.CraftingPreviewElementItemStack;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.registry.CraftingTaskFactory;
import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkNodeListener;
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.wireless.WirelessGridFactoryPortableGrid;
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.wireless.WirelessGridFactoryWirelessFluidGrid;
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.wireless.WirelessGridFactoryWirelessGrid;
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.*;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeGrid;
import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterHandlerFluids;
import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterHandlerItems;
import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterHandlerRedstone;
@@ -52,6 +51,7 @@ import com.raoulvdberge.refinedstorage.tile.data.TileDataManager;
import com.raoulvdberge.refinedstorage.tile.grid.WirelessFluidGrid;
import com.raoulvdberge.refinedstorage.tile.grid.WirelessGrid;
import com.raoulvdberge.refinedstorage.tile.grid.portable.PortableGrid;
import com.raoulvdberge.refinedstorage.tile.grid.portable.TilePortableGrid;
import com.raoulvdberge.refinedstorage.util.StackUtils;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
@@ -91,6 +91,12 @@ public class ProxyCommon {
API.deliver(e.getAsmData());
NetworkNodeGrid.FACTORY_ID = API.instance().getGridManager().add(new GridFactoryGridBlock());
WirelessGrid.ID = API.instance().getGridManager().add(new GridFactoryWirelessGrid());
WirelessFluidGrid.ID = API.instance().getGridManager().add(new GridFactoryWirelessFluidGrid());
TilePortableGrid.FACTORY_ID = API.instance().getGridManager().add(new GridFactoryPortableGridBlock());
PortableGrid.ID = API.instance().getGridManager().add(new GridFactoryPortableGrid());
API.instance().getCraftingTaskRegistry().add(CraftingTaskFactory.ID, new CraftingTaskFactory());
API.instance().getCraftingMonitorElementRegistry().add(CraftingMonitorElementItemRender.ID, buf -> new CraftingMonitorElementItemRender(StackUtils.readItemStack(buf), buf.readInt(), buf.readInt(), buf.readInt(), buf.readInt(), buf.readInt()));
@@ -184,6 +190,8 @@ public class ProxyCommon {
RS.INSTANCE.network.registerMessage(MessageSlotFilterSet.class, MessageSlotFilterSet.class, id++, Side.SERVER);
RS.INSTANCE.network.registerMessage(MessageSlotFilterSetFluid.class, MessageSlotFilterSetFluid.class, id++, Side.SERVER);
RS.INSTANCE.network.registerMessage(MessageSlotFilterFluidUpdate.class, MessageSlotFilterFluidUpdate.class, id++, Side.CLIENT);
RS.INSTANCE.network.registerMessage(MessageGridOpen.class, MessageGridOpen.class, id++, Side.CLIENT);
RS.INSTANCE.network.registerMessage(MessageNetworkItemOpen.class, MessageNetworkItemOpen.class, id++, Side.SERVER);
NetworkRegistry.INSTANCE.registerGuiHandler(RS.INSTANCE, new GuiHandler());
@@ -252,10 +260,6 @@ public class ProxyCommon {
GameRegistry.addSmelting(new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_CUT_IMPROVED), new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED), 0.5F);
GameRegistry.addSmelting(new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_CUT_ADVANCED), new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED), 0.5F);
WirelessGrid.ID = API.instance().getWirelessGridRegistry().add(new WirelessGridFactoryWirelessGrid());
WirelessFluidGrid.ID = API.instance().getWirelessGridRegistry().add(new WirelessGridFactoryWirelessFluidGrid());
PortableGrid.ID = API.instance().getWirelessGridRegistry().add(new WirelessGridFactoryPortableGrid());
if (IntegrationOC.isLoaded()) {
DriverNetwork.register();
}

View File

@@ -29,9 +29,9 @@ public class WirelessCraftingMonitor implements ICraftingMonitor {
private int tabPage;
private Optional<UUID> tabSelected;
public WirelessCraftingMonitor(int networkDimension, ItemStack stack) {
public WirelessCraftingMonitor(ItemStack stack) {
this.stack = stack;
this.networkDimension = networkDimension;
this.networkDimension = ItemWirelessCraftingMonitor.getDimensionId(stack);
this.network = new BlockPos(ItemWirelessCraftingMonitor.getX(stack), ItemWirelessCraftingMonitor.getY(stack), ItemWirelessCraftingMonitor.getZ(stack));
this.tabPage = ItemWirelessCraftingMonitor.getTabPage(stack);
this.tabSelected = ItemWirelessCraftingMonitor.getTabSelected(stack);
@@ -105,7 +105,7 @@ public class WirelessCraftingMonitor implements ICraftingMonitor {
INetwork network = getNetwork();
if (network != null) {
network.getNetworkItemHandler().onClose(player);
network.getNetworkItemHandler().close(player);
}
}

View File

@@ -62,8 +62,8 @@ public class WirelessFluidGrid implements IGridNetworkAware {
}
};
public WirelessFluidGrid(int networkDimension, ItemStack stack) {
this.networkDimension = networkDimension;
public WirelessFluidGrid(ItemStack stack) {
this.networkDimension = ItemWirelessFluidGrid.getDimensionId(stack);
this.network = new BlockPos(ItemWirelessFluidGrid.getX(stack), ItemWirelessFluidGrid.getY(stack), ItemWirelessFluidGrid.getZ(stack));
this.stack = stack;
@@ -299,7 +299,7 @@ public class WirelessFluidGrid implements IGridNetworkAware {
INetwork network = getNetwork();
if (network != null) {
network.getNetworkItemHandler().onClose(player);
network.getNetworkItemHandler().close(player);
}
}
}

View File

@@ -63,8 +63,8 @@ public class WirelessGrid implements IGridNetworkAware {
}
};
public WirelessGrid(int networkDimension, ItemStack stack) {
this.networkDimension = networkDimension;
public WirelessGrid(ItemStack stack) {
this.networkDimension = ItemWirelessGrid.getDimensionId(stack);
this.network = new BlockPos(ItemWirelessGrid.getX(stack), ItemWirelessGrid.getY(stack), ItemWirelessGrid.getZ(stack));
this.stack = stack;
@@ -305,7 +305,7 @@ public class WirelessGrid implements IGridNetworkAware {
INetwork network = getNetwork();
if (network != null) {
network.getNetworkItemHandler().onClose(player);
network.getNetworkItemHandler().close(player);
}
}
}

View File

@@ -62,6 +62,8 @@ import java.util.ArrayList;
import java.util.List;
public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid, IRedstoneConfigurable, IStorageDiskContainerContext, IPortableGrid.IPortableGridRenderInfo {
public static int FACTORY_ID;
public static final TileDataParameter<Integer, TilePortableGrid> REDSTONE_MODE = RedstoneMode.createParameter();
private static final TileDataParameter<Integer, TilePortableGrid> ENERGY_STORED = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.energyStorage.getEnergyStored());
private static final TileDataParameter<Integer, TilePortableGrid> SORTING_DIRECTION = new TileDataParameter<>(DataSerializers.VARINT, 0, TilePortableGrid::getSortingDirection, (t, v) -> {

View File

@@ -3,6 +3,10 @@ itemGroup.refinedstorage.covers=Refined Storage Covers
key.refinedstorage.focusSearchBar=Focus Grid Search Bar
key.refinedstorage.clearGridCraftingMatrix=Clear Grid Crafting Matrix
key.refinedstorage.openWirelessGrid=Open Wireless Grid
key.refinedstorage.openWirelessFluidGrid=Open Wireless Fluid Grid
key.refinedstorage.openPortableGrid=Open Portable Grid
key.refinedstorage.openWirelessCraftingMonitor=Open Wireless Crafting Monitor
gui.refinedstorage:controller.0=Controller
gui.refinedstorage:controller.1=Creative Controller