Import new GUI sync framework and make sure the code can use it
This commit is contained in:
@@ -10,12 +10,15 @@ import refinedstorage.api.storage.CompareUtils;
|
|||||||
import refinedstorage.container.slot.SlotDisabled;
|
import refinedstorage.container.slot.SlotDisabled;
|
||||||
import refinedstorage.container.slot.SlotSpecimen;
|
import refinedstorage.container.slot.SlotSpecimen;
|
||||||
import refinedstorage.container.slot.SlotSpecimenLegacy;
|
import refinedstorage.container.slot.SlotSpecimenLegacy;
|
||||||
|
import refinedstorage.tile.TileBase;
|
||||||
import refinedstorage.tile.grid.WirelessGrid;
|
import refinedstorage.tile.grid.WirelessGrid;
|
||||||
|
|
||||||
public abstract class ContainerBase extends Container {
|
public abstract class ContainerBase extends Container {
|
||||||
|
private TileBase tile;
|
||||||
private EntityPlayer player;
|
private EntityPlayer player;
|
||||||
|
|
||||||
public ContainerBase(EntityPlayer player) {
|
public ContainerBase(TileBase tile, EntityPlayer player) {
|
||||||
|
this.tile = tile;
|
||||||
this.player = player;
|
this.player = player;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -23,6 +26,10 @@ public abstract class ContainerBase extends Container {
|
|||||||
return player;
|
return player;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public TileBase getTile() {
|
||||||
|
return tile;
|
||||||
|
}
|
||||||
|
|
||||||
protected void addPlayerInventory(int xInventory, int yInventory) {
|
protected void addPlayerInventory(int xInventory, int yInventory) {
|
||||||
int id = 0;
|
int id = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ import refinedstorage.container.slot.SlotSpecimen;
|
|||||||
import refinedstorage.tile.TileConstructor;
|
import refinedstorage.tile.TileConstructor;
|
||||||
|
|
||||||
public class ContainerConstructor extends ContainerBase {
|
public class ContainerConstructor extends ContainerBase {
|
||||||
public ContainerConstructor(EntityPlayer player, TileConstructor constructor) {
|
public ContainerConstructor(TileConstructor constructor, EntityPlayer player) {
|
||||||
super(player);
|
super(constructor, player);
|
||||||
|
|
||||||
for (int i = 0; i < 4; ++i) {
|
for (int i = 0; i < 4; ++i) {
|
||||||
addSlotToContainer(new SlotItemHandler(constructor.getUpgrades(), i, 187, 6 + (i * 18)));
|
addSlotToContainer(new SlotItemHandler(constructor.getUpgrades(), i, 187, 6 + (i * 18)));
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
package refinedstorage.container;
|
package refinedstorage.container;
|
||||||
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import refinedstorage.tile.TileController;
|
||||||
|
|
||||||
public class ContainerController extends ContainerBase {
|
public class ContainerController extends ContainerBase {
|
||||||
public ContainerController(EntityPlayer player) {
|
public ContainerController(TileController controller, EntityPlayer player) {
|
||||||
super(player);
|
super(controller, player);
|
||||||
|
|
||||||
addPlayerInventory(8, 99);
|
addPlayerInventory(8, 99);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import net.minecraftforge.items.SlotItemHandler;
|
|||||||
import refinedstorage.tile.TileCrafter;
|
import refinedstorage.tile.TileCrafter;
|
||||||
|
|
||||||
public class ContainerCrafter extends ContainerStorage {
|
public class ContainerCrafter extends ContainerStorage {
|
||||||
public ContainerCrafter(EntityPlayer player, TileCrafter crafter) {
|
public ContainerCrafter(TileCrafter crafter, EntityPlayer player) {
|
||||||
super(player);
|
super(crafter, player);
|
||||||
|
|
||||||
for (int i = 0; i < 9; ++i) {
|
for (int i = 0; i < 9; ++i) {
|
||||||
addSlotToContainer(new SlotItemHandler(crafter.getPatterns(), i, 8 + (18 * i), 20));
|
addSlotToContainer(new SlotItemHandler(crafter.getPatterns(), i, 8 + (18 * i), 20));
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
package refinedstorage.container;
|
package refinedstorage.container;
|
||||||
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import refinedstorage.tile.TileCraftingMonitor;
|
||||||
|
|
||||||
public class ContainerCraftingMonitor extends ContainerBase {
|
public class ContainerCraftingMonitor extends ContainerBase {
|
||||||
public ContainerCraftingMonitor(EntityPlayer player) {
|
public ContainerCraftingMonitor(TileCraftingMonitor craftingMonitor, EntityPlayer player) {
|
||||||
super(player);
|
super(craftingMonitor, player);
|
||||||
|
|
||||||
addPlayerInventory(8, 148);
|
addPlayerInventory(8, 148);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import javax.annotation.Nullable;
|
|||||||
|
|
||||||
public class ContainerCraftingSettings extends ContainerBase {
|
public class ContainerCraftingSettings extends ContainerBase {
|
||||||
public ContainerCraftingSettings(EntityPlayer player, final ItemStack stack) {
|
public ContainerCraftingSettings(EntityPlayer player, final ItemStack stack) {
|
||||||
super(player);
|
super(null, player);
|
||||||
|
|
||||||
final ItemStack slot = ItemHandlerHelper.copyStackWithSize(stack, 1);
|
final ItemStack slot = ItemHandlerHelper.copyStackWithSize(stack, 1);
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ import refinedstorage.container.slot.SlotSpecimen;
|
|||||||
import refinedstorage.tile.TileDestructor;
|
import refinedstorage.tile.TileDestructor;
|
||||||
|
|
||||||
public class ContainerDestructor extends ContainerBase {
|
public class ContainerDestructor extends ContainerBase {
|
||||||
public ContainerDestructor(EntityPlayer player, TileDestructor destructor) {
|
public ContainerDestructor(TileDestructor destructor, EntityPlayer player) {
|
||||||
super(player);
|
super(destructor, player);
|
||||||
|
|
||||||
for (int i = 0; i < 4; ++i) {
|
for (int i = 0; i < 4; ++i) {
|
||||||
addSlotToContainer(new SlotItemHandler(destructor.getUpgrades(), i, 187, 6 + (i * 18)));
|
addSlotToContainer(new SlotItemHandler(destructor.getUpgrades(), i, 187, 6 + (i * 18)));
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import refinedstorage.container.slot.SlotSpecimen;
|
|||||||
import refinedstorage.tile.TileDetector;
|
import refinedstorage.tile.TileDetector;
|
||||||
|
|
||||||
public class ContainerDetector extends ContainerBase {
|
public class ContainerDetector extends ContainerBase {
|
||||||
public ContainerDetector(EntityPlayer player, TileDetector detector) {
|
public ContainerDetector(TileDetector detector, EntityPlayer player) {
|
||||||
super(player);
|
super(detector, player);
|
||||||
|
|
||||||
addSlotToContainer(new SlotSpecimen(detector.getInventory(), 0, 107, 20));
|
addSlotToContainer(new SlotSpecimen(detector.getInventory(), 0, 107, 20));
|
||||||
|
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import net.minecraftforge.items.SlotItemHandler;
|
|||||||
import refinedstorage.tile.TileDiskDrive;
|
import refinedstorage.tile.TileDiskDrive;
|
||||||
|
|
||||||
public class ContainerDiskDrive extends ContainerStorage {
|
public class ContainerDiskDrive extends ContainerStorage {
|
||||||
public ContainerDiskDrive(EntityPlayer player, TileDiskDrive drive) {
|
public ContainerDiskDrive(TileDiskDrive drive, EntityPlayer player) {
|
||||||
super(player);
|
super(drive, player);
|
||||||
|
|
||||||
for (int i = 0; i < 4; ++i) {
|
for (int i = 0; i < 4; ++i) {
|
||||||
addSlotToContainer(new SlotItemHandler(drive.getDisks(), i, 98 + (i * 18), 78));
|
addSlotToContainer(new SlotItemHandler(drive.getDisks(), i, 98 + (i * 18), 78));
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ import refinedstorage.container.slot.SlotSpecimen;
|
|||||||
import refinedstorage.tile.TileExporter;
|
import refinedstorage.tile.TileExporter;
|
||||||
|
|
||||||
public class ContainerExporter extends ContainerBase {
|
public class ContainerExporter extends ContainerBase {
|
||||||
public ContainerExporter(EntityPlayer player, TileExporter exporter) {
|
public ContainerExporter(TileExporter exporter, EntityPlayer player) {
|
||||||
super(player);
|
super(exporter, player);
|
||||||
|
|
||||||
for (int i = 0; i < 4; ++i) {
|
for (int i = 0; i < 4; ++i) {
|
||||||
addSlotToContainer(new SlotItemHandler(exporter.getUpgrades(), i, 187, 6 + (i * 18)));
|
addSlotToContainer(new SlotItemHandler(exporter.getUpgrades(), i, 187, 6 + (i * 18)));
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import net.minecraft.item.ItemStack;
|
|||||||
import net.minecraftforge.items.SlotItemHandler;
|
import net.minecraftforge.items.SlotItemHandler;
|
||||||
import refinedstorage.block.EnumGridType;
|
import refinedstorage.block.EnumGridType;
|
||||||
import refinedstorage.container.slot.*;
|
import refinedstorage.container.slot.*;
|
||||||
|
import refinedstorage.tile.TileBase;
|
||||||
import refinedstorage.tile.grid.IGrid;
|
import refinedstorage.tile.grid.IGrid;
|
||||||
import refinedstorage.tile.grid.TileGrid;
|
import refinedstorage.tile.grid.TileGrid;
|
||||||
import refinedstorage.tile.grid.WirelessGrid;
|
import refinedstorage.tile.grid.WirelessGrid;
|
||||||
@@ -16,8 +17,8 @@ public class ContainerGrid extends ContainerBase {
|
|||||||
private SlotGridCraftingResult craftingResultSlot;
|
private SlotGridCraftingResult craftingResultSlot;
|
||||||
private SlotDisabled patternResultSlot;
|
private SlotDisabled patternResultSlot;
|
||||||
|
|
||||||
public ContainerGrid(EntityPlayer player, IGrid grid) {
|
public ContainerGrid(IGrid grid, EntityPlayer player) {
|
||||||
super(player);
|
super(grid instanceof TileBase ? (TileBase) grid : null, player);
|
||||||
|
|
||||||
this.grid = grid;
|
this.grid = grid;
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ public class ContainerGridFilter extends ContainerBase {
|
|||||||
private ItemStack stack;
|
private ItemStack stack;
|
||||||
|
|
||||||
public ContainerGridFilter(EntityPlayer player, ItemStack stack) {
|
public ContainerGridFilter(EntityPlayer player, ItemStack stack) {
|
||||||
super(player);
|
super(null, player);
|
||||||
|
|
||||||
this.stack = stack;
|
this.stack = stack;
|
||||||
this.filter = new ItemHandlerGridFilter(stack);
|
this.filter = new ItemHandlerGridFilter(stack);
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ import refinedstorage.container.slot.SlotSpecimen;
|
|||||||
import refinedstorage.tile.TileImporter;
|
import refinedstorage.tile.TileImporter;
|
||||||
|
|
||||||
public class ContainerImporter extends ContainerBase {
|
public class ContainerImporter extends ContainerBase {
|
||||||
public ContainerImporter(EntityPlayer player, TileImporter importer) {
|
public ContainerImporter(TileImporter importer, EntityPlayer player) {
|
||||||
super(player);
|
super(importer, player);
|
||||||
|
|
||||||
for (int i = 0; i < 4; ++i) {
|
for (int i = 0; i < 4; ++i) {
|
||||||
addSlotToContainer(new SlotItemHandler(importer.getUpgrades(), i, 187, 6 + (i * 18)));
|
addSlotToContainer(new SlotItemHandler(importer.getUpgrades(), i, 187, 6 + (i * 18)));
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ import refinedstorage.container.slot.SlotSpecimen;
|
|||||||
import refinedstorage.tile.TileInterface;
|
import refinedstorage.tile.TileInterface;
|
||||||
|
|
||||||
public class ContainerInterface extends ContainerBase {
|
public class ContainerInterface extends ContainerBase {
|
||||||
public ContainerInterface(EntityPlayer player, TileInterface tile) {
|
public ContainerInterface(TileInterface tile, EntityPlayer player) {
|
||||||
super(player);
|
super(tile, player);
|
||||||
|
|
||||||
for (int i = 0; i < 9; ++i) {
|
for (int i = 0; i < 9; ++i) {
|
||||||
addSlotToContainer(new SlotItemHandler(tile.getImportItems(), i, 8 + (18 * i), 20));
|
addSlotToContainer(new SlotItemHandler(tile.getImportItems(), i, 8 + (18 * i), 20));
|
||||||
|
|||||||
@@ -7,10 +7,11 @@ import net.minecraftforge.items.SlotItemHandler;
|
|||||||
import refinedstorage.tile.TileNetworkTransmitter;
|
import refinedstorage.tile.TileNetworkTransmitter;
|
||||||
|
|
||||||
public class ContainerNetworkTransmitter extends ContainerBase {
|
public class ContainerNetworkTransmitter extends ContainerBase {
|
||||||
public ContainerNetworkTransmitter(EntityPlayer player, TileNetworkTransmitter networkTransmitter) {
|
public ContainerNetworkTransmitter(TileNetworkTransmitter networkTransmitter, EntityPlayer player) {
|
||||||
super(player);
|
super(networkTransmitter, player);
|
||||||
|
|
||||||
addSlotToContainer(new SlotItemHandler(networkTransmitter.getNetworkCard(), 0, 8, 20));
|
addSlotToContainer(new SlotItemHandler(networkTransmitter.getNetworkCard(), 0, 8, 20));
|
||||||
|
|
||||||
addSlotToContainer(new SlotItemHandler(networkTransmitter.getUpgrades(), 0, 187, 6));
|
addSlotToContainer(new SlotItemHandler(networkTransmitter.getUpgrades(), 0, 187, 6));
|
||||||
|
|
||||||
addPlayerInventory(8, 55);
|
addPlayerInventory(8, 55);
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ import refinedstorage.container.slot.SlotSpecimen;
|
|||||||
import refinedstorage.tile.TileProcessingPatternEncoder;
|
import refinedstorage.tile.TileProcessingPatternEncoder;
|
||||||
|
|
||||||
public class ContainerProcessingPatternEncoder extends ContainerBase {
|
public class ContainerProcessingPatternEncoder extends ContainerBase {
|
||||||
public ContainerProcessingPatternEncoder(EntityPlayer player, TileProcessingPatternEncoder processingPatternEncoder) {
|
public ContainerProcessingPatternEncoder(TileProcessingPatternEncoder processingPatternEncoder, EntityPlayer player) {
|
||||||
super(player);
|
super(processingPatternEncoder, player);
|
||||||
|
|
||||||
addSlotToContainer(new SlotItemHandler(processingPatternEncoder.getPatterns(), 0, 152, 18));
|
addSlotToContainer(new SlotItemHandler(processingPatternEncoder.getPatterns(), 0, 152, 18));
|
||||||
addSlotToContainer(new SlotOutput(processingPatternEncoder.getPatterns(), 1, 152, 58));
|
addSlotToContainer(new SlotOutput(processingPatternEncoder.getPatterns(), 1, 152, 58));
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
package refinedstorage.container;
|
package refinedstorage.container;
|
||||||
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import refinedstorage.tile.TileRelay;
|
||||||
|
|
||||||
public class ContainerRelay extends ContainerBase {
|
public class ContainerRelay extends ContainerBase {
|
||||||
public ContainerRelay(EntityPlayer player) {
|
public ContainerRelay(TileRelay relay, EntityPlayer player) {
|
||||||
super(player);
|
super(relay, player);
|
||||||
|
|
||||||
addPlayerInventory(8, 50);
|
addPlayerInventory(8, 50);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ import refinedstorage.container.slot.SlotOutput;
|
|||||||
import refinedstorage.tile.TileSolderer;
|
import refinedstorage.tile.TileSolderer;
|
||||||
|
|
||||||
public class ContainerSolderer extends ContainerBase {
|
public class ContainerSolderer extends ContainerBase {
|
||||||
public ContainerSolderer(EntityPlayer player, TileSolderer solderer) {
|
public ContainerSolderer(TileSolderer solderer, EntityPlayer player) {
|
||||||
super(player);
|
super(solderer, player);
|
||||||
|
|
||||||
int x = 44;
|
int x = 44;
|
||||||
int y = 20;
|
int y = 20;
|
||||||
|
|||||||
@@ -3,14 +3,15 @@ package refinedstorage.container;
|
|||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraftforge.items.IItemHandler;
|
import net.minecraftforge.items.IItemHandler;
|
||||||
import refinedstorage.container.slot.SlotSpecimen;
|
import refinedstorage.container.slot.SlotSpecimen;
|
||||||
|
import refinedstorage.tile.TileBase;
|
||||||
|
|
||||||
public class ContainerStorage extends ContainerBase {
|
public class ContainerStorage extends ContainerBase {
|
||||||
public ContainerStorage(EntityPlayer player) {
|
public ContainerStorage(TileBase tile, EntityPlayer player) {
|
||||||
super(player);
|
super(tile, player);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ContainerStorage(EntityPlayer player, IItemHandler filters) {
|
public ContainerStorage(TileBase tile, EntityPlayer player, IItemHandler filters) {
|
||||||
this(player);
|
this(tile, player);
|
||||||
|
|
||||||
addSpecimenAndPlayerInventorySlots(filters);
|
addSpecimenAndPlayerInventorySlots(filters);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import net.minecraftforge.items.SlotItemHandler;
|
|||||||
import refinedstorage.tile.TileWirelessTransmitter;
|
import refinedstorage.tile.TileWirelessTransmitter;
|
||||||
|
|
||||||
public class ContainerWirelessTransmitter extends ContainerBase {
|
public class ContainerWirelessTransmitter extends ContainerBase {
|
||||||
public ContainerWirelessTransmitter(EntityPlayer player, TileWirelessTransmitter wirelessTransmitter) {
|
public ContainerWirelessTransmitter(TileWirelessTransmitter wirelessTransmitter, EntityPlayer player) {
|
||||||
super(player);
|
super(wirelessTransmitter, player);
|
||||||
|
|
||||||
for (int i = 0; i < 4; ++i) {
|
for (int i = 0; i < 4; ++i) {
|
||||||
addSlotToContainer(new SlotItemHandler(wirelessTransmitter.getUpgrades(), i, 187, 6 + (i * 18)));
|
addSlotToContainer(new SlotItemHandler(wirelessTransmitter.getUpgrades(), i, 187, 6 + (i * 18)));
|
||||||
|
|||||||
@@ -18,39 +18,39 @@ public class GuiHandler implements IGuiHandler {
|
|||||||
private Container getContainer(int ID, EntityPlayer player, TileEntity tile) {
|
private Container getContainer(int ID, EntityPlayer player, TileEntity tile) {
|
||||||
switch (ID) {
|
switch (ID) {
|
||||||
case RefinedStorageGui.CONTROLLER:
|
case RefinedStorageGui.CONTROLLER:
|
||||||
return new ContainerController(player);
|
return new ContainerController((TileController) tile, player);
|
||||||
case RefinedStorageGui.GRID:
|
case RefinedStorageGui.GRID:
|
||||||
return new ContainerGrid(player, (TileGrid) tile);
|
return new ContainerGrid((TileGrid) tile, player);
|
||||||
case RefinedStorageGui.DISK_DRIVE:
|
case RefinedStorageGui.DISK_DRIVE:
|
||||||
return new ContainerDiskDrive(player, (TileDiskDrive) tile);
|
return new ContainerDiskDrive((TileDiskDrive) tile, player);
|
||||||
case RefinedStorageGui.IMPORTER:
|
case RefinedStorageGui.IMPORTER:
|
||||||
return new ContainerImporter(player, (TileImporter) tile);
|
return new ContainerImporter((TileImporter) tile, player);
|
||||||
case RefinedStorageGui.EXPORTER:
|
case RefinedStorageGui.EXPORTER:
|
||||||
return new ContainerExporter(player, (TileExporter) tile);
|
return new ContainerExporter((TileExporter) tile, player);
|
||||||
case RefinedStorageGui.DETECTOR:
|
case RefinedStorageGui.DETECTOR:
|
||||||
return new ContainerDetector(player, (TileDetector) tile);
|
return new ContainerDetector((TileDetector) tile, player);
|
||||||
case RefinedStorageGui.SOLDERER:
|
case RefinedStorageGui.SOLDERER:
|
||||||
return new ContainerSolderer(player, (TileSolderer) tile);
|
return new ContainerSolderer((TileSolderer) tile, player);
|
||||||
case RefinedStorageGui.DESTRUCTOR:
|
case RefinedStorageGui.DESTRUCTOR:
|
||||||
return new ContainerDestructor(player, (TileDestructor) tile);
|
return new ContainerDestructor((TileDestructor) tile, player);
|
||||||
case RefinedStorageGui.CONSTRUCTOR:
|
case RefinedStorageGui.CONSTRUCTOR:
|
||||||
return new ContainerConstructor(player, (TileConstructor) tile);
|
return new ContainerConstructor((TileConstructor) tile, player);
|
||||||
case RefinedStorageGui.STORAGE:
|
case RefinedStorageGui.STORAGE:
|
||||||
return new ContainerStorage(player, ((IStorageGui) tile).getFilters());
|
return new ContainerStorage((TileBase) tile, player, ((IStorageGui) tile).getFilters());
|
||||||
case RefinedStorageGui.RELAY:
|
case RefinedStorageGui.RELAY:
|
||||||
return new ContainerRelay(player);
|
return new ContainerRelay((TileRelay) tile, player);
|
||||||
case RefinedStorageGui.INTERFACE:
|
case RefinedStorageGui.INTERFACE:
|
||||||
return new ContainerInterface(player, (TileInterface) tile);
|
return new ContainerInterface((TileInterface) tile, player);
|
||||||
case RefinedStorageGui.CRAFTING_MONITOR:
|
case RefinedStorageGui.CRAFTING_MONITOR:
|
||||||
return new ContainerCraftingMonitor(player);
|
return new ContainerCraftingMonitor((TileCraftingMonitor) tile, player);
|
||||||
case RefinedStorageGui.WIRELESS_TRANSMITTER:
|
case RefinedStorageGui.WIRELESS_TRANSMITTER:
|
||||||
return new ContainerWirelessTransmitter(player, (TileWirelessTransmitter) tile);
|
return new ContainerWirelessTransmitter((TileWirelessTransmitter) tile, player);
|
||||||
case RefinedStorageGui.CRAFTER:
|
case RefinedStorageGui.CRAFTER:
|
||||||
return new ContainerCrafter(player, (TileCrafter) tile);
|
return new ContainerCrafter((TileCrafter) tile, player);
|
||||||
case RefinedStorageGui.PROCESSING_PATTERN_ENCODER:
|
case RefinedStorageGui.PROCESSING_PATTERN_ENCODER:
|
||||||
return new ContainerProcessingPatternEncoder(player, (TileProcessingPatternEncoder) tile);
|
return new ContainerProcessingPatternEncoder((TileProcessingPatternEncoder) tile, player);
|
||||||
case RefinedStorageGui.NETWORK_TRANSMITTER:
|
case RefinedStorageGui.NETWORK_TRANSMITTER:
|
||||||
return new ContainerNetworkTransmitter(player, (TileNetworkTransmitter) tile);
|
return new ContainerNetworkTransmitter((TileNetworkTransmitter) tile, player);
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -61,7 +61,7 @@ public class GuiHandler implements IGuiHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private ContainerGrid getWirelessGridContainer(EntityPlayer player, int hand) {
|
private ContainerGrid getWirelessGridContainer(EntityPlayer player, int hand) {
|
||||||
return new ContainerGrid(player, getWirelessGrid(player, hand));
|
return new ContainerGrid(getWirelessGrid(player, hand), player);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ContainerGridFilter getGridFilterContainer(EntityPlayer player, int hand) {
|
private ContainerGridFilter getGridFilterContainer(EntityPlayer player, int hand) {
|
||||||
@@ -128,8 +128,8 @@ public class GuiHandler implements IGuiHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private GuiGrid getWirelessGridGui(EntityPlayer player, int hand) {
|
private GuiGrid getWirelessGridGui(EntityPlayer player, int hand) {
|
||||||
WirelessGrid wirelessGrid = getWirelessGrid(player, hand);
|
WirelessGrid grid = getWirelessGrid(player, hand);
|
||||||
|
|
||||||
return new GuiGrid(new ContainerGrid(player, wirelessGrid), wirelessGrid);
|
return new GuiGrid(new ContainerGrid(grid, player), grid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
51
src/main/java/refinedstorage/network/MessageTileDataParameter.java
Executable file
51
src/main/java/refinedstorage/network/MessageTileDataParameter.java
Executable file
@@ -0,0 +1,51 @@
|
|||||||
|
package refinedstorage.network;
|
||||||
|
|
||||||
|
import io.netty.buffer.ByteBuf;
|
||||||
|
import net.minecraft.network.PacketBuffer;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
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 refinedstorage.tile.data.TileDataManager;
|
||||||
|
import refinedstorage.tile.data.TileDataParameter;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class MessageTileDataParameter implements IMessage, IMessageHandler<MessageTileDataParameter, IMessage> {
|
||||||
|
private TileEntity tile;
|
||||||
|
private TileDataParameter parameter;
|
||||||
|
|
||||||
|
public MessageTileDataParameter() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public MessageTileDataParameter(TileEntity tile, TileDataParameter parameter) {
|
||||||
|
this.tile = tile;
|
||||||
|
this.parameter = parameter;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void fromBytes(ByteBuf buf) {
|
||||||
|
int id = buf.readInt();
|
||||||
|
|
||||||
|
TileDataParameter parameter = TileDataManager.getParameter(id);
|
||||||
|
|
||||||
|
if (parameter != null) {
|
||||||
|
try {
|
||||||
|
parameter.setValue(parameter.getSerializer().read(new PacketBuffer(buf)));
|
||||||
|
} catch (IOException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void toBytes(ByteBuf buf) {
|
||||||
|
buf.writeInt(parameter.getId());
|
||||||
|
|
||||||
|
parameter.getSerializer().write((PacketBuffer) buf, parameter.getValueProducer().getValue(tile));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IMessage onMessage(MessageTileDataParameter message, MessageContext ctx) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
60
src/main/java/refinedstorage/network/MessageTileDataParameterUpdate.java
Executable file
60
src/main/java/refinedstorage/network/MessageTileDataParameterUpdate.java
Executable file
@@ -0,0 +1,60 @@
|
|||||||
|
package refinedstorage.network;
|
||||||
|
|
||||||
|
import io.netty.buffer.ByteBuf;
|
||||||
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
|
import net.minecraft.inventory.Container;
|
||||||
|
import net.minecraft.network.PacketBuffer;
|
||||||
|
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||||
|
import refinedstorage.container.ContainerBase;
|
||||||
|
import refinedstorage.tile.data.ITileDataConsumer;
|
||||||
|
import refinedstorage.tile.data.TileDataManager;
|
||||||
|
import refinedstorage.tile.data.TileDataParameter;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class MessageTileDataParameterUpdate extends MessageHandlerPlayerToServer<MessageTileDataParameterUpdate> implements IMessage {
|
||||||
|
private TileDataParameter parameter;
|
||||||
|
private Object value;
|
||||||
|
|
||||||
|
public MessageTileDataParameterUpdate() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public MessageTileDataParameterUpdate(TileDataParameter parameter, Object value) {
|
||||||
|
this.parameter = parameter;
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void fromBytes(ByteBuf buf) {
|
||||||
|
int id = buf.readInt();
|
||||||
|
|
||||||
|
parameter = TileDataManager.getParameter(id);
|
||||||
|
|
||||||
|
if (parameter != null) {
|
||||||
|
try {
|
||||||
|
value = parameter.getSerializer().read(new PacketBuffer(buf));
|
||||||
|
} catch (IOException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void toBytes(ByteBuf buf) {
|
||||||
|
buf.writeInt(parameter.getId());
|
||||||
|
|
||||||
|
parameter.getSerializer().write((PacketBuffer) buf, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handle(MessageTileDataParameterUpdate message, EntityPlayerMP player) {
|
||||||
|
Container c = player.openContainer;
|
||||||
|
|
||||||
|
if (c instanceof ContainerBase) {
|
||||||
|
ITileDataConsumer consumer = message.parameter.getValueConsumer();
|
||||||
|
|
||||||
|
if (consumer != null) {
|
||||||
|
consumer.setValue(((ContainerBase) c).getTile(), message.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,6 +5,7 @@ import net.minecraft.init.Blocks;
|
|||||||
import net.minecraft.init.Items;
|
import net.minecraft.init.Items;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
|
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
|
||||||
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
|
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
|
||||||
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
|
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
|
||||||
@@ -27,6 +28,7 @@ import refinedstorage.gui.GuiHandler;
|
|||||||
import refinedstorage.item.*;
|
import refinedstorage.item.*;
|
||||||
import refinedstorage.network.*;
|
import refinedstorage.network.*;
|
||||||
import refinedstorage.tile.*;
|
import refinedstorage.tile.*;
|
||||||
|
import refinedstorage.tile.data.ContainerListener;
|
||||||
import refinedstorage.tile.externalstorage.TileExternalStorage;
|
import refinedstorage.tile.externalstorage.TileExternalStorage;
|
||||||
import refinedstorage.tile.grid.TileGrid;
|
import refinedstorage.tile.grid.TileGrid;
|
||||||
|
|
||||||
@@ -38,6 +40,8 @@ public class CommonProxy {
|
|||||||
|
|
||||||
int id = 0;
|
int id = 0;
|
||||||
|
|
||||||
|
RefinedStorage.INSTANCE.network.registerMessage(MessageTileDataParameter.class, MessageTileDataParameter.class, id++, Side.CLIENT);
|
||||||
|
RefinedStorage.INSTANCE.network.registerMessage(MessageTileDataParameterUpdate.class, MessageTileDataParameterUpdate.class, id++, Side.SERVER);
|
||||||
RefinedStorage.INSTANCE.network.registerMessage(MessageTileContainerUpdate.class, MessageTileContainerUpdate.class, id++, Side.CLIENT);
|
RefinedStorage.INSTANCE.network.registerMessage(MessageTileContainerUpdate.class, MessageTileContainerUpdate.class, id++, Side.CLIENT);
|
||||||
RefinedStorage.INSTANCE.network.registerMessage(MessageRedstoneModeUpdate.class, MessageRedstoneModeUpdate.class, id++, Side.SERVER);
|
RefinedStorage.INSTANCE.network.registerMessage(MessageRedstoneModeUpdate.class, MessageRedstoneModeUpdate.class, id++, Side.SERVER);
|
||||||
RefinedStorage.INSTANCE.network.registerMessage(MessageGridInsertHeld.class, MessageGridInsertHeld.class, id++, Side.SERVER);
|
RefinedStorage.INSTANCE.network.registerMessage(MessageGridInsertHeld.class, MessageGridInsertHeld.class, id++, Side.SERVER);
|
||||||
@@ -61,6 +65,8 @@ public class CommonProxy {
|
|||||||
|
|
||||||
NetworkRegistry.INSTANCE.registerGuiHandler(RefinedStorage.INSTANCE, new GuiHandler());
|
NetworkRegistry.INSTANCE.registerGuiHandler(RefinedStorage.INSTANCE, new GuiHandler());
|
||||||
|
|
||||||
|
MinecraftForge.EVENT_BUS.register(new ContainerListener());
|
||||||
|
|
||||||
GameRegistry.registerTileEntity(TileController.class, ID + ":controller");
|
GameRegistry.registerTileEntity(TileController.class, ID + ":controller");
|
||||||
GameRegistry.registerTileEntity(TileGrid.class, ID + ":grid");
|
GameRegistry.registerTileEntity(TileGrid.class, ID + ":grid");
|
||||||
GameRegistry.registerTileEntity(TileDiskDrive.class, ID + ":disk_drive");
|
GameRegistry.registerTileEntity(TileDiskDrive.class, ID + ":disk_drive");
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import net.minecraftforge.items.wrapper.InvWrapper;
|
|||||||
import net.minecraftforge.items.wrapper.SidedInvWrapper;
|
import net.minecraftforge.items.wrapper.SidedInvWrapper;
|
||||||
import refinedstorage.RefinedStorage;
|
import refinedstorage.RefinedStorage;
|
||||||
import refinedstorage.network.MessageTileContainerUpdate;
|
import refinedstorage.network.MessageTileContainerUpdate;
|
||||||
|
import refinedstorage.tile.data.TileDataManager;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
@@ -33,6 +34,7 @@ public abstract class TileBase extends TileEntity implements ITickable {
|
|||||||
|
|
||||||
private EnumFacing direction = EnumFacing.NORTH;
|
private EnumFacing direction = EnumFacing.NORTH;
|
||||||
|
|
||||||
|
protected TileDataManager dataManager = new TileDataManager(this);
|
||||||
protected int ticks = 0;
|
protected int ticks = 0;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -64,6 +66,10 @@ public abstract class TileBase extends TileEntity implements ITickable {
|
|||||||
return direction;
|
return direction;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public TileDataManager getDataManager() {
|
||||||
|
return dataManager;
|
||||||
|
}
|
||||||
|
|
||||||
public NBTTagCompound write(NBTTagCompound tag) {
|
public NBTTagCompound write(NBTTagCompound tag) {
|
||||||
tag.setInteger(NBT_DIRECTION, direction.ordinal());
|
tag.setInteger(NBT_DIRECTION, direction.ordinal());
|
||||||
|
|
||||||
|
|||||||
23
src/main/java/refinedstorage/tile/data/ContainerListener.java
Executable file
23
src/main/java/refinedstorage/tile/data/ContainerListener.java
Executable file
@@ -0,0 +1,23 @@
|
|||||||
|
package refinedstorage.tile.data;
|
||||||
|
|
||||||
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
|
import net.minecraft.inventory.Container;
|
||||||
|
import net.minecraftforge.event.entity.player.PlayerContainerEvent;
|
||||||
|
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||||
|
import refinedstorage.container.ContainerBase;
|
||||||
|
import refinedstorage.tile.TileBase;
|
||||||
|
|
||||||
|
public class ContainerListener {
|
||||||
|
@SubscribeEvent
|
||||||
|
public void onContainerOpen(PlayerContainerEvent.Open e) {
|
||||||
|
Container container = e.getContainer();
|
||||||
|
|
||||||
|
if (container instanceof ContainerBase) {
|
||||||
|
TileBase tile = ((ContainerBase) container).getTile();
|
||||||
|
|
||||||
|
if (tile != null && !tile.getWorld().isRemote) {
|
||||||
|
tile.getDataManager().sendParametersTo((EntityPlayerMP) e.getEntityPlayer());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
7
src/main/java/refinedstorage/tile/data/ITileDataConsumer.java
Executable file
7
src/main/java/refinedstorage/tile/data/ITileDataConsumer.java
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
package refinedstorage.tile.data;
|
||||||
|
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
|
||||||
|
public interface ITileDataConsumer<T, E extends TileEntity> {
|
||||||
|
void setValue(E tile, T value);
|
||||||
|
}
|
||||||
7
src/main/java/refinedstorage/tile/data/ITileDataProducer.java
Executable file
7
src/main/java/refinedstorage/tile/data/ITileDataProducer.java
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
package refinedstorage.tile.data;
|
||||||
|
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
|
||||||
|
public interface ITileDataProducer<T, E extends TileEntity> {
|
||||||
|
T getValue(E tile);
|
||||||
|
}
|
||||||
98
src/main/java/refinedstorage/tile/data/TileDataManager.java
Executable file
98
src/main/java/refinedstorage/tile/data/TileDataManager.java
Executable file
@@ -0,0 +1,98 @@
|
|||||||
|
package refinedstorage.tile.data;
|
||||||
|
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
|
import net.minecraft.inventory.Container;
|
||||||
|
import net.minecraft.network.datasync.DataSerializer;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import refinedstorage.RefinedStorage;
|
||||||
|
import refinedstorage.container.ContainerBase;
|
||||||
|
import refinedstorage.network.MessageTileDataParameter;
|
||||||
|
import refinedstorage.network.MessageTileDataParameterUpdate;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class TileDataManager {
|
||||||
|
private static int PARAMETER_ID = 0;
|
||||||
|
private static Map<Integer, TileDataParameter> PARAMETER_MAP = new HashMap<Integer, TileDataParameter>();
|
||||||
|
|
||||||
|
private List<TileDataParameter> parameters = new ArrayList<TileDataParameter>();
|
||||||
|
|
||||||
|
private List<TileDataParameter> watchedParameters = new ArrayList<TileDataParameter>();
|
||||||
|
private List<Object> watchedParametersCache = new ArrayList<Object>();
|
||||||
|
|
||||||
|
public static TileDataParameter createParameter(DataSerializer serializer, ITileDataProducer producer) {
|
||||||
|
return createParameter(serializer, producer, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TileDataParameter createParameter(DataSerializer serializer, ITileDataProducer producer, ITileDataConsumer consumer) {
|
||||||
|
TileDataParameter parameter = new TileDataParameter(PARAMETER_ID++, serializer, producer, consumer);
|
||||||
|
|
||||||
|
PARAMETER_MAP.put(parameter.getId(), parameter);
|
||||||
|
|
||||||
|
return parameter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TileDataParameter getParameter(int id) {
|
||||||
|
return PARAMETER_MAP.get(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <T> void setParameter(TileDataParameter<T> parameter, T value) {
|
||||||
|
RefinedStorage.INSTANCE.network.sendToServer(new MessageTileDataParameterUpdate(parameter, value));
|
||||||
|
}
|
||||||
|
|
||||||
|
private TileEntity tile;
|
||||||
|
|
||||||
|
public TileDataManager(TileEntity tile) {
|
||||||
|
this.tile = tile;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addParameter(TileDataParameter parameter) {
|
||||||
|
parameters.add(parameter);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addWatchedParameter(TileDataParameter parameter) {
|
||||||
|
addParameter(parameter);
|
||||||
|
|
||||||
|
watchedParameters.add(parameter);
|
||||||
|
watchedParametersCache.add(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void detectAndSendChanges() {
|
||||||
|
for (int i = 0; i < watchedParameters.size(); ++i) {
|
||||||
|
TileDataParameter parameter = watchedParameters.get(i);
|
||||||
|
|
||||||
|
Object real = parameter.getValueProducer().getValue(tile);
|
||||||
|
Object cached = watchedParametersCache.get(i);
|
||||||
|
|
||||||
|
if (!real.equals(cached)) {
|
||||||
|
watchedParametersCache.set(i, real);
|
||||||
|
|
||||||
|
sendParameterToWatchers(parameter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void sendParametersTo(EntityPlayerMP player) {
|
||||||
|
for (TileDataParameter parameter : parameters) {
|
||||||
|
sendParameter(player, parameter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void sendParameter(EntityPlayerMP player, TileDataParameter parameter) {
|
||||||
|
RefinedStorage.INSTANCE.network.sendTo(new MessageTileDataParameter(tile, parameter), player);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void sendParameterToWatchers(TileDataParameter parameter) {
|
||||||
|
for (EntityPlayer player : tile.getWorld().playerEntities) {
|
||||||
|
Container container = player.openContainer;
|
||||||
|
|
||||||
|
if (container instanceof ContainerBase && ((ContainerBase) container).getTile().getPos().equals(tile.getPos())) {
|
||||||
|
sendParameter((EntityPlayerMP) player, parameter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
42
src/main/java/refinedstorage/tile/data/TileDataParameter.java
Executable file
42
src/main/java/refinedstorage/tile/data/TileDataParameter.java
Executable file
@@ -0,0 +1,42 @@
|
|||||||
|
package refinedstorage.tile.data;
|
||||||
|
|
||||||
|
import net.minecraft.network.datasync.DataSerializer;
|
||||||
|
|
||||||
|
public class TileDataParameter<T> {
|
||||||
|
private int id;
|
||||||
|
private DataSerializer<T> serializer;
|
||||||
|
private ITileDataProducer valueProducer;
|
||||||
|
private ITileDataConsumer valueConsumer;
|
||||||
|
private T value;
|
||||||
|
|
||||||
|
public TileDataParameter(int id, DataSerializer<T> serializer, ITileDataProducer producer, ITileDataConsumer consumer) {
|
||||||
|
this.id = id;
|
||||||
|
this.serializer = serializer;
|
||||||
|
this.valueProducer = producer;
|
||||||
|
this.valueConsumer = consumer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DataSerializer<T> getSerializer() {
|
||||||
|
return serializer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ITileDataProducer getValueProducer() {
|
||||||
|
return valueProducer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ITileDataConsumer getValueConsumer() {
|
||||||
|
return valueConsumer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setValue(T value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public T getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user