From 192e72136bcfeb16c7dafff30fe30acf7b572525 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Tue, 22 Oct 2019 15:27:08 +0200 Subject: [PATCH] Add the Wireless Grid --- CHANGELOG.md | 1 + .../refinedstorage/ClientSetup.java | 4 + .../com/raoulvdberge/refinedstorage/RS.java | 5 + .../raoulvdberge/refinedstorage/RSItems.java | 19 ++- .../refinedstorage/RSKeyBindings.java | 9 +- .../refinedstorage/RSOldConfig.java | 17 --- .../refinedstorage/api/network/INetwork.java | 6 +- .../network/grid/ICraftingGridBehavior.java | 6 +- ...tworkAware.java => INetworkAwareGrid.java} | 2 +- ...mHandler.java => INetworkItemManager.java} | 2 +- .../network/item/INetworkItemProvider.java | 2 +- .../apiimpl/network/Network.java | 10 +- .../network/grid/CraftingGridBehavior.java | 8 +- .../grid/factory/WirelessGridGridFactory.java | 6 +- .../network/grid/handler/ItemGridHandler.java | 8 +- ...emHandler.java => NetworkItemManager.java} | 10 +- .../NetworkItemWirelessCraftingMonitor.java | 6 +- .../item/NetworkItemWirelessFluidGrid.java | 6 +- ...Grid.java => WirelessGridNetworkItem.java} | 26 ++-- .../apiimpl/network/node/GridNetworkNode.java | 2 +- .../refinedstorage/config/ServerConfig.java | 70 +++++++++-- .../energy/ItemEnergyStorage.java | 34 ++++-- .../refinedstorage/item/EnergyItem.java | 7 +- .../item/ItemWirelessCraftingMonitor.java | 7 +- .../item/ItemWirelessFluidGrid.java | 7 +- .../refinedstorage/item/ItemWirelessGrid.java | 61 ---------- .../refinedstorage/item/NetworkItem.java | 111 ++++++++++++------ .../refinedstorage/item/WirelessGridItem.java | 68 +++++++++++ .../MessageGridSettingsUpdate.java.off | 95 --------------- .../network/MessageNetworkItemOpen.java.off | 43 ------- .../network/NetworkHandler.java | 2 + .../network/OpenNetworkItemMessage.java | 43 +++++++ .../grid/GridSettingsUpdateMessage.java | 101 ++++++++++++++++ .../screen/KeyInputListener.java | 38 ++++-- .../WirelessCraftingMonitor.java | 2 +- .../tile/grid/WirelessFluidGrid.java | 4 +- .../tile/grid/WirelessGrid.java | 74 +++++++----- .../assets/refinedstorage/lang/en_us.json | 8 +- .../models/item/creative_wireless_grid.json | 20 ++++ .../refinedstorage/recipes/wireless_grid.json | 10 +- 40 files changed, 566 insertions(+), 394 deletions(-) rename src/main/java/com/raoulvdberge/refinedstorage/api/network/grid/{IGridNetworkAware.java => INetworkAwareGrid.java} (86%) rename src/main/java/com/raoulvdberge/refinedstorage/api/network/item/{INetworkItemHandler.java => INetworkItemManager.java} (96%) mode change 100755 => 100644 rename src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/{NetworkItemHandler.java => NetworkItemManager.java} (90%) mode change 100755 => 100644 rename src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/{NetworkItemWirelessGrid.java => WirelessGridNetworkItem.java} (58%) mode change 100755 => 100644 delete mode 100755 src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessGrid.java create mode 100644 src/main/java/com/raoulvdberge/refinedstorage/item/WirelessGridItem.java delete mode 100644 src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridSettingsUpdate.java.off delete mode 100644 src/main/java/com/raoulvdberge/refinedstorage/network/MessageNetworkItemOpen.java.off create mode 100644 src/main/java/com/raoulvdberge/refinedstorage/network/OpenNetworkItemMessage.java create mode 100644 src/main/java/com/raoulvdberge/refinedstorage/network/grid/GridSettingsUpdateMessage.java create mode 100644 src/main/resources/assets/refinedstorage/models/item/creative_wireless_grid.json rename src/main/resources/{assets => data}/refinedstorage/recipes/wireless_grid.json (57%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6481d4526..36a425c78 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ - Port to Minecraft 1.14 (raoulvdberge) - Removed the Reader and Writer (raoulvdberge) - Removed covers (raoulvdberge) +- When binding a network item to a network you can now bind to any network block, not only the Controller (raoulvdberge) ### 1.6.16 - Updated Russian translation (Bytegm) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java b/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java index 506dad274..1e392a7a8 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java @@ -21,6 +21,7 @@ import net.minecraft.inventory.container.Slot; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.event.ModelBakeEvent; import net.minecraftforge.client.model.ModelLoader; +import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.client.registry.ClientRegistry; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; @@ -112,6 +113,8 @@ public class ClientSetup { @SubscribeEvent public void onClientSetup(FMLClientSetupEvent e) { + MinecraftForge.EVENT_BUS.register(new KeyInputListener()); + ScreenManager.registerFactory(RSContainers.FILTER, FilterScreen::new); ScreenManager.registerFactory(RSContainers.CONTROLLER, ControllerScreen::new); ScreenManager.registerFactory(RSContainers.DISK_DRIVE, DiskDriveScreen::new); @@ -130,6 +133,7 @@ public class ClientSetup { ScreenManager.registerFactory(RSContainers.WIRELESS_TRANSMITTER, WirelessTransmitterScreen::new); ScreenManager.registerFactory(RSContainers.STORAGE_MONITOR, StorageMonitorScreen::new); + ClientRegistry.registerKeyBinding(RSKeyBindings.OPEN_WIRELESS_GRID); ClientRegistry.registerKeyBinding(RSKeyBindings.FOCUS_SEARCH_BAR); ClientRegistry.registerKeyBinding(RSKeyBindings.CLEAR_GRID_CRAFTING_MATRIX); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RS.java b/src/main/java/com/raoulvdberge/refinedstorage/RS.java index 2c372dc91..84a9de971 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/RS.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RS.java @@ -8,6 +8,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkListener; import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkNodeListener; import com.raoulvdberge.refinedstorage.apiimpl.network.grid.factory.GridBlockGridFactory; +import com.raoulvdberge.refinedstorage.apiimpl.network.grid.factory.WirelessGridGridFactory; import com.raoulvdberge.refinedstorage.apiimpl.network.node.*; import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskdrive.DiskDriveNetworkNode; import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.FluidStorageNetworkNode; @@ -130,6 +131,7 @@ public final class RS { API.instance().getNetworkNodeRegistry().add(StorageMonitorNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new StorageMonitorNetworkNode(world, pos))); API.instance().getGridManager().add(GridBlockGridFactory.ID, new GridBlockGridFactory()); + API.instance().getGridManager().add(WirelessGridGridFactory.ID, new WirelessGridGridFactory()); API.instance().addExternalStorageProvider(StorageType.ITEM, new ItemExternalStorageProvider()); API.instance().addExternalStorageProvider(StorageType.FLUID, new FluidExternalStorageProvider()); @@ -326,6 +328,9 @@ public final class RS { e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.FLUID_INTERFACE)); e.getRegistry().register(new WirelessTransmitterBlockItem()); e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.STORAGE_MONITOR)); + + e.getRegistry().register(new WirelessGridItem(WirelessGridItem.Type.NORMAL)); + e.getRegistry().register(new WirelessGridItem(WirelessGridItem.Type.CREATIVE)); } /* TODO diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSItems.java b/src/main/java/com/raoulvdberge/refinedstorage/RSItems.java index b7760d547..455e30582 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSItems.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSItems.java @@ -4,10 +4,6 @@ import com.raoulvdberge.refinedstorage.item.*; import net.minecraftforge.registries.ObjectHolder; public final class RSItems { - public static final ItemWirelessGrid WIRELESS_GRID = null; - public static final ItemWirelessFluidGrid WIRELESS_FLUID_GRID = null; - public static final ItemWirelessCraftingMonitor WIRELESS_CRAFTING_MONITOR = null; - @ObjectHolder(RS.ID + ":quartz_enriched_iron") public static final QuartzEnrichedIronItem QUARTZ_ENRICHED_IRON = null; @ObjectHolder(RS.ID + ":silicon") @@ -26,26 +22,22 @@ public final class RSItems { public static final NetworkCardItem NETWORK_CARD = null; @ObjectHolder(RS.ID + ":security_card") public static final SecurityCardItem SECURITY_CARD = null; - @ObjectHolder(RS.ID + ":construction_core") public static final CoreItem CONSTRUCTION_CORE = null; @ObjectHolder(RS.ID + ":destruction_core") public static final CoreItem DESTRUCTION_CORE = null; - @ObjectHolder(RS.ID + ":raw_basic_processor") public static final ProcessorItem RAW_BASIC_PROCESSOR = null; @ObjectHolder(RS.ID + ":raw_improved_processor") public static final ProcessorItem RAW_IMPROVED_PROCESSOR = null; @ObjectHolder(RS.ID + ":raw_advanced_processor") public static final ProcessorItem RAW_ADVANCED_PROCESSOR = null; - @ObjectHolder(RS.ID + ":basic_processor") public static final ProcessorItem BASIC_PROCESSOR = null; @ObjectHolder(RS.ID + ":improved_processor") public static final ProcessorItem IMPROVED_PROCESSOR = null; @ObjectHolder(RS.ID + ":advanced_processor") public static final ProcessorItem ADVANCED_PROCESSOR = null; - @ObjectHolder(RS.ID + ":upgrade") public static final UpgradeItem UPGRADE = null; @ObjectHolder(RS.ID + ":speed_upgrade") @@ -64,7 +56,10 @@ public final class RSItems { public static final UpgradeItem FORTUNE_2_UPGRADE = null; @ObjectHolder(RS.ID + ":fortune_3_upgrade") public static final UpgradeItem FORTUNE_3_UPGRADE = null; - + @ObjectHolder(RS.ID + ":wireless_grid") + public static final WirelessGridItem WIRELESS_GRID = null; + @ObjectHolder(RS.ID + ":creative_wireless_grid") + public static final WirelessGridItem CREATIVE_WIRELESS_GRID = null; @ObjectHolder(RS.ID + ":1k_storage_part") public static final StoragePartItem ONE_K_STORAGE_PART = null; @ObjectHolder(RS.ID + ":4k_storage_part") @@ -73,7 +68,6 @@ public final class RSItems { public static final StoragePartItem SIXTEEN_K_STORAGE_PART = null; @ObjectHolder(RS.ID + ":64k_storage_part") public static final StoragePartItem SIXTY_FOUR_K_STORAGE_PART = null; - @ObjectHolder(RS.ID + ":1k_storage_disk") public static final StorageDiskItem ONE_K_STORAGE_DISK = null; @ObjectHolder(RS.ID + ":4k_storage_disk") @@ -84,7 +78,6 @@ public final class RSItems { public static final StorageDiskItem SIXTY_FOUR_K_STORAGE_DISK = null; @ObjectHolder(RS.ID + ":creative_storage_disk") public static final StorageDiskItem CREATIVE_STORAGE_DISK = null; - @ObjectHolder(RS.ID + ":64k_fluid_storage_part") public static final FluidStoragePartItem SIXTY_FOUR_K_FLUID_STORAGE_PART = null; @ObjectHolder(RS.ID + ":256k_fluid_storage_part") @@ -93,7 +86,6 @@ public final class RSItems { public static final FluidStoragePartItem THOUSAND_TWENTY_FOUR_K_FLUID_STORAGE_PART = null; @ObjectHolder(RS.ID + ":4096k_fluid_storage_part") public static final FluidStoragePartItem FOUR_THOUSAND_NINETY_SIX_K_FLUID_STORAGE_PART = null; - @ObjectHolder(RS.ID + ":64k_fluid_storage_disk") public static final FluidStorageDiskItem SIXTY_FOUR_K_FLUID_STORAGE_DISK = null; @ObjectHolder(RS.ID + ":256k_fluid_storage_disk") @@ -104,4 +96,7 @@ public final class RSItems { public static final FluidStorageDiskItem FOUR_THOUSAND_NINETY_SIX_K_FLUID_STORAGE_DISK = null; @ObjectHolder(RS.ID + ":creative_fluid_storage_disk") public static final FluidStorageDiskItem CREATIVE_FLUID_STORAGE_DISK = null; + + public static final ItemWirelessFluidGrid WIRELESS_FLUID_GRID = null; + public static final ItemWirelessCraftingMonitor WIRELESS_CRAFTING_MONITOR = null; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSKeyBindings.java b/src/main/java/com/raoulvdberge/refinedstorage/RSKeyBindings.java index 8ca06cc2f..fe27c85bc 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSKeyBindings.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSKeyBindings.java @@ -8,18 +8,23 @@ import org.lwjgl.glfw.GLFW; public final class RSKeyBindings { /* - public static final KeyBinding OPEN_WIRELESS_GRID = new KeyBinding("key.refinedstorage.openWirelessGrid", KeyConflictContext.IN_GAME, 0, "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(OPEN_WIRELESS_GRID); ClientRegistry.registerKeyBinding(OPEN_WIRELESS_FLUID_GRID); ClientRegistry.registerKeyBinding(OPEN_PORTABLE_GRID); ClientRegistry.registerKeyBinding(OPEN_WIRELESS_CRAFTING_MONITOR); }*/ + public static final KeyBinding OPEN_WIRELESS_GRID = new KeyBinding( + "key.refinedstorage.openWirelessGrid", + KeyConflictContext.IN_GAME, + InputMappings.INPUT_INVALID, + "Refined Storage" + ); + public static final KeyBinding FOCUS_SEARCH_BAR = new KeyBinding( "key.refinedstorage.focusSearchBar", KeyConflictContext.GUI, diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSOldConfig.java b/src/main/java/com/raoulvdberge/refinedstorage/RSOldConfig.java index 9234a68d7..3c10e15f8 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSOldConfig.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSOldConfig.java @@ -11,14 +11,6 @@ public class RSOldConfig { public int diskManipulatorUsage; //endregion - //region Wireless Grid - public boolean wirelessGridUsesEnergy; - public int wirelessGridCapacity; - public int wirelessGridOpenUsage; - public int wirelessGridExtractUsage; - public int wirelessGridInsertUsage; - //endregion - //region Portable Grid public boolean portableGridUsesEnergy; public int portableGridCapacity; @@ -49,7 +41,6 @@ public class RSOldConfig { //region Categories private static final String ENERGY = "energy"; - private static final String WIRELESS_GRID = "wirelessGrid"; private static final String PORTABLE_GRID = "portableGrid"; private static final String WIRELESS_FLUID_GRID = "wirelessFluidGrid"; private static final String WIRELESS_CRAFTING_MONITOR = "wirelessCraftingMonitor"; @@ -67,14 +58,6 @@ public class RSOldConfig { diskManipulatorUsage = config.getInt("diskManipulator", ENERGY, 3, 0, Integer.MAX_VALUE, "The energy used by Disk Manipulators"); //endregion - //region Wireless Grid - wirelessGridUsesEnergy = config.getBoolean("usesEnergy", WIRELESS_GRID, true, "Whether the Wireless Grid uses energy"); - wirelessGridCapacity = config.getInt("capacity", WIRELESS_GRID, 3200, 0, Integer.MAX_VALUE, "The energy capacity of the Wireless Grid"); - wirelessGridOpenUsage = config.getInt("open", WIRELESS_GRID, 30, 0, Integer.MAX_VALUE, "The energy used by the Wireless Grid to open"); - wirelessGridInsertUsage = config.getInt("insert", WIRELESS_GRID, 3, 0, Integer.MAX_VALUE, "The energy used by the Wireless Grid to insert items"); - wirelessGridExtractUsage = config.getInt("extract", WIRELESS_GRID, 3, 0, Integer.MAX_VALUE, "The energy used by the Wireless Grid to extract items"); - //endregion - //region Portable Grid portableGridUsesEnergy = config.getBoolean("usesEnergy", PORTABLE_GRID, true, "Whether the Portable Grid uses energy"); portableGridCapacity = config.getInt("capacity", PORTABLE_GRID, 3200, 0, Integer.MAX_VALUE, "The energy capacity of the Portable Grid"); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetwork.java b/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetwork.java index 252f8f89f..2f69a7bca 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetwork.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetwork.java @@ -3,7 +3,7 @@ package com.raoulvdberge.refinedstorage.api.network; import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingManager; 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.INetworkItemHandler; +import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemManager; import com.raoulvdberge.refinedstorage.api.network.security.ISecurityManager; import com.raoulvdberge.refinedstorage.api.storage.IStorage; import com.raoulvdberge.refinedstorage.api.storage.cache.IStorageCache; @@ -80,9 +80,9 @@ public interface INetwork { IFluidGridHandler getFluidGridHandler(); /** - * @return the {@link INetworkItemHandler} of this network + * @return the {@link INetworkItemManager} of this network */ - INetworkItemHandler getNetworkItemHandler(); + INetworkItemManager getNetworkItemManager(); /** * @return the {@link IStorageCache} of this network diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/network/grid/ICraftingGridBehavior.java b/src/main/java/com/raoulvdberge/refinedstorage/api/network/grid/ICraftingGridBehavior.java index c1bed7fd7..f581fe748 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/network/grid/ICraftingGridBehavior.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/network/grid/ICraftingGridBehavior.java @@ -15,7 +15,7 @@ public interface ICraftingGridBehavior { * @param recipe the recipe * @param player the player */ - void onCrafted(IGridNetworkAware grid, ICraftingRecipe recipe, PlayerEntity player); + void onCrafted(INetworkAwareGrid grid, ICraftingRecipe recipe, PlayerEntity player); /** * Logic for crafting with shift click (mass crafting). @@ -23,7 +23,7 @@ public interface ICraftingGridBehavior { * @param grid the grid * @param player the player */ - void onCraftedShift(IGridNetworkAware grid, PlayerEntity player); + void onCraftedShift(INetworkAwareGrid grid, PlayerEntity player); /** * Logic for when a recipe is transferred to the grid. @@ -32,5 +32,5 @@ public interface ICraftingGridBehavior { * @param player the player * @param recipe the recipe */ - void onRecipeTransfer(IGridNetworkAware grid, PlayerEntity player, ItemStack[][] recipe); + void onRecipeTransfer(INetworkAwareGrid grid, PlayerEntity player, ItemStack[][] recipe); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/network/grid/IGridNetworkAware.java b/src/main/java/com/raoulvdberge/refinedstorage/api/network/grid/INetworkAwareGrid.java similarity index 86% rename from src/main/java/com/raoulvdberge/refinedstorage/api/network/grid/IGridNetworkAware.java rename to src/main/java/com/raoulvdberge/refinedstorage/api/network/grid/INetworkAwareGrid.java index 173e350b7..48f362af9 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/network/grid/IGridNetworkAware.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/network/grid/INetworkAwareGrid.java @@ -7,7 +7,7 @@ import javax.annotation.Nullable; /** * A grid that knows about a network. */ -public interface IGridNetworkAware extends IGrid { +public interface INetworkAwareGrid extends IGrid { /** * @return the network, or null if no network is available */ diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/network/item/INetworkItemHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/api/network/item/INetworkItemManager.java old mode 100755 new mode 100644 similarity index 96% rename from src/main/java/com/raoulvdberge/refinedstorage/api/network/item/INetworkItemHandler.java rename to src/main/java/com/raoulvdberge/refinedstorage/api/network/item/INetworkItemManager.java index 19f5062ff..d2fa8d703 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/network/item/INetworkItemHandler.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/network/item/INetworkItemManager.java @@ -9,7 +9,7 @@ import javax.annotation.Nullable; * This is the handler for network items of a network. * It stores which player is currently using what network item. */ -public interface INetworkItemHandler { +public interface INetworkItemManager { /** * Called when a player opens a network item. * diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/network/item/INetworkItemProvider.java b/src/main/java/com/raoulvdberge/refinedstorage/api/network/item/INetworkItemProvider.java index 3f537bf30..e42657c5b 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/network/item/INetworkItemProvider.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/network/item/INetworkItemProvider.java @@ -18,5 +18,5 @@ public interface INetworkItemProvider { * @return the network item */ @Nonnull - INetworkItem provide(INetworkItemHandler handler, PlayerEntity player, ItemStack stack); + INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/Network.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/Network.java index e00119045..6180ef055 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/Network.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/Network.java @@ -7,7 +7,7 @@ import com.raoulvdberge.refinedstorage.api.network.INetworkNodeGraph; import com.raoulvdberge.refinedstorage.api.network.NetworkType; 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.INetworkItemHandler; +import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemManager; import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode; import com.raoulvdberge.refinedstorage.api.network.security.ISecurityManager; import com.raoulvdberge.refinedstorage.api.storage.AccessType; @@ -20,7 +20,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.CraftingManager; import com.raoulvdberge.refinedstorage.apiimpl.network.grid.handler.FluidGridHandler; import com.raoulvdberge.refinedstorage.apiimpl.network.grid.handler.ItemGridHandler; -import com.raoulvdberge.refinedstorage.apiimpl.network.item.NetworkItemHandler; +import com.raoulvdberge.refinedstorage.apiimpl.network.item.NetworkItemManager; import com.raoulvdberge.refinedstorage.apiimpl.network.node.RootNetworkNode; import com.raoulvdberge.refinedstorage.apiimpl.network.security.SecurityManager; import com.raoulvdberge.refinedstorage.apiimpl.storage.cache.FluidStorageCache; @@ -55,7 +55,7 @@ public class Network implements INetwork, IRedstoneConfigurable { private final IItemGridHandler itemGridHandler = new ItemGridHandler(this); private final IFluidGridHandler fluidGridHandler = new FluidGridHandler(this); - private final INetworkItemHandler networkItemHandler = new NetworkItemHandler(this); + private final INetworkItemManager networkItemManager = new NetworkItemManager(this); private final INetworkNodeGraph nodeGraph = new NetworkNodeGraph(this); private final ICraftingManager craftingManager = new CraftingManager(this); private final ISecurityManager securityManager = new SecurityManager(this); @@ -179,8 +179,8 @@ public class Network implements INetwork, IRedstoneConfigurable { } @Override - public INetworkItemHandler getNetworkItemHandler() { - return networkItemHandler; + public INetworkItemManager getNetworkItemManager() { + return networkItemManager; } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/CraftingGridBehavior.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/CraftingGridBehavior.java index fa5b39945..7564d307d 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/CraftingGridBehavior.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/CraftingGridBehavior.java @@ -3,7 +3,7 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.grid; import com.raoulvdberge.refinedstorage.api.network.INetwork; import com.raoulvdberge.refinedstorage.api.network.grid.GridType; import com.raoulvdberge.refinedstorage.api.network.grid.ICraftingGridBehavior; -import com.raoulvdberge.refinedstorage.api.network.grid.IGridNetworkAware; +import com.raoulvdberge.refinedstorage.api.network.grid.INetworkAwareGrid; import com.raoulvdberge.refinedstorage.api.network.security.Permission; import com.raoulvdberge.refinedstorage.api.util.Action; import com.raoulvdberge.refinedstorage.api.util.IComparer; @@ -22,7 +22,7 @@ import java.util.List; public class CraftingGridBehavior implements ICraftingGridBehavior { @Override - public void onCrafted(IGridNetworkAware grid, ICraftingRecipe recipe, PlayerEntity player) { + public void onCrafted(INetworkAwareGrid grid, ICraftingRecipe recipe, PlayerEntity player) { NonNullList remainder = recipe.getRemainingItems(grid.getCraftingMatrix()); INetwork network = grid.getNetwork(); @@ -68,7 +68,7 @@ public class CraftingGridBehavior implements ICraftingGridBehavior { } @Override - public void onCraftedShift(IGridNetworkAware grid, PlayerEntity player) { + public void onCraftedShift(INetworkAwareGrid grid, PlayerEntity player) { List craftedItemsList = new ArrayList<>(); int amountCrafted = 0; ItemStack crafted = grid.getCraftingResult().getStackInSlot(0); @@ -102,7 +102,7 @@ public class CraftingGridBehavior implements ICraftingGridBehavior { } @Override - public void onRecipeTransfer(IGridNetworkAware grid, PlayerEntity player, ItemStack[][] recipe) { + public void onRecipeTransfer(INetworkAwareGrid grid, PlayerEntity player, ItemStack[][] recipe) { INetwork network = grid.getNetwork(); if (network != null && grid.getGridType() == GridType.CRAFTING && !network.getSecurityManager().hasPermission(Permission.EXTRACT, player)) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/factory/WirelessGridGridFactory.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/factory/WirelessGridGridFactory.java index bfb1f37d2..b032cb29a 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/factory/WirelessGridGridFactory.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/factory/WirelessGridGridFactory.java @@ -1,5 +1,6 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.grid.factory; +import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.api.network.grid.GridFactoryType; import com.raoulvdberge.refinedstorage.api.network.grid.IGrid; import com.raoulvdberge.refinedstorage.api.network.grid.IGridFactory; @@ -7,16 +8,19 @@ import com.raoulvdberge.refinedstorage.tile.grid.WirelessGrid; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import javax.annotation.Nullable; public class WirelessGridGridFactory implements IGridFactory { + public static final ResourceLocation ID = new ResourceLocation(RS.ID, "wireless_grid"); + @Nullable @Override public IGrid createFromStack(PlayerEntity player, ItemStack stack) { - return new WirelessGrid(stack); + return new WirelessGrid(stack, player.getServer()); } @Nullable diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/handler/ItemGridHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/handler/ItemGridHandler.java index 2c6ae4080..2a40fcc8a 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/handler/ItemGridHandler.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/handler/ItemGridHandler.java @@ -100,7 +100,7 @@ public class ItemGridHandler implements IItemGridHandler { } } - // TODO network.getNetworkItemHandler().drainEnergy(player, RS.INSTANCE.config.wirelessGridExtractUsage); + network.getNetworkItemManager().drainEnergy(player, RS.SERVER_CONFIG.getWirelessGrid().getExtractUsage()); } } @@ -115,7 +115,7 @@ public class ItemGridHandler implements IItemGridHandler { ItemStack remainder = network.insertItem(stack, stack.getCount(), Action.PERFORM); - // TODO network.getNetworkItemHandler().drainEnergy(player, RS.INSTANCE.config.wirelessGridInsertUsage); + network.getNetworkItemManager().drainEnergy(player, RS.SERVER_CONFIG.getWirelessGrid().getInsertUsage()); return remainder; } @@ -143,7 +143,7 @@ public class ItemGridHandler implements IItemGridHandler { player.updateHeldItem(); - // TODO network.getNetworkItemHandler().drainEnergy(player, RS.INSTANCE.config.wirelessGridInsertUsage); + network.getNetworkItemManager().drainEnergy(player, RS.SERVER_CONFIG.getWirelessGrid().getInsertUsage()); } @Override @@ -229,6 +229,6 @@ public class ItemGridHandler implements IItemGridHandler { network.getCraftingManager().cancel(id); - network.getNetworkItemHandler().drainEnergy(player, id == null ? RS.INSTANCE.config.wirelessCraftingMonitorCancelAllUsage : RS.INSTANCE.config.wirelessCraftingMonitorCancelUsage); + network.getNetworkItemManager().drainEnergy(player, id == null ? RS.INSTANCE.config.wirelessCraftingMonitorCancelAllUsage : RS.INSTANCE.config.wirelessCraftingMonitorCancelUsage); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemManager.java old mode 100755 new mode 100644 similarity index 90% rename from src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemHandler.java rename to src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemManager.java index 5f09dc75a..2ea7b19db --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemHandler.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemManager.java @@ -3,7 +3,7 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.item; import com.raoulvdberge.refinedstorage.api.network.INetwork; import com.raoulvdberge.refinedstorage.api.network.IWirelessTransmitter; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem; -import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler; +import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemManager; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemProvider; import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode; import net.minecraft.entity.player.PlayerEntity; @@ -13,11 +13,11 @@ import net.minecraft.util.text.TranslationTextComponent; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -public class NetworkItemHandler implements INetworkItemHandler { - private INetwork network; - private Map items = new ConcurrentHashMap<>(); +public class NetworkItemManager implements INetworkItemManager { + private final INetwork network; + private final Map items = new ConcurrentHashMap<>(); - public NetworkItemHandler(INetwork network) { + public NetworkItemManager(INetwork network) { this.network = network; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessCraftingMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessCraftingMonitor.java index 3c1fb9752..eacd32ff6 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessCraftingMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessCraftingMonitor.java @@ -3,7 +3,7 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.item; 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.INetworkItemManager; import com.raoulvdberge.refinedstorage.api.network.security.Permission; import com.raoulvdberge.refinedstorage.util.WorldUtils; import net.minecraft.entity.player.PlayerEntity; @@ -12,12 +12,12 @@ import net.minecraftforge.energy.CapabilityEnergy; import net.minecraftforge.energy.IEnergyStorage; public class NetworkItemWirelessCraftingMonitor implements INetworkItem { - private INetworkItemHandler handler; + private INetworkItemManager handler; private PlayerEntity player; private ItemStack stack; private int invIndex; - public NetworkItemWirelessCraftingMonitor(INetworkItemHandler handler, PlayerEntity player, ItemStack stack, int invIndex) { + public NetworkItemWirelessCraftingMonitor(INetworkItemManager handler, PlayerEntity player, ItemStack stack, int invIndex) { this.handler = handler; this.player = player; this.stack = stack; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessFluidGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessFluidGrid.java index 2892b855a..52da7fe36 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessFluidGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessFluidGrid.java @@ -3,7 +3,7 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.item; 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.INetworkItemManager; import com.raoulvdberge.refinedstorage.api.network.security.Permission; import com.raoulvdberge.refinedstorage.util.WorldUtils; import net.minecraft.entity.player.PlayerEntity; @@ -12,11 +12,11 @@ import net.minecraftforge.energy.CapabilityEnergy; import net.minecraftforge.energy.IEnergyStorage; public class NetworkItemWirelessFluidGrid implements INetworkItem { - private INetworkItemHandler handler; + private INetworkItemManager handler; private PlayerEntity player; private ItemStack stack; - public NetworkItemWirelessFluidGrid(INetworkItemHandler handler, PlayerEntity player, ItemStack stack) { + public NetworkItemWirelessFluidGrid(INetworkItemManager handler, PlayerEntity player, ItemStack stack) { this.handler = handler; this.player = player; this.stack = stack; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/WirelessGridNetworkItem.java old mode 100755 new mode 100644 similarity index 58% rename from src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessGrid.java rename to src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/WirelessGridNetworkItem.java index f6f856fb3..ed2b56477 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/WirelessGridNetworkItem.java @@ -3,20 +3,24 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.item; 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.INetworkItemManager; import com.raoulvdberge.refinedstorage.api.network.security.Permission; +import com.raoulvdberge.refinedstorage.apiimpl.API; +import com.raoulvdberge.refinedstorage.apiimpl.network.grid.factory.WirelessGridGridFactory; +import com.raoulvdberge.refinedstorage.item.WirelessGridItem; import com.raoulvdberge.refinedstorage.util.WorldUtils; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.item.ItemStack; import net.minecraftforge.energy.CapabilityEnergy; import net.minecraftforge.energy.IEnergyStorage; -public class NetworkItemWirelessGrid implements INetworkItem { - private INetworkItemHandler handler; +public class WirelessGridNetworkItem implements INetworkItem { + private INetworkItemManager handler; private PlayerEntity player; private ItemStack stack; - public NetworkItemWirelessGrid(INetworkItemHandler handler, PlayerEntity player, ItemStack stack) { + public WirelessGridNetworkItem(INetworkItemManager handler, PlayerEntity player, ItemStack stack) { this.handler = handler; this.player = player; this.stack = stack; @@ -31,7 +35,10 @@ public class NetworkItemWirelessGrid implements INetworkItem { public boolean onOpen(INetwork network) { IEnergyStorage energy = stack.getCapability(CapabilityEnergy.ENERGY, null).orElse(null); - if (RS.INSTANCE.config.wirelessGridUsesEnergy /* TODO && stack.getItemDamage() != ItemWirelessGrid.TYPE_CREATIVE */ && energy != null && energy.getEnergyStored() <= RS.INSTANCE.config.wirelessGridOpenUsage) { + if (RS.SERVER_CONFIG.getWirelessGrid().getUseEnergy() && + ((WirelessGridItem) stack.getItem()).getType() != WirelessGridItem.Type.CREATIVE && + energy != null && + energy.getEnergyStored() <= RS.SERVER_CONFIG.getWirelessGrid().getOpenUsage()) { return false; } @@ -41,18 +48,17 @@ public class NetworkItemWirelessGrid implements INetworkItem { return false; } - // TODO API.instance().getGridManager().openGrid(WirelessGrid.ID, (ServerPlayerEntity) player, stack); + API.instance().getGridManager().openGrid(WirelessGridGridFactory.ID, (ServerPlayerEntity) player, stack); - drainEnergy(RS.INSTANCE.config.wirelessGridOpenUsage); + drainEnergy(RS.SERVER_CONFIG.getWirelessGrid().getOpenUsage()); return true; } @Override public void drainEnergy(int energy) { - if (RS.INSTANCE.config.wirelessGridUsesEnergy /* TODO && stack.getItemDamage() != ItemWirelessGrid.TYPE_CREATIVE*/) { - stack.getCapability(CapabilityEnergy.ENERGY, null).ifPresent(energyStorage -> { - + if (RS.SERVER_CONFIG.getWirelessGrid().getUseEnergy() && ((WirelessGridItem) stack.getItem()).getType() != WirelessGridItem.Type.CREATIVE) { + stack.getCapability(CapabilityEnergy.ENERGY).ifPresent(energyStorage -> { energyStorage.extractEnergy(energy, false); if (energyStorage.getEnergyStored() <= 0) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/GridNetworkNode.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/GridNetworkNode.java index 74ab12246..184ba46ed 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/GridNetworkNode.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/GridNetworkNode.java @@ -56,7 +56,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -public class GridNetworkNode extends NetworkNode implements IGridNetworkAware, IType { +public class GridNetworkNode extends NetworkNode implements INetworkAwareGrid, IType { public static final ResourceLocation ID = new ResourceLocation(RS.ID, "grid"); public static final ResourceLocation CRAFTING_ID = new ResourceLocation(RS.ID, "crafting_grid"); public static final ResourceLocation PATTERN_ID = new ResourceLocation(RS.ID, "pattern_grid"); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/config/ServerConfig.java b/src/main/java/com/raoulvdberge/refinedstorage/config/ServerConfig.java index e77ce36f7..7264b4ded 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/config/ServerConfig.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/config/ServerConfig.java @@ -25,6 +25,7 @@ public class ServerConfig { private FluidInterface fluidInterface; private WirelessTransmitter wirelessTransmitter; private StorageMonitor storageMonitor; + private WirelessGrid wirelessGrid; public ServerConfig() { upgrades = new Upgrades(); @@ -46,6 +47,7 @@ public class ServerConfig { fluidInterface = new FluidInterface(); wirelessTransmitter = new WirelessTransmitter(); storageMonitor = new StorageMonitor(); + wirelessGrid = new WirelessGrid(); spec = builder.build(); } @@ -126,27 +128,39 @@ public class ServerConfig { return storageMonitor; } + public WirelessGrid getWirelessGrid() { + return wirelessGrid; + } + public ForgeConfigSpec getSpec() { return spec; } public class Controller { + private final ForgeConfigSpec.BooleanValue useEnergy; + private final ForgeConfigSpec.IntValue capacity; private final ForgeConfigSpec.IntValue baseUsage; private final ForgeConfigSpec.IntValue maxTransfer; - private final ForgeConfigSpec.IntValue capacity; - private final ForgeConfigSpec.BooleanValue useEnergy; public Controller() { builder.push("controller"); + useEnergy = builder.comment("Whether the Controller uses energy").define("useEnergy", true); + capacity = builder.comment("The energy capacity of the Controller").defineInRange("capacity", 32000, 0, Integer.MAX_VALUE); baseUsage = builder.comment("The base energy used by the Controller").defineInRange("baseUsage", 0, 0, Integer.MAX_VALUE); maxTransfer = builder.comment("The maximum energy that the Controller can receive").defineInRange("maxTransfer", Integer.MAX_VALUE, 0, Integer.MAX_VALUE); - capacity = builder.comment("The energy capacity of the Controller").defineInRange("capacity", 32000, 0, Integer.MAX_VALUE); - useEnergy = builder.comment("Whether the Controller uses energy").define("useEnergy", true); builder.pop(); } + public boolean getUseEnergy() { + return useEnergy.get(); + } + + public int getCapacity() { + return capacity.get(); + } + public int getBaseUsage() { return baseUsage.get(); } @@ -154,14 +168,6 @@ public class ServerConfig { public int getMaxTransfer() { return maxTransfer.get(); } - - public int getCapacity() { - return capacity.get(); - } - - public boolean getUseEnergy() { - return useEnergy.get(); - } } public class Cable { @@ -583,4 +589,44 @@ public class ServerConfig { return usage.get(); } } + + public class WirelessGrid { + private final ForgeConfigSpec.BooleanValue useEnergy; + private final ForgeConfigSpec.IntValue capacity; + private final ForgeConfigSpec.IntValue openUsage; + private final ForgeConfigSpec.IntValue extractUsage; + private final ForgeConfigSpec.IntValue insertUsage; + + public WirelessGrid() { + builder.push("wirelessGrid"); + + useEnergy = builder.comment("Whether the Wireless Grid uses energy").define("useEnergy", true); + capacity = builder.comment("The energy capacity of the Wireless Grid").defineInRange("capacity", 3200, 0, Integer.MAX_VALUE); + openUsage = builder.comment("The energy used by the Wireless Grid to open").defineInRange("openUsage", 30, 0, Integer.MAX_VALUE); + extractUsage = builder.comment("The energy used by the Wireless Grid to extract items").defineInRange("extractUsage", 5, 0, Integer.MAX_VALUE); + insertUsage = builder.comment("The energy used by the Wireless Grid to insert items").defineInRange("insertUsage", 5, 0, Integer.MAX_VALUE); + + builder.pop(); + } + + public boolean getUseEnergy() { + return useEnergy.get(); + } + + public int getCapacity() { + return capacity.get(); + } + + public int getOpenUsage() { + return openUsage.get(); + } + + public int getExtractUsage() { + return extractUsage.get(); + } + + public int getInsertUsage() { + return insertUsage.get(); + } + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/energy/ItemEnergyStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/energy/ItemEnergyStorage.java index 3dd4c449e..48cb48519 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/energy/ItemEnergyStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/energy/ItemEnergyStorage.java @@ -2,29 +2,47 @@ package com.raoulvdberge.refinedstorage.energy; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; -import net.minecraftforge.common.util.INBTSerializable; import net.minecraftforge.energy.EnergyStorage; -public class ItemEnergyStorage extends EnergyStorage implements INBTSerializable { +public class ItemEnergyStorage extends EnergyStorage { private static final String NBT_ENERGY = "Energy"; + private ItemStack stack; + public ItemEnergyStorage(ItemStack stack, int capacity) { super(capacity, Integer.MAX_VALUE, Integer.MAX_VALUE); + this.stack = stack; this.energy = stack.hasTag() && stack.getTag().contains(NBT_ENERGY) ? stack.getTag().getInt(NBT_ENERGY) : 0; } @Override - public CompoundNBT serializeNBT() { - CompoundNBT tag = new CompoundNBT(); + public int receiveEnergy(int maxReceive, boolean simulate) { + int received = super.receiveEnergy(maxReceive, simulate); - tag.putInt(NBT_ENERGY, getEnergyStored()); + if (received > 0 && !simulate) { + if (!stack.hasTag()) { + stack.setTag(new CompoundNBT()); + } - return tag; + stack.getTag().putInt(NBT_ENERGY, getEnergyStored()); + } + + return received; } @Override - public void deserializeNBT(CompoundNBT tag) { - this.energy = tag.getInt(NBT_ENERGY); + public int extractEnergy(int maxExtract, boolean simulate) { + int extracted = super.extractEnergy(maxExtract, simulate); + + if (extracted > 0 && !simulate) { + if (!stack.hasTag()) { + stack.setTag(new CompoundNBT()); + } + + stack.getTag().putInt(NBT_ENERGY, getEnergyStored()); + } + + return extracted; } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/EnergyItem.java b/src/main/java/com/raoulvdberge/refinedstorage/item/EnergyItem.java index a8662b959..8c0f6bc96 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/EnergyItem.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/EnergyItem.java @@ -17,12 +17,13 @@ import net.minecraftforge.energy.IEnergyStorage; import javax.annotation.Nullable; import java.util.List; +import java.util.function.Supplier; public abstract class EnergyItem extends Item { - private final int energyCapacity; + private final Supplier energyCapacity; private final boolean creative; - public EnergyItem(Item.Properties properties, boolean creative, int energyCapacity) { + public EnergyItem(Item.Properties properties, boolean creative, Supplier energyCapacity) { super(properties); this.creative = creative; @@ -31,7 +32,7 @@ public abstract class EnergyItem extends Item { @Override public ICapabilityProvider initCapabilities(ItemStack stack, CompoundNBT tag) { - return new EnergyCapabilityProvider(stack, energyCapacity); + return new EnergyCapabilityProvider(stack, energyCapacity.get()); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessCraftingMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessCraftingMonitor.java index 656018640..036e56210 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessCraftingMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessCraftingMonitor.java @@ -1,23 +1,24 @@ package com.raoulvdberge.refinedstorage.item; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem; -import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler; +import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemManager; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import javax.annotation.Nonnull; +import java.util.function.Supplier; public class ItemWirelessCraftingMonitor extends NetworkItem { public static final String NBT_TAB_SELECTED = "TabSelected"; public static final String NBT_TAB_PAGE = "TabPage"; - public ItemWirelessCraftingMonitor(Properties item, boolean creative, int energyCapacity) { + public ItemWirelessCraftingMonitor(Properties item, boolean creative, Supplier energyCapacity) { super(item, creative, energyCapacity); } @Nonnull @Override - public INetworkItem provide(INetworkItemHandler handler, PlayerEntity player, ItemStack stack) { + public INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack) { return null; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessFluidGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessFluidGrid.java index 9bf7b9e36..4cd37e9ef 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessFluidGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessFluidGrid.java @@ -1,20 +1,21 @@ package com.raoulvdberge.refinedstorage.item; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem; -import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler; +import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemManager; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import javax.annotation.Nonnull; +import java.util.function.Supplier; public class ItemWirelessFluidGrid extends NetworkItem { - public ItemWirelessFluidGrid(Properties item, boolean creative, int energyCapacity) { + public ItemWirelessFluidGrid(Properties item, boolean creative, Supplier energyCapacity) { super(item, creative, energyCapacity); } @Nonnull @Override - public INetworkItem provide(INetworkItemHandler handler, PlayerEntity player, ItemStack stack) { + public INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack) { return null; } /* TODO diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessGrid.java deleted file mode 100755 index d119122c8..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessGrid.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.raoulvdberge.refinedstorage.item; - -import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem; -import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; - -import javax.annotation.Nonnull; - -public class ItemWirelessGrid extends NetworkItem { - public ItemWirelessGrid(Properties item, boolean creative, int energyCapacity) { - super(item, creative, energyCapacity); - } - - @Nonnull - @Override - public INetworkItem provide(INetworkItemHandler handler, PlayerEntity player, ItemStack stack) { - return null; - } - -/* TODO - @Override - @SideOnly(Side.CLIENT) - public void registerModels(IModelRegistration modelRegistration) { - modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); - } - - @Override - @Nonnull - public INetworkItem provide(INetworkItemHandler handler, PlayerEntity player, ItemStack stack) { - return new NetworkItemWirelessGrid(handler, player, stack); - } - - public static int getViewType(ItemStack stack) { - return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_VIEW_TYPE)) ? stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_VIEW_TYPE) : IGrid.VIEW_TYPE_NORMAL; - } - - public static int getSortingType(ItemStack stack) { - return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_SORTING_TYPE)) ? stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_SORTING_TYPE) : IGrid.SORTING_TYPE_QUANTITY; - } - - public static int getSortingDirection(ItemStack stack) { - return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_SORTING_DIRECTION)) ? stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_SORTING_DIRECTION) : IGrid.SORTING_DIRECTION_DESCENDING; - } - - public static int getSearchBoxMode(ItemStack stack) { - return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_SEARCH_BOX_MODE)) ? stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_SEARCH_BOX_MODE) : IGrid.SEARCH_BOX_MODE_NORMAL; - } - - public static int getTabSelected(ItemStack stack) { - return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_TAB_SELECTED)) ? stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_TAB_SELECTED) : -1; - } - - public static int getTabPage(ItemStack stack) { - return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_TAB_PAGE)) ? stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_TAB_PAGE) : 0; - } - - public static int getSize(ItemStack stack) { - return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_SIZE)) ? stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_SIZE) : IGrid.SIZE_STRETCH; - }*/ -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/NetworkItem.java b/src/main/java/com/raoulvdberge/refinedstorage/item/NetworkItem.java index 72f1b1ad4..9bf8f09d8 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/NetworkItem.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/NetworkItem.java @@ -1,9 +1,9 @@ package com.raoulvdberge.refinedstorage.item; -import com.raoulvdberge.refinedstorage.RSBlocks; import com.raoulvdberge.refinedstorage.api.network.INetwork; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemProvider; -import net.minecraft.block.Block; +import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeProxy; +import com.raoulvdberge.refinedstorage.capability.NetworkNodeProxyCapability; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; @@ -28,14 +28,15 @@ import net.minecraftforge.common.DimensionManager; import javax.annotation.Nullable; import java.util.List; import java.util.function.Consumer; +import java.util.function.Supplier; public abstract class NetworkItem extends EnergyItem implements INetworkItemProvider { - private static final String NBT_CONTROLLER_X = "ControllerX"; - private static final String NBT_CONTROLLER_Y = "ControllerY"; - private static final String NBT_CONTROLLER_Z = "ControllerZ"; + private static final String NBT_NODE_X = "NodeX"; + private static final String NBT_NODE_Y = "NodeY"; + private static final String NBT_NODE_Z = "NodeZ"; private static final String NBT_DIMENSION = "Dimension"; - public NetworkItem(Item.Properties item, boolean creative, int energyCapacity) { + public NetworkItem(Item.Properties item, boolean creative, Supplier energyCapacity) { super(item, creative, energyCapacity); addPropertyOverride(new ResourceLocation("connected"), (stack, world, entity) -> (entity != null && isValid(stack)) ? 1.0f : 0.0f); @@ -46,26 +47,51 @@ public abstract class NetworkItem extends EnergyItem implements INetworkItemProv ItemStack stack = player.getHeldItem(hand); if (!world.isRemote) { - applyNetwork(world.getServer(), stack, n -> n.getNetworkItemHandler().open(player, player.getHeldItem(hand)), player::sendMessage); + applyNetwork(world.getServer(), stack, n -> n.getNetworkItemManager().open(player, player.getHeldItem(hand)), player::sendMessage); } return ActionResult.newResult(ActionResultType.SUCCESS, stack); } - private void applyNetwork(MinecraftServer server, ItemStack stack, Consumer onNetwork, Consumer onError) { + public void applyNetwork(MinecraftServer server, ItemStack stack, Consumer onNetwork, Consumer onError) { + TranslationTextComponent notFound = new TranslationTextComponent("misc.refinedstorage.network_item.not_found"); + if (!isValid(stack)) { - onError.accept(new TranslationTextComponent("misc.refinedstorage.network_item.not_found")); - } else { - World networkWorld = DimensionManager.getWorld(server, getDimension(stack), true, true); - - TileEntity network; - - if (networkWorld != null && ((network = networkWorld.getTileEntity(new BlockPos(getX(stack), getY(stack), getZ(stack)))) instanceof INetwork)) { - onNetwork.accept((INetwork) network); - } else { - onError.accept(new TranslationTextComponent("misc.refinedstorage.network_item.not_found")); - } + onError.accept(notFound); + return; } + + DimensionType dimension = getDimension(stack); + if (dimension == null) { + onError.accept(notFound); + return; + } + + World nodeWorld = DimensionManager.getWorld(server, dimension, true, true); + if (nodeWorld == null) { + onError.accept(notFound); + return; + } + + TileEntity node = nodeWorld.getTileEntity(new BlockPos(getX(stack), getY(stack), getZ(stack))); + if (node == null) { + onError.accept(notFound); + return; + } + + INetworkNodeProxy proxy = node.getCapability(NetworkNodeProxyCapability.NETWORK_NODE_PROXY_CAPABILITY).orElse(null); + if (proxy == null) { + onError.accept(notFound); + return; + } + + INetwork network = proxy.getNode().getNetwork(); + if (network == null) { + onError.accept(notFound); + return; + } + + onNetwork.accept(network); } @Override @@ -81,23 +107,30 @@ public abstract class NetworkItem extends EnergyItem implements INetworkItemProv public ActionResultType onItemUse(ItemUseContext ctx) { ItemStack stack = ctx.getPlayer().getHeldItem(ctx.getHand()); - Block block = ctx.getWorld().getBlockState(ctx.getPos()).getBlock(); + TileEntity tile = ctx.getWorld().getTileEntity(ctx.getPos()); + if (tile != null) { + INetworkNodeProxy proxy = tile.getCapability(NetworkNodeProxyCapability.NETWORK_NODE_PROXY_CAPABILITY).orElse(null); - if (block == RSBlocks.CONTROLLER) { - CompoundNBT tag = stack.getTag(); + if (proxy != null) { + INetwork network = proxy.getNode().getNetwork(); - if (tag == null) { - tag = new CompoundNBT(); + if (network != null) { + CompoundNBT tag = stack.getTag(); + + if (tag == null) { + tag = new CompoundNBT(); + } + + tag.putInt(NBT_NODE_X, network.getPosition().getX()); + tag.putInt(NBT_NODE_Y, network.getPosition().getY()); + tag.putInt(NBT_NODE_Z, network.getPosition().getZ()); + tag.putString(NBT_DIMENSION, DimensionType.getKey(ctx.getWorld().getDimension().getType()).toString()); + + stack.setTag(tag); + + return ActionResultType.SUCCESS; + } } - - tag.putInt(NBT_CONTROLLER_X, ctx.getPos().getX()); - tag.putInt(NBT_CONTROLLER_Y, ctx.getPos().getY()); - tag.putInt(NBT_CONTROLLER_Z, ctx.getPos().getZ()); - tag.putString(NBT_DIMENSION, DimensionType.getKey(ctx.getWorld().getDimension().getType()).toString()); - - stack.setTag(tag); - - return ActionResultType.SUCCESS; } return ActionResultType.PASS; @@ -118,15 +151,15 @@ public abstract class NetworkItem extends EnergyItem implements INetworkItemProv } public static int getX(ItemStack stack) { - return stack.getTag().getInt(NBT_CONTROLLER_X); + return stack.getTag().getInt(NBT_NODE_X); } public static int getY(ItemStack stack) { - return stack.getTag().getInt(NBT_CONTROLLER_Y); + return stack.getTag().getInt(NBT_NODE_Y); } public static int getZ(ItemStack stack) { - return stack.getTag().getInt(NBT_CONTROLLER_Z); + return stack.getTag().getInt(NBT_NODE_Z); } @Override @@ -136,9 +169,9 @@ public abstract class NetworkItem extends EnergyItem implements INetworkItemProv public boolean isValid(ItemStack stack) { return stack.hasTag() - && stack.getTag().contains(NBT_CONTROLLER_X) - && stack.getTag().contains(NBT_CONTROLLER_Y) - && stack.getTag().contains(NBT_CONTROLLER_Z) + && stack.getTag().contains(NBT_NODE_X) + && stack.getTag().contains(NBT_NODE_Y) + && stack.getTag().contains(NBT_NODE_Z) && stack.getTag().contains(NBT_DIMENSION); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/WirelessGridItem.java b/src/main/java/com/raoulvdberge/refinedstorage/item/WirelessGridItem.java new file mode 100644 index 000000000..06a8bd49f --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/WirelessGridItem.java @@ -0,0 +1,68 @@ +package com.raoulvdberge.refinedstorage.item; + +import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.api.network.grid.IGrid; +import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem; +import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemManager; +import com.raoulvdberge.refinedstorage.apiimpl.network.item.WirelessGridNetworkItem; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.GridNetworkNode; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +import javax.annotation.Nonnull; + +public class WirelessGridItem extends NetworkItem { + public enum Type { + NORMAL, + CREATIVE + } + + private final Type type; + + public WirelessGridItem(Type type) { + super(new Item.Properties().group(RS.MAIN_GROUP).maxStackSize(1), type == Type.CREATIVE, () -> RS.SERVER_CONFIG.getWirelessGrid().getCapacity()); + + this.type = type; + + this.setRegistryName(RS.ID, (type == Type.CREATIVE ? "creative_" : "") + "wireless_grid"); + } + + public Type getType() { + return type; + } + + @Override + @Nonnull + public INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack) { + return new WirelessGridNetworkItem(handler, player, stack); + } + + public static int getViewType(ItemStack stack) { + return (stack.hasTag() && stack.getTag().contains(GridNetworkNode.NBT_VIEW_TYPE)) ? stack.getTag().getInt(GridNetworkNode.NBT_VIEW_TYPE) : IGrid.VIEW_TYPE_NORMAL; + } + + public static int getSortingType(ItemStack stack) { + return (stack.hasTag() && stack.getTag().contains(GridNetworkNode.NBT_SORTING_TYPE)) ? stack.getTag().getInt(GridNetworkNode.NBT_SORTING_TYPE) : IGrid.SORTING_TYPE_QUANTITY; + } + + public static int getSortingDirection(ItemStack stack) { + return (stack.hasTag() && stack.getTag().contains(GridNetworkNode.NBT_SORTING_DIRECTION)) ? stack.getTag().getInt(GridNetworkNode.NBT_SORTING_DIRECTION) : IGrid.SORTING_DIRECTION_DESCENDING; + } + + public static int getSearchBoxMode(ItemStack stack) { + return (stack.hasTag() && stack.getTag().contains(GridNetworkNode.NBT_SEARCH_BOX_MODE)) ? stack.getTag().getInt(GridNetworkNode.NBT_SEARCH_BOX_MODE) : IGrid.SEARCH_BOX_MODE_NORMAL; + } + + public static int getTabSelected(ItemStack stack) { + return (stack.hasTag() && stack.getTag().contains(GridNetworkNode.NBT_TAB_SELECTED)) ? stack.getTag().getInt(GridNetworkNode.NBT_TAB_SELECTED) : -1; + } + + public static int getTabPage(ItemStack stack) { + return (stack.hasTag() && stack.getTag().contains(GridNetworkNode.NBT_TAB_PAGE)) ? stack.getTag().getInt(GridNetworkNode.NBT_TAB_PAGE) : 0; + } + + public static int getSize(ItemStack stack) { + return (stack.hasTag() && stack.getTag().contains(GridNetworkNode.NBT_SIZE)) ? stack.getTag().getInt(GridNetworkNode.NBT_SIZE) : IGrid.SIZE_STRETCH; + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridSettingsUpdate.java.off b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridSettingsUpdate.java.off deleted file mode 100644 index ffcd7b70e..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridSettingsUpdate.java.off +++ /dev/null @@ -1,95 +0,0 @@ -package com.raoulvdberge.refinedstorage.network; - -import com.raoulvdberge.refinedstorage.api.network.grid.IGrid; -import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeGrid; -import com.raoulvdberge.refinedstorage.container.GridContainer; -import com.raoulvdberge.refinedstorage.tile.grid.WirelessGrid; -import com.raoulvdberge.refinedstorage.tile.grid.portable.PortableGrid; -import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraftforge.fml.common.network.simpleimpl.IMessage; - -public class MessageGridSettingsUpdate extends MessageHandlerPlayerToServer implements IMessage { - private int viewType; - private int sortingDirection; - private int sortingType; - private int searchBoxMode; - private int size; - private int tabSelected; - private int tabPage; - - public MessageGridSettingsUpdate() { - } - - public MessageGridSettingsUpdate(int viewType, int sortingDirection, int sortingType, int searchBoxMode, int size, int tabSelected, int tabPage) { - this.viewType = viewType; - this.sortingDirection = sortingDirection; - this.sortingType = sortingType; - this.searchBoxMode = searchBoxMode; - this.size = size; - this.tabSelected = tabSelected; - this.tabPage = tabPage; - } - - @Override - public void fromBytes(ByteBuf buf) { - viewType = buf.readInt(); - sortingDirection = buf.readInt(); - sortingType = buf.readInt(); - searchBoxMode = buf.readInt(); - size = buf.readInt(); - tabSelected = buf.readInt(); - tabPage = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(viewType); - buf.writeInt(sortingDirection); - buf.writeInt(sortingType); - buf.writeInt(searchBoxMode); - buf.writeInt(size); - buf.writeInt(tabSelected); - buf.writeInt(tabPage); - } - - @Override - public void handle(MessageGridSettingsUpdate message, ServerPlayerEntity player) { - if (player.openContainer instanceof ContainerGrid) { - IGrid grid = ((ContainerGrid) player.openContainer).getGrid(); - - if (grid instanceof WirelessGrid || grid instanceof PortableGrid) { - ItemStack stack = grid instanceof WirelessGrid ? ((WirelessGrid) grid).getStack() : ((PortableGrid) grid).getStack(); - - if (!stack.hasTagCompound()) { - stack.setTagCompound(new CompoundNBT()); - } - - if (IGrid.isValidViewType(message.viewType)) { - stack.getTagCompound().putInt(NetworkNodeGrid.NBT_VIEW_TYPE, message.viewType); - } - - if (IGrid.isValidSortingDirection(message.sortingDirection)) { - stack.getTagCompound().putInt(NetworkNodeGrid.NBT_SORTING_DIRECTION, message.sortingDirection); - } - - if (IGrid.isValidSortingType(message.sortingType)) { - stack.getTagCompound().putInt(NetworkNodeGrid.NBT_SORTING_TYPE, message.sortingType); - } - - if (IGrid.isValidSearchBoxMode(message.searchBoxMode)) { - stack.getTagCompound().putInt(NetworkNodeGrid.NBT_SEARCH_BOX_MODE, message.searchBoxMode); - } - - if (IGrid.isValidSize(message.size)) { - stack.getTagCompound().putInt(NetworkNodeGrid.NBT_SIZE, message.size); - } - - stack.getTagCompound().putInt(NetworkNodeGrid.NBT_TAB_SELECTED, message.tabSelected); - stack.getTagCompound().putInt(NetworkNodeGrid.NBT_TAB_PAGE, message.tabPage); - } - } - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageNetworkItemOpen.java.off b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageNetworkItemOpen.java.off deleted file mode 100644 index 930b38060..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageNetworkItemOpen.java.off +++ /dev/null @@ -1,43 +0,0 @@ -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.ServerPlayerEntity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fml.common.network.simpleimpl.IMessage; - -public class MessageNetworkItemOpen extends MessageHandlerPlayerToServer implements IMessage { - private int slotId; - - public MessageNetworkItemOpen() { - } - - public MessageNetworkItemOpen(int slotId) { - this.slotId = slotId; - } - - @Override - protected void handle(MessageNetworkItemOpen message, ServerPlayerEntity 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); - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/NetworkHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/network/NetworkHandler.java index 01b9d5694..23b8c6aa1 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/network/NetworkHandler.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/NetworkHandler.java @@ -46,6 +46,8 @@ public class NetworkHandler { handler.registerMessage(id++, GridTransferMessage.class, GridTransferMessage::encode, GridTransferMessage::decode, GridTransferMessage::handle); handler.registerMessage(id++, GridProcessingTransferMessage.class, GridProcessingTransferMessage::encode, GridProcessingTransferMessage::decode, GridProcessingTransferMessage::handle); handler.registerMessage(id++, SecurityManagerUpdateMessage.class, SecurityManagerUpdateMessage::encode, SecurityManagerUpdateMessage::decode, SecurityManagerUpdateMessage::handle); + handler.registerMessage(id++, GridSettingsUpdateMessage.class, GridSettingsUpdateMessage::encode, GridSettingsUpdateMessage::decode, GridSettingsUpdateMessage::handle); + handler.registerMessage(id++, OpenNetworkItemMessage.class, OpenNetworkItemMessage::encode, OpenNetworkItemMessage::decode, OpenNetworkItemMessage::handle); } public void sendToServer(Object message) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/OpenNetworkItemMessage.java b/src/main/java/com/raoulvdberge/refinedstorage/network/OpenNetworkItemMessage.java new file mode 100644 index 000000000..17481e116 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/OpenNetworkItemMessage.java @@ -0,0 +1,43 @@ +package com.raoulvdberge.refinedstorage.network; + +import com.raoulvdberge.refinedstorage.item.NetworkItem; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.network.PacketBuffer; +import net.minecraftforge.fml.network.NetworkEvent; + +import java.util.function.Supplier; + +public class OpenNetworkItemMessage { + private int slotId; + + public OpenNetworkItemMessage(int slotId) { + this.slotId = slotId; + } + + public static OpenNetworkItemMessage decode(PacketBuffer buf) { + return new OpenNetworkItemMessage(buf.readInt()); + } + + public static void encode(OpenNetworkItemMessage message, PacketBuffer buf) { + buf.writeInt(message.slotId); + } + + public static void handle(OpenNetworkItemMessage message, Supplier ctx) { + PlayerEntity player = ctx.get().getSender(); + + if (player != null) { + ctx.get().enqueueWork(() -> { + ItemStack stack = player.inventory.getStackInSlot(message.slotId); + + if (stack.getItem() instanceof NetworkItem) { + ((NetworkItem) stack.getItem()).applyNetwork(player.getServer(), stack, n -> n.getNetworkItemManager().open(player, stack), player::sendMessage); + }/* TODO else if (stack.getItem() == Item.getItemFromBlock(RSBlocks.PORTABLE_GRID)) { // @Hack + API.instance().getGridManager().openGrid(PortableGrid.ID, player, stack); + }*/ + }); + } + + ctx.get().setPacketHandled(true); + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/grid/GridSettingsUpdateMessage.java b/src/main/java/com/raoulvdberge/refinedstorage/network/grid/GridSettingsUpdateMessage.java new file mode 100644 index 000000000..f7ce3fe43 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/grid/GridSettingsUpdateMessage.java @@ -0,0 +1,101 @@ +package com.raoulvdberge.refinedstorage.network.grid; + +import com.raoulvdberge.refinedstorage.api.network.grid.IGrid; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.GridNetworkNode; +import com.raoulvdberge.refinedstorage.container.GridContainer; +import com.raoulvdberge.refinedstorage.tile.grid.WirelessGrid; +import com.raoulvdberge.refinedstorage.tile.grid.portable.PortableGrid; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.network.PacketBuffer; +import net.minecraftforge.fml.network.NetworkEvent; + +import java.util.function.Supplier; + +public class GridSettingsUpdateMessage { + private int viewType; + private int sortingDirection; + private int sortingType; + private int searchBoxMode; + private int size; + private int tabSelected; + private int tabPage; + + public GridSettingsUpdateMessage(int viewType, int sortingDirection, int sortingType, int searchBoxMode, int size, int tabSelected, int tabPage) { + this.viewType = viewType; + this.sortingDirection = sortingDirection; + this.sortingType = sortingType; + this.searchBoxMode = searchBoxMode; + this.size = size; + this.tabSelected = tabSelected; + this.tabPage = tabPage; + } + + public static GridSettingsUpdateMessage decode(PacketBuffer buf) { + return new GridSettingsUpdateMessage( + buf.readInt(), + buf.readInt(), + buf.readInt(), + buf.readInt(), + buf.readInt(), + buf.readInt(), + buf.readInt() + ); + } + + public static void encode(GridSettingsUpdateMessage message, PacketBuffer buf) { + buf.writeInt(message.viewType); + buf.writeInt(message.sortingDirection); + buf.writeInt(message.sortingType); + buf.writeInt(message.searchBoxMode); + buf.writeInt(message.size); + buf.writeInt(message.tabSelected); + buf.writeInt(message.tabPage); + } + + public static void handle(GridSettingsUpdateMessage message, Supplier ctx) { + PlayerEntity player = ctx.get().getSender(); + + if (player != null) { + ctx.get().enqueueWork(() -> { + if (player.openContainer instanceof GridContainer) { + IGrid grid = ((GridContainer) player.openContainer).getGrid(); + + if (grid instanceof WirelessGrid || grid instanceof PortableGrid) { + ItemStack stack = grid instanceof WirelessGrid ? ((WirelessGrid) grid).getStack() : ((PortableGrid) grid).getStack(); + + if (!stack.hasTag()) { + stack.setTag(new CompoundNBT()); + } + + if (IGrid.isValidViewType(message.viewType)) { + stack.getTag().putInt(GridNetworkNode.NBT_VIEW_TYPE, message.viewType); + } + + if (IGrid.isValidSortingDirection(message.sortingDirection)) { + stack.getTag().putInt(GridNetworkNode.NBT_SORTING_DIRECTION, message.sortingDirection); + } + + if (IGrid.isValidSortingType(message.sortingType)) { + stack.getTag().putInt(GridNetworkNode.NBT_SORTING_TYPE, message.sortingType); + } + + if (IGrid.isValidSearchBoxMode(message.searchBoxMode)) { + stack.getTag().putInt(GridNetworkNode.NBT_SEARCH_BOX_MODE, message.searchBoxMode); + } + + if (IGrid.isValidSize(message.size)) { + stack.getTag().putInt(GridNetworkNode.NBT_SIZE, message.size); + } + + stack.getTag().putInt(GridNetworkNode.NBT_TAB_SELECTED, message.tabSelected); + stack.getTag().putInt(GridNetworkNode.NBT_TAB_PAGE, message.tabPage); + } + } + }); + } + + ctx.get().setPacketHandled(true); + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/KeyInputListener.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/KeyInputListener.java index 9bbec7ac6..180a304eb 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/KeyInputListener.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/KeyInputListener.java @@ -1,21 +1,32 @@ package com.raoulvdberge.refinedstorage.screen; +import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.RSItems; +import com.raoulvdberge.refinedstorage.RSKeyBindings; +import com.raoulvdberge.refinedstorage.network.OpenNetworkItemMessage; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TranslationTextComponent; import net.minecraftforge.client.event.InputEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; +import java.util.function.Consumer; + public class KeyInputListener { @SubscribeEvent public void onKeyInput(InputEvent.KeyInputEvent e) { PlayerInventory inv = Minecraft.getInstance().player.inventory; - /*TODO if (RSKeyBindings.OPEN_WIRELESS_GRID.isKeyDown()) { - findAndOpen(inv, RSItems.WIRELESS_GRID); - } else if (RSKeyBindings.OPEN_WIRELESS_FLUID_GRID.isKeyDown()) { + if (RSKeyBindings.OPEN_WIRELESS_GRID.isKeyDown()) { + findAndOpen(inv, (error) -> Minecraft.getInstance().player.sendMessage(error), RSItems.WIRELESS_GRID, RSItems.CREATIVE_WIRELESS_GRID); + }/* TODO 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)); @@ -24,15 +35,28 @@ public class KeyInputListener { }*/ } - private void findAndOpen(IInventory inv, Item search) { + private void findAndOpen(IInventory inv, Consumer onError, Item... items) { + Set validItems = new HashSet<>(Arrays.asList(items)); + + int slotFound = -1; + for (int i = 0; i < inv.getSizeInventory(); ++i) { ItemStack slot = inv.getStackInSlot(i); - if (slot.getItem() == search) { - // TODO RS.INSTANCE.network.sendToServer(new MessageNetworkItemOpen(i)); + if (validItems.contains(slot.getItem())) { + if (slotFound != -1) { + onError.accept(new TranslationTextComponent("misc.refinedstorage.network_item.shortcut_duplicate", new TranslationTextComponent(items[0].getTranslationKey()))); + return; + } - return; + slotFound = i; } } + + if (slotFound == -1) { + onError.accept(new TranslationTextComponent("misc.refinedstorage.network_item.shortcut_not_found", new TranslationTextComponent(items[0].getTranslationKey()))); + } else { + RS.NETWORK_HANDLER.sendToServer(new OpenNetworkItemMessage(slotFound)); + } } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/WirelessCraftingMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/WirelessCraftingMonitor.java index bb416514d..e0f83bbe5 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/WirelessCraftingMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/WirelessCraftingMonitor.java @@ -102,7 +102,7 @@ public class WirelessCraftingMonitor implements ICraftingMonitor { INetwork network = getNetwork(); if (network != null) { - network.getNetworkItemHandler().close(player); + network.getNetworkItemManager().close(player); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessFluidGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessFluidGrid.java index 18119c1a8..8f6febcdb 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessFluidGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessFluidGrid.java @@ -30,7 +30,7 @@ import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; -public class WirelessFluidGrid implements IGridNetworkAware { +public class WirelessFluidGrid implements INetworkAwareGrid { public static int ID; private ItemStack stack; @@ -299,7 +299,7 @@ public class WirelessFluidGrid implements IGridNetworkAware { INetwork network = getNetwork(); if (network != null) { - network.getNetworkItemHandler().close(player); + network.getNetworkItemManager().close(player); } } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessGrid.java index f3e6dbed3..1fa261a3c 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessGrid.java @@ -1,14 +1,19 @@ package com.raoulvdberge.refinedstorage.tile.grid; +import com.raoulvdberge.refinedstorage.RS; 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.node.INetworkNodeProxy; import com.raoulvdberge.refinedstorage.api.storage.cache.IStorageCache; import com.raoulvdberge.refinedstorage.api.storage.cache.IStorageCacheListener; import com.raoulvdberge.refinedstorage.api.util.IFilter; import com.raoulvdberge.refinedstorage.apiimpl.storage.cache.listener.ItemGridStorageCacheListener; +import com.raoulvdberge.refinedstorage.capability.NetworkNodeProxyCapability; import com.raoulvdberge.refinedstorage.inventory.item.FilterItemHandler; +import com.raoulvdberge.refinedstorage.item.WirelessGridItem; +import com.raoulvdberge.refinedstorage.network.grid.GridSettingsUpdateMessage; import com.raoulvdberge.refinedstorage.screen.BaseScreen; import com.raoulvdberge.refinedstorage.screen.grid.GridScreen; import com.raoulvdberge.refinedstorage.util.StackUtils; @@ -18,24 +23,25 @@ import net.minecraft.inventory.CraftResultInventory; import net.minecraft.inventory.CraftingInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; +import net.minecraft.server.MinecraftServer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TranslationTextComponent; import net.minecraft.world.World; +import net.minecraft.world.dimension.DimensionType; +import net.minecraftforge.common.DimensionManager; import net.minecraftforge.items.IItemHandlerModifiable; import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; -public class WirelessGrid implements IGridNetworkAware { - public static int ID; - +public class WirelessGrid implements INetworkAwareGrid { private ItemStack stack; - - private int networkDimension; - private BlockPos network; + private final MinecraftServer server; + private final DimensionType nodeDimension; + private final BlockPos nodePos; private int viewType; private int sortingType; @@ -56,19 +62,19 @@ public class WirelessGrid implements IGridNetworkAware { StackUtils.writeItems(handler, 0, stack.getTag()); }); - public WirelessGrid(ItemStack stack) { - /* TODO this.networkDimension = ItemWirelessGrid.getDimensionId(stack); - this.network = new BlockPos(ItemWirelessGrid.getX(stack), ItemWirelessGrid.getY(stack), ItemWirelessGrid.getZ(stack)); - + public WirelessGrid(ItemStack stack, @Nullable MinecraftServer server) { this.stack = stack; + this.server = server; + this.nodeDimension = WirelessGridItem.getDimension(stack); + this.nodePos = new BlockPos(WirelessGridItem.getX(stack), WirelessGridItem.getY(stack), WirelessGridItem.getZ(stack)); - this.viewType = ItemWirelessGrid.getViewType(stack); - this.sortingType = ItemWirelessGrid.getSortingType(stack); - this.sortingDirection = ItemWirelessGrid.getSortingDirection(stack); - this.searchBoxMode = ItemWirelessGrid.getSearchBoxMode(stack); - this.tabSelected = ItemWirelessGrid.getTabSelected(stack); - this.tabPage = ItemWirelessGrid.getTabPage(stack); - this.size = ItemWirelessGrid.getSize(stack);*/ + this.viewType = WirelessGridItem.getViewType(stack); + this.sortingType = WirelessGridItem.getSortingType(stack); + this.sortingDirection = WirelessGridItem.getSortingDirection(stack); + this.searchBoxMode = WirelessGridItem.getSearchBoxMode(stack); + this.tabSelected = WirelessGridItem.getTabSelected(stack); + this.tabPage = WirelessGridItem.getTabPage(stack); + this.size = WirelessGridItem.getSize(stack); if (stack.hasTag()) { StackUtils.readItems(filter, 0, stack.getTag()); @@ -87,13 +93,19 @@ public class WirelessGrid implements IGridNetworkAware { @Override @Nullable public INetwork getNetwork() { - // TODO World world = DimensionManager.getWorld(networkDimension); - World world = null; + World world = DimensionManager.getWorld(server, nodeDimension, true, true); if (world != null) { - TileEntity tile = world.getTileEntity(network); + TileEntity tile = world.getTileEntity(nodePos); - return tile instanceof INetwork ? (INetwork) tile : null; + // TODO Create helper to get INetworkNodeProxy of tile + if (tile != null) { + INetworkNodeProxy proxy = tile.getCapability(NetworkNodeProxyCapability.NETWORK_NODE_PROXY_CAPABILITY).orElse(null); + + if (proxy != null) { + return proxy.getNode().getNetwork(); + } + } } return null; @@ -183,7 +195,7 @@ public class WirelessGrid implements IGridNetworkAware { @Override public void onViewTypeChanged(int type) { - // TODO RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(type, getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), getTabSelected(), getTabPage())); + RS.NETWORK_HANDLER.sendToServer(new GridSettingsUpdateMessage(type, getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), getTabSelected(), getTabPage())); this.viewType = type; @@ -192,7 +204,7 @@ public class WirelessGrid implements IGridNetworkAware { @Override public void onSortingTypeChanged(int type) { - // TODO RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), type, getSearchBoxMode(), getSize(), getTabSelected(), getTabPage())); + RS.NETWORK_HANDLER.sendToServer(new GridSettingsUpdateMessage(getViewType(), getSortingDirection(), type, getSearchBoxMode(), getSize(), getTabSelected(), getTabPage())); this.sortingType = type; @@ -201,7 +213,7 @@ public class WirelessGrid implements IGridNetworkAware { @Override public void onSortingDirectionChanged(int direction) { - // TODO RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), direction, getSortingType(), getSearchBoxMode(), getSize(), getTabSelected(), getTabPage())); + RS.NETWORK_HANDLER.sendToServer(new GridSettingsUpdateMessage(getViewType(), direction, getSortingType(), getSearchBoxMode(), getSize(), getTabSelected(), getTabPage())); this.sortingDirection = direction; @@ -210,27 +222,25 @@ public class WirelessGrid implements IGridNetworkAware { @Override public void onSearchBoxModeChanged(int searchBoxMode) { - // TODO RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), searchBoxMode, getSize(), getTabSelected(), getTabPage())); + RS.NETWORK_HANDLER.sendToServer(new GridSettingsUpdateMessage(getViewType(), getSortingDirection(), getSortingType(), searchBoxMode, getSize(), getTabSelected(), getTabPage())); this.searchBoxMode = searchBoxMode; } @Override public void onSizeChanged(int size) { - // TODO RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), size, getTabSelected(), getTabPage())); + RS.NETWORK_HANDLER.sendToServer(new GridSettingsUpdateMessage(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), size, getTabSelected(), getTabPage())); this.size = size; - // TODO if (Minecraft.getMinecraft().currentScreen != null) { - // Minecraft.getMinecraft().currentScreen.initGui(); - //} + BaseScreen.executeLater(GridScreen.class, BaseScreen::init); } @Override public void onTabSelectionChanged(int tab) { this.tabSelected = tab == tabSelected ? -1 : tab; - // TODO RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), tabSelected, getTabPage())); + RS.NETWORK_HANDLER.sendToServer(new GridSettingsUpdateMessage(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), tabSelected, getTabPage())); BaseScreen.executeLater(GridScreen.class, grid -> grid.getView().sort()); } @@ -238,7 +248,7 @@ public class WirelessGrid implements IGridNetworkAware { @Override public void onTabPageChanged(int page) { if (page >= 0 && page <= getTotalTabPages()) { - // TODO RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), getTabSelected(), page)); + RS.NETWORK_HANDLER.sendToServer(new GridSettingsUpdateMessage(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), getTabSelected(), page)); this.tabPage = page; } @@ -304,7 +314,7 @@ public class WirelessGrid implements IGridNetworkAware { INetwork network = getNetwork(); if (network != null) { - network.getNetworkItemHandler().close(player); + network.getNetworkItemManager().close(player); } } } diff --git a/src/main/resources/assets/refinedstorage/lang/en_us.json b/src/main/resources/assets/refinedstorage/lang/en_us.json index 4454273dc..e01b2d845 100644 --- a/src/main/resources/assets/refinedstorage/lang/en_us.json +++ b/src/main/resources/assets/refinedstorage/lang/en_us.json @@ -91,7 +91,9 @@ "misc.refinedstorage.storage.full": "%d%% full", "misc.refinedstorage.network_item.tooltip": "Linked to %d, %d, %d.", "misc.refinedstorage.network_item.out_of_range": "There is no Wireless Transmitter in range.", - "misc.refinedstorage.network_item.not_found": "Controller not found.", + "misc.refinedstorage.network_item.not_found": "Network not found.", + "misc.refinedstorage.network_item.shortcut_not_found": "There isn't any %s in your inventory.", + "misc.refinedstorage.network_item.shortcut_duplicate": "There is more than one %s in your inventory.", "misc.refinedstorage.network_card.tooltip": "Linked to %d, %d, %d in %s.", "misc.refinedstorage.pattern.inputs": "Inputs", "misc.refinedstorage.pattern.outputs": "Outputs", @@ -225,8 +227,8 @@ "item.refinedstorage.1024k_fluid_storage_disk": "1024k Fluid Storage Disk", "item.refinedstorage.4096k_fluid_storage_disk": "4096k Fluid Storage Disk", "item.refinedstorage.creative_fluid_storage_disk": "Creative Fluid Storage Disk", - "item.refinedstorage:wireless_grid.0": "Wireless Grid", - "item.refinedstorage:wireless_grid.1": "Creative Wireless Grid", + "item.refinedstorage.wireless_grid": "Wireless Grid", + "item.refinedstorage.creative_wireless_grid": "Creative Wireless Grid", "item.refinedstorage:wireless_fluid_grid.0": "Wireless Fluid Grid", "item.refinedstorage:wireless_fluid_grid.1": "Creative Wireless Fluid Grid", "item.refinedstorage:wireless_crafting_monitor.0": "Wireless Crafting Monitor", diff --git a/src/main/resources/assets/refinedstorage/models/item/creative_wireless_grid.json b/src/main/resources/assets/refinedstorage/models/item/creative_wireless_grid.json new file mode 100644 index 000000000..a5f147c18 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/item/creative_wireless_grid.json @@ -0,0 +1,20 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "refinedstorage:item/wireless_grid_disconnected" + }, + "overrides": [ + { + "predicate": { + "connected": 0 + }, + "model": "refinedstorage:item/wireless_grid_disconnected" + }, + { + "predicate": { + "connected": 1 + }, + "model": "refinedstorage:item/wireless_grid_connected" + } + ] +} diff --git a/src/main/resources/assets/refinedstorage/recipes/wireless_grid.json b/src/main/resources/data/refinedstorage/recipes/wireless_grid.json similarity index 57% rename from src/main/resources/assets/refinedstorage/recipes/wireless_grid.json rename to src/main/resources/data/refinedstorage/recipes/wireless_grid.json index 18622b886..605211de5 100644 --- a/src/main/resources/assets/refinedstorage/recipes/wireless_grid.json +++ b/src/main/resources/data/refinedstorage/recipes/wireless_grid.json @@ -10,18 +10,16 @@ "item": "refinedstorage:quartz_enriched_iron" }, "P": { - "item": "minecraft:ender_pearl" + "tag": "forge:ender_pearls" }, "G": { - "item": "refinedstorage:grid", - "data": 0 + "item": "refinedstorage:grid" }, "A": { - "item": "#advanced_processor" + "item": "refinedstorage:advanced_processor" } }, "result": { - "item": "refinedstorage:wireless_grid", - "data": 0 + "item": "refinedstorage:wireless_grid" } } \ No newline at end of file