diff --git a/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java b/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java index ecb838390..46904e245 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java @@ -188,11 +188,13 @@ public class ClientSetup { ScreenManager.registerFactory(RSContainers.CRAFTER, CrafterScreen::new); ScreenManager.registerFactory(RSContainers.CRAFTER_MANAGER, new CrafterManagerScreenFactory()); ScreenManager.registerFactory(RSContainers.CRAFTING_MONITOR, CraftingMonitorScreen::new); + ScreenManager.registerFactory(RSContainers.WIRELESS_CRAFTING_MONITOR, CraftingMonitorScreen::new); - ClientRegistry.registerKeyBinding(RSKeyBindings.OPEN_WIRELESS_GRID); - ClientRegistry.registerKeyBinding(RSKeyBindings.OPEN_WIRELESS_FLUID_GRID); ClientRegistry.registerKeyBinding(RSKeyBindings.FOCUS_SEARCH_BAR); ClientRegistry.registerKeyBinding(RSKeyBindings.CLEAR_GRID_CRAFTING_MATRIX); + ClientRegistry.registerKeyBinding(RSKeyBindings.OPEN_WIRELESS_GRID); + ClientRegistry.registerKeyBinding(RSKeyBindings.OPEN_WIRELESS_FLUID_GRID); + ClientRegistry.registerKeyBinding(RSKeyBindings.OPEN_WIRELESS_CRAFTING_MONITOR); ClientRegistry.registerKeyBinding(RSKeyBindings.OPEN_PORTABLE_GRID); ClientRegistry.bindTileEntitySpecialRenderer(StorageMonitorTile.class, new StorageMonitorTileRenderer()); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RS.java b/src/main/java/com/raoulvdberge/refinedstorage/RS.java index b074e4bd5..608ba3449 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/RS.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RS.java @@ -31,10 +31,7 @@ import com.raoulvdberge.refinedstorage.capability.NetworkNodeProxyCapability; import com.raoulvdberge.refinedstorage.config.ClientConfig; import com.raoulvdberge.refinedstorage.config.ServerConfig; import com.raoulvdberge.refinedstorage.container.*; -import com.raoulvdberge.refinedstorage.container.factory.CrafterManagerContainerFactory; -import com.raoulvdberge.refinedstorage.container.factory.CraftingMonitorContainerFactory; -import com.raoulvdberge.refinedstorage.container.factory.GridContainerFactory; -import com.raoulvdberge.refinedstorage.container.factory.PositionalTileContainerFactory; +import com.raoulvdberge.refinedstorage.container.factory.*; import com.raoulvdberge.refinedstorage.item.*; import com.raoulvdberge.refinedstorage.item.blockitem.*; import com.raoulvdberge.refinedstorage.item.group.MainItemGroup; @@ -303,6 +300,7 @@ public final class RS { e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory((windowId, inv, tile) -> new CrafterContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "crafter")); e.getRegistry().register(IForgeContainerType.create(new CrafterManagerContainerFactory()).setRegistryName(RS.ID, "crafter_manager")); e.getRegistry().register(IForgeContainerType.create(new CraftingMonitorContainerFactory()).setRegistryName(RS.ID, "crafting_monitor")); + e.getRegistry().register(IForgeContainerType.create(new WirelessCraftingMonitorContainerFactory()).setRegistryName(RS.ID, "wireless_crafting_monitor")); } @SubscribeEvent @@ -395,6 +393,8 @@ public final class RS { e.getRegistry().register(new WirelessGridItem(WirelessGridItem.Type.CREATIVE)); e.getRegistry().register(new WirelessFluidGridItem(WirelessFluidGridItem.Type.NORMAL)); e.getRegistry().register(new WirelessFluidGridItem(WirelessFluidGridItem.Type.CREATIVE)); + e.getRegistry().register(new WirelessCraftingMonitorItem(WirelessCraftingMonitorItem.Type.NORMAL)); + e.getRegistry().register(new WirelessCraftingMonitorItem(WirelessCraftingMonitorItem.Type.CREATIVE)); } /* TODO diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSContainers.java b/src/main/java/com/raoulvdberge/refinedstorage/RSContainers.java index 857e40670..ae9b2fcdd 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSContainers.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSContainers.java @@ -51,4 +51,6 @@ public final class RSContainers { public static final ContainerType CRAFTER_MANAGER = null; @ObjectHolder(RS.ID + ":crafting_monitor") public static final ContainerType CRAFTING_MONITOR = null; + @ObjectHolder(RS.ID + ":wireless_crafting_monitor") + public static final ContainerType WIRELESS_CRAFTING_MONITOR = null; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSItems.java b/src/main/java/com/raoulvdberge/refinedstorage/RSItems.java index fe375cab3..6ff9c2ae8 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSItems.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSItems.java @@ -105,6 +105,8 @@ public final class RSItems { public static final PortableGridBlockItem PORTABLE_GRID = null; @ObjectHolder(RS.ID + ":creative_portable_grid") public static final PortableGridBlockItem CREATIVE_PORTABLE_GRID = null; - - public static final ItemWirelessCraftingMonitor WIRELESS_CRAFTING_MONITOR = null; + @ObjectHolder(RS.ID + ":wireless_crafting_monitor") + public static final WirelessCraftingMonitorItem WIRELESS_CRAFTING_MONITOR = null; + @ObjectHolder(RS.ID + ":creative_wireless_crafting_monitor") + public static final WirelessCraftingMonitorItem CREATIVE_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 ffd0b62f2..d5ea6030e 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSKeyBindings.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSKeyBindings.java @@ -7,17 +7,20 @@ import net.minecraftforge.client.settings.KeyModifier; import org.lwjgl.glfw.GLFW; public final class RSKeyBindings { - /* TODO - public static final KeyBinding OPEN_WIRELESS_CRAFTING_MONITOR = new KeyBinding("key.refinedstorage.openWirelessCraftingMonitor", KeyConflictContext.IN_GAME, 0, "Refined Storage"); + public static final KeyBinding FOCUS_SEARCH_BAR = new KeyBinding( + "key.refinedstorage.focusSearchBar", + KeyConflictContext.GUI, + InputMappings.Type.KEYSYM, + GLFW.GLFW_KEY_TAB, + "Refined Storage" + ); - public static void init() { - ClientRegistry.registerKeyBinding(OPEN_WIRELESS_CRAFTING_MONITOR); - }*/ - - public static final KeyBinding OPEN_PORTABLE_GRID = new KeyBinding( - "key.refinedstorage.openPortableGrid", - KeyConflictContext.IN_GAME, - InputMappings.INPUT_INVALID, + public static final KeyBinding CLEAR_GRID_CRAFTING_MATRIX = new KeyBinding( + "key.refinedstorage.clearGridCraftingMatrix", + KeyConflictContext.GUI, + KeyModifier.CONTROL, + InputMappings.Type.KEYSYM, + GLFW.GLFW_KEY_X, "Refined Storage" ); @@ -35,20 +38,17 @@ public final class RSKeyBindings { "Refined Storage" ); - public static final KeyBinding FOCUS_SEARCH_BAR = new KeyBinding( - "key.refinedstorage.focusSearchBar", - KeyConflictContext.GUI, - InputMappings.Type.KEYSYM, - GLFW.GLFW_KEY_TAB, + public static final KeyBinding OPEN_WIRELESS_CRAFTING_MONITOR = new KeyBinding( + "key.refinedstorage.openWirelessCraftingMonitor", + KeyConflictContext.IN_GAME, + InputMappings.INPUT_INVALID, "Refined Storage" ); - public static final KeyBinding CLEAR_GRID_CRAFTING_MATRIX = new KeyBinding( - "key.refinedstorage.clearGridCraftingMatrix", - KeyConflictContext.GUI, - KeyModifier.CONTROL, - InputMappings.Type.KEYSYM, - GLFW.GLFW_KEY_X, + public static final KeyBinding OPEN_PORTABLE_GRID = new KeyBinding( + "key.refinedstorage.openPortableGrid", + KeyConflictContext.IN_GAME, + InputMappings.INPUT_INVALID, "Refined Storage" ); } \ No newline at end of file diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSOldConfig.java b/src/main/java/com/raoulvdberge/refinedstorage/RSOldConfig.java index 57d781b8b..17e4290e9 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSOldConfig.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSOldConfig.java @@ -1,32 +1,15 @@ package com.raoulvdberge.refinedstorage; public class RSOldConfig { - //region Wireless Crafting Monitor - public boolean wirelessCraftingMonitorUsesEnergy; - public int wirelessCraftingMonitorCapacity; - public int wirelessCraftingMonitorOpenUsage; - public int wirelessCraftingMonitorCancelUsage; - public int wirelessCraftingMonitorCancelAllUsage; - //endregion - //region Autocrafting public int calculationTimeoutMs; //endregion //region Categories - private static final String WIRELESS_CRAFTING_MONITOR = "wirelessCraftingMonitor"; private static final String AUTOCRAFTING = "autocrafting"; //endregion /*private void loadConfig() { - //region Wireless Crafting Monitor - wirelessCraftingMonitorUsesEnergy = config.getBoolean("usesEnergy", WIRELESS_CRAFTING_MONITOR, true, "Whether the Wireless Crafting Monitor uses energy"); - wirelessCraftingMonitorCapacity = config.getInt("capacity", WIRELESS_CRAFTING_MONITOR, 3200, 0, Integer.MAX_VALUE, "The energy capacity of the Wireless Crafting Monitor"); - wirelessCraftingMonitorOpenUsage = config.getInt("open", WIRELESS_CRAFTING_MONITOR, 35, 0, Integer.MAX_VALUE, "The energy used by the Wireless Crafting Monitor to open"); - wirelessCraftingMonitorCancelUsage = config.getInt("cancel", WIRELESS_CRAFTING_MONITOR, 4, 0, Integer.MAX_VALUE, "The energy used by the Wireless Crafting Monitor to cancel a task"); - wirelessCraftingMonitorCancelAllUsage = config.getInt("cancelAll", WIRELESS_CRAFTING_MONITOR, 5, 0, Integer.MAX_VALUE, "The energy used by the Wireless Crafting Monitor to cancel all tasks"); - //endregion - //region Autocrafting calculationTimeoutMs = config.getInt("calculationTimeoutMs", AUTOCRAFTING, 5000, 5000, Integer.MAX_VALUE, "The autocrafting calculation timeout in milliseconds, tasks taking longer than this to calculate (NOT execute) are cancelled to avoid server strain"); //endregion diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/craftingmonitor/FluidCraftingMonitorElement.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/craftingmonitor/FluidCraftingMonitorElement.java index 14814478d..1c096e59a 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/craftingmonitor/FluidCraftingMonitorElement.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/craftingmonitor/FluidCraftingMonitorElement.java @@ -63,31 +63,31 @@ public class FluidCraftingMonitorElement implements ICraftingMonitorElement { int yy = y + 7; if (stored > 0) { - drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage:crafting_monitor.stored", API.instance().getQuantityFormatter().formatInBucketForm(stored))); + drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage.crafting_monitor.stored", API.instance().getQuantityFormatter().formatInBucketForm(stored))); yy += 7; } if (missing > 0) { - drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage:crafting_monitor.missing", API.instance().getQuantityFormatter().formatInBucketForm(missing))); + drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage.crafting_monitor.missing", API.instance().getQuantityFormatter().formatInBucketForm(missing))); yy += 7; } if (processing > 0) { - drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage:crafting_monitor.processing", API.instance().getQuantityFormatter().formatInBucketForm(processing))); + drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage.crafting_monitor.processing", API.instance().getQuantityFormatter().formatInBucketForm(processing))); yy += 7; } if (scheduled > 0) { - drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage:crafting_monitor.scheduled", API.instance().getQuantityFormatter().formatInBucketForm(scheduled))); + drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage.crafting_monitor.scheduled", API.instance().getQuantityFormatter().formatInBucketForm(scheduled))); yy += 7; } if (crafting > 0) { - drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage:crafting_monitor.crafting", API.instance().getQuantityFormatter().formatInBucketForm(crafting))); + drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage.crafting_monitor.crafting", API.instance().getQuantityFormatter().formatInBucketForm(crafting))); } GlStateManager.popMatrix(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/craftingmonitor/ItemCraftingMonitorElement.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/craftingmonitor/ItemCraftingMonitorElement.java index 83654664e..ee0d62e8d 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/craftingmonitor/ItemCraftingMonitorElement.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/craftingmonitor/ItemCraftingMonitorElement.java @@ -64,31 +64,31 @@ public class ItemCraftingMonitorElement implements ICraftingMonitorElement { int yy = y + 7; if (stored > 0) { - drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage:crafting_monitor.stored", stored)); + drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage.crafting_monitor.stored", stored)); yy += 7; } if (missing > 0) { - drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage:crafting_monitor.missing", missing)); + drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage.crafting_monitor.missing", missing)); yy += 7; } if (processing > 0) { - drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage:crafting_monitor.processing", processing)); + drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage.crafting_monitor.processing", processing)); yy += 7; } if (scheduled > 0) { - drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage:crafting_monitor.scheduled", scheduled)); + drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage.crafting_monitor.scheduled", scheduled)); yy += 7; } if (crafting > 0) { - drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage:crafting_monitor.crafting", crafting)); + drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage.crafting_monitor.crafting", crafting)); } GlStateManager.popMatrix(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingTask.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingTask.java index cf1f3a664..7f5042dd0 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingTask.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingTask.java @@ -1109,11 +1109,11 @@ public class CraftingTask implements ICraftingTask { ICraftingMonitorElement element = new ItemCraftingMonitorElement(receive.getStack(), 0, 0, 0, receive.getStack().getCount(), 0); if (processing.getState() == ProcessingState.MACHINE_DOES_NOT_ACCEPT) { - element = new ErrorCraftingMonitorElement(element, "gui.refinedstorage:crafting_monitor.machine_does_not_accept_item"); + element = new ErrorCraftingMonitorElement(element, "gui.refinedstorage.crafting_monitor.machine_does_not_accept_item"); } else if (processing.getState() == ProcessingState.MACHINE_NONE) { - element = new ErrorCraftingMonitorElement(element, "gui.refinedstorage:crafting_monitor.machine_none"); + element = new ErrorCraftingMonitorElement(element, "gui.refinedstorage.crafting_monitor.machine_none"); } else if (processing.getState() == ProcessingState.LOCKED) { - element = new ErrorCraftingMonitorElement(element, "gui.refinedstorage:crafting_monitor.crafter_is_locked"); + element = new ErrorCraftingMonitorElement(element, "gui.refinedstorage.crafting_monitor.crafter_is_locked"); } elements.add(element); @@ -1145,11 +1145,11 @@ public class CraftingTask implements ICraftingTask { ICraftingMonitorElement element = new FluidCraftingMonitorElement(receive.getStack(), 0, 0, 0, receive.getStack().getAmount(), 0); if (processing.getState() == ProcessingState.MACHINE_DOES_NOT_ACCEPT) { - element = new ErrorCraftingMonitorElement(element, "gui.refinedstorage:crafting_monitor.machine_does_not_accept_fluid"); + element = new ErrorCraftingMonitorElement(element, "gui.refinedstorage.crafting_monitor.machine_does_not_accept_fluid"); } else if (processing.getState() == ProcessingState.MACHINE_NONE) { - element = new ErrorCraftingMonitorElement(element, "gui.refinedstorage:crafting_monitor.machine_none"); + element = new ErrorCraftingMonitorElement(element, "gui.refinedstorage.crafting_monitor.machine_none"); } else if (processing.getState() == ProcessingState.LOCKED) { - element = new ErrorCraftingMonitorElement(element, "gui.refinedstorage:crafting_monitor.crafter_is_locked"); + element = new ErrorCraftingMonitorElement(element, "gui.refinedstorage.crafting_monitor.crafter_is_locked"); } elements.add(element); 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 ede30173e..16957b115 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 @@ -225,6 +225,6 @@ public class ItemGridHandler implements IItemGridHandler { network.getCraftingManager().cancel(id); - // TODO network.getNetworkItemManager().drainEnergy(player, id == null ? RS.INSTANCE.config.wirelessCraftingMonitorCancelAllUsage : RS.INSTANCE.config.wirelessCraftingMonitorCancelUsage); + network.getNetworkItemManager().drainEnergy(player, id == null ? RS.SERVER_CONFIG.getWirelessCraftingMonitor().getCancelAllUsage() : RS.SERVER_CONFIG.getWirelessCraftingMonitor().getCancelUsage()); } } 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 deleted file mode 100755 index eacd32ff6..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessCraftingMonitor.java +++ /dev/null @@ -1,67 +0,0 @@ -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.INetworkItemManager; -import com.raoulvdberge.refinedstorage.api.network.security.Permission; -import com.raoulvdberge.refinedstorage.util.WorldUtils; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraftforge.energy.CapabilityEnergy; -import net.minecraftforge.energy.IEnergyStorage; - -public class NetworkItemWirelessCraftingMonitor implements INetworkItem { - private INetworkItemManager handler; - private PlayerEntity player; - private ItemStack stack; - private int invIndex; - - public NetworkItemWirelessCraftingMonitor(INetworkItemManager handler, PlayerEntity player, ItemStack stack, int invIndex) { - this.handler = handler; - this.player = player; - this.stack = stack; - this.invIndex = invIndex; - } - - @Override - public PlayerEntity getPlayer() { - return player; - } - - @Override - public boolean onOpen(INetwork network) { - IEnergyStorage energy = stack.getCapability(CapabilityEnergy.ENERGY, null).orElse(null); - - if (RS.INSTANCE.config.wirelessCraftingMonitorUsesEnergy /* TODO && stack.getItemDamage() != ItemWirelessCraftingMonitor.TYPE_CREATIVE */ && energy != null && energy.getEnergyStored() <= RS.INSTANCE.config.wirelessCraftingMonitorOpenUsage) { - return false; - } - - if (!network.getSecurityManager().hasPermission(Permission.MODIFY, player) || !network.getSecurityManager().hasPermission(Permission.AUTOCRAFTING, player)) { - WorldUtils.sendNoPermissionMessage(player); - - return false; - } - - // TODO player.openGui(RS.INSTANCE, RSGui.WIRELESS_CRAFTING_MONITOR, player.getEntityWorld(), invIndex, 0, 0); - - drainEnergy(RS.INSTANCE.config.wirelessCraftingMonitorOpenUsage); - - return true; - } - - @Override - public void drainEnergy(int energy) { - if (RS.INSTANCE.config.wirelessCraftingMonitorUsesEnergy /* TODO && stack.getItemDamage() != ItemWirelessCraftingMonitor.TYPE_CREATIVE*/) { - stack.getCapability(CapabilityEnergy.ENERGY, null).ifPresent(energyStorage -> { - energyStorage.extractEnergy(energy, false); - - if (energyStorage.getEnergyStored() <= 0) { - handler.close(player); - - player.closeScreen(); - } - }); - } - } -} \ No newline at end of file diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/WirelessCraftingMonitorNetworkItem.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/WirelessCraftingMonitorNetworkItem.java new file mode 100644 index 000000000..b99862d08 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/WirelessCraftingMonitorNetworkItem.java @@ -0,0 +1,92 @@ +package com.raoulvdberge.refinedstorage.apiimpl.network.item; + +import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.RSContainers; +import com.raoulvdberge.refinedstorage.api.network.INetwork; +import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem; +import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemManager; +import com.raoulvdberge.refinedstorage.api.network.security.Permission; +import com.raoulvdberge.refinedstorage.container.factory.CraftingMonitorContainerProvider; +import com.raoulvdberge.refinedstorage.item.WirelessCraftingMonitorItem; +import com.raoulvdberge.refinedstorage.tile.craftingmonitor.WirelessCraftingMonitor; +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.minecraft.util.text.TranslationTextComponent; +import net.minecraftforge.energy.CapabilityEnergy; +import net.minecraftforge.energy.IEnergyStorage; +import net.minecraftforge.fml.network.NetworkHooks; + +public class WirelessCraftingMonitorNetworkItem implements INetworkItem { + private INetworkItemManager handler; + private PlayerEntity player; + private ItemStack stack; + private int invIndex; + + public WirelessCraftingMonitorNetworkItem(INetworkItemManager handler, PlayerEntity player, ItemStack stack, int invIndex) { + this.handler = handler; + this.player = player; + this.stack = stack; + this.invIndex = invIndex; + } + + @Override + public PlayerEntity getPlayer() { + return player; + } + + @Override + public boolean onOpen(INetwork network) { + IEnergyStorage energy = stack.getCapability(CapabilityEnergy.ENERGY, null).orElse(null); + + if (RS.SERVER_CONFIG.getWirelessCraftingMonitor().getUseEnergy() && + ((WirelessCraftingMonitorItem) stack.getItem()).getType() != WirelessCraftingMonitorItem.Type.CREATIVE && + energy != null && + energy.getEnergyStored() <= RS.SERVER_CONFIG.getWirelessCraftingMonitor().getOpenUsage()) { + sendOutOfEnergyMessage(); + + return false; + } + + if (!network.getSecurityManager().hasPermission(Permission.MODIFY, player) || + !network.getSecurityManager().hasPermission(Permission.AUTOCRAFTING, player)) { + WorldUtils.sendNoPermissionMessage(player); + + return false; + } + + WirelessCraftingMonitor wirelessCraftingMonitor = new WirelessCraftingMonitor(stack, player.getServer()); + + NetworkHooks.openGui( + (ServerPlayerEntity) player, + new CraftingMonitorContainerProvider(RSContainers.WIRELESS_CRAFTING_MONITOR, wirelessCraftingMonitor, null), + buf -> buf.writeInt(invIndex) + ); + + drainEnergy(RS.SERVER_CONFIG.getWirelessCraftingMonitor().getOpenUsage()); + + return true; + } + + @Override + public void drainEnergy(int energy) { + if (RS.SERVER_CONFIG.getWirelessCraftingMonitor().getUseEnergy() && ((WirelessCraftingMonitorItem) stack.getItem()).getType() != WirelessCraftingMonitorItem.Type.CREATIVE) { + stack.getCapability(CapabilityEnergy.ENERGY).ifPresent(energyStorage -> { + energyStorage.extractEnergy(energy, false); + + if (energyStorage.getEnergyStored() <= 0) { + handler.close(player); + + player.closeScreen(); + + sendOutOfEnergyMessage(); + } + }); + } + } + + private void sendOutOfEnergyMessage() { + player.sendMessage(new TranslationTextComponent("misc.refinedstorage.network_item.out_of_energy", new TranslationTextComponent(stack.getItem().getTranslationKey()))); + } +} \ No newline at end of file diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/CraftingMonitorBlock.java b/src/main/java/com/raoulvdberge/refinedstorage/block/CraftingMonitorBlock.java index aa6c9cb21..42e990b84 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/CraftingMonitorBlock.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/CraftingMonitorBlock.java @@ -1,6 +1,7 @@ package com.raoulvdberge.refinedstorage.block; import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.RSContainers; import com.raoulvdberge.refinedstorage.api.network.security.Permission; import com.raoulvdberge.refinedstorage.container.factory.CraftingMonitorContainerProvider; import com.raoulvdberge.refinedstorage.tile.craftingmonitor.CraftingMonitorTile; @@ -51,7 +52,7 @@ public class CraftingMonitorBlock extends NetworkNodeBlock { return NetworkUtils.attempt(world, pos, hit.getFace(), player, () -> NetworkHooks.openGui( (ServerPlayerEntity) player, - new CraftingMonitorContainerProvider(tile.getNode(), tile), + new CraftingMonitorContainerProvider(RSContainers.CRAFTING_MONITOR, tile.getNode(), tile), pos ), Permission.MODIFY, Permission.AUTOCRAFTING); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/config/ServerConfig.java b/src/main/java/com/raoulvdberge/refinedstorage/config/ServerConfig.java index 90a460243..f98333cab 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/config/ServerConfig.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/config/ServerConfig.java @@ -34,6 +34,7 @@ public class ServerConfig { private Crafter crafter; private CrafterManager crafterManager; private CraftingMonitor craftingMonitor; + private WirelessCraftingMonitor wirelessCraftingMonitor; public ServerConfig() { upgrades = new Upgrades(); @@ -64,6 +65,7 @@ public class ServerConfig { crafter = new Crafter(); crafterManager = new CrafterManager(); craftingMonitor = new CraftingMonitor(); + wirelessCraftingMonitor = new WirelessCraftingMonitor(); spec = builder.build(); } @@ -184,6 +186,10 @@ public class ServerConfig { return craftingMonitor; } + public WirelessCraftingMonitor getWirelessCraftingMonitor() { + return wirelessCraftingMonitor; + } + public class Controller { private final ForgeConfigSpec.BooleanValue useEnergy; private final ForgeConfigSpec.IntValue capacity; @@ -859,4 +865,44 @@ public class ServerConfig { return usage.get(); } } + + public class WirelessCraftingMonitor { + private final ForgeConfigSpec.BooleanValue useEnergy; + private final ForgeConfigSpec.IntValue capacity; + private final ForgeConfigSpec.IntValue openUsage; + private final ForgeConfigSpec.IntValue cancelUsage; + private final ForgeConfigSpec.IntValue cancelAllUsage; + + public WirelessCraftingMonitor() { + builder.push("wirelessCraftingMonitor"); + + useEnergy = builder.comment("Whether the Wireless Crafting Monitor uses energy").define("useEnergy", true); + capacity = builder.comment("The energy capacity of the Wireless Crafting Monitor").defineInRange("capacity", 3200, 0, Integer.MAX_VALUE); + openUsage = builder.comment("The energy used by the Wireless Crafting Monitor to open").defineInRange("openUsage", 30, 0, Integer.MAX_VALUE); + cancelUsage = builder.comment("The energy used by the Wireless Crafting Monitor to cancel a crafting task").defineInRange("cancelUsage", 5, 0, Integer.MAX_VALUE); + cancelAllUsage = builder.comment("The energy used by the Wireless Crafting Monitor to cancel all crafting tasks").defineInRange("cancelAllUsage", 10, 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 getCancelUsage() { + return cancelUsage.get(); + } + + public int getCancelAllUsage() { + return cancelAllUsage.get(); + } + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/CraftingMonitorContainer.java b/src/main/java/com/raoulvdberge/refinedstorage/container/CraftingMonitorContainer.java index 7be6aa1ef..d015977bc 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/CraftingMonitorContainer.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/CraftingMonitorContainer.java @@ -1,7 +1,6 @@ package com.raoulvdberge.refinedstorage.container; import com.raoulvdberge.refinedstorage.RS; -import com.raoulvdberge.refinedstorage.RSContainers; import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingManager; import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorListener; import com.raoulvdberge.refinedstorage.network.craftingmonitor.CraftingMonitorUpdateMessage; @@ -10,6 +9,7 @@ import com.raoulvdberge.refinedstorage.tile.craftingmonitor.ICraftingMonitor; import com.raoulvdberge.refinedstorage.tile.craftingmonitor.WirelessCraftingMonitor; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.inventory.container.ContainerType; import net.minecraft.inventory.container.Slot; import net.minecraft.item.ItemStack; @@ -19,8 +19,8 @@ public class CraftingMonitorContainer extends BaseContainer implements ICrafting private ICraftingMonitor craftingMonitor; private boolean addedListener; - public CraftingMonitorContainer(ICraftingMonitor craftingMonitor, @Nullable CraftingMonitorTile craftingMonitorTile, PlayerEntity player, int windowId) { - super(RSContainers.CRAFTING_MONITOR, craftingMonitorTile, player, windowId); + public CraftingMonitorContainer(ContainerType type, ICraftingMonitor craftingMonitor, @Nullable CraftingMonitorTile craftingMonitorTile, PlayerEntity player, int windowId) { + super(type, craftingMonitorTile, player, windowId); this.craftingMonitor = craftingMonitor; } @@ -29,8 +29,9 @@ public class CraftingMonitorContainer extends BaseContainer implements ICrafting public void detectAndSendChanges() { super.detectAndSendChanges(); - ICraftingManager manager = craftingMonitor.getCraftingManager(); if (!getPlayer().world.isRemote) { + ICraftingManager manager = craftingMonitor.getCraftingManager(); + if (manager != null && !addedListener) { manager.addListener(this); @@ -45,9 +46,12 @@ public class CraftingMonitorContainer extends BaseContainer implements ICrafting public void onContainerClosed(PlayerEntity player) { super.onContainerClosed(player); - ICraftingManager manager = craftingMonitor.getCraftingManager(); - if (!player.getEntityWorld().isRemote && manager != null && addedListener) { - manager.removeListener(this); + if (!player.getEntityWorld().isRemote) { + ICraftingManager manager = craftingMonitor.getCraftingManager(); + + if (manager != null && addedListener) { + manager.removeListener(this); + } } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/factory/CraftingMonitorContainerFactory.java b/src/main/java/com/raoulvdberge/refinedstorage/container/factory/CraftingMonitorContainerFactory.java index c01a1b7f5..4c6ff0445 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/factory/CraftingMonitorContainerFactory.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/factory/CraftingMonitorContainerFactory.java @@ -1,5 +1,6 @@ package com.raoulvdberge.refinedstorage.container.factory; +import com.raoulvdberge.refinedstorage.RSContainers; import com.raoulvdberge.refinedstorage.container.CraftingMonitorContainer; import com.raoulvdberge.refinedstorage.tile.craftingmonitor.CraftingMonitorTile; import net.minecraft.entity.player.PlayerInventory; @@ -14,11 +15,6 @@ public class CraftingMonitorContainerFactory implements IContainerFactory containerType; - public CraftingMonitorContainerProvider(ICraftingMonitor craftingMonitor, @Nullable CraftingMonitorTile tile) { + public CraftingMonitorContainerProvider(ContainerType containerType, ICraftingMonitor craftingMonitor, @Nullable CraftingMonitorTile tile) { + this.containerType = containerType; this.craftingMonitor = craftingMonitor; this.tile = tile; } @@ -29,6 +32,6 @@ public class CraftingMonitorContainerProvider implements INamedContainerProvider @Nullable @Override public Container createMenu(int windowId, PlayerInventory playerInventory, PlayerEntity playerEntity) { - return new CraftingMonitorContainer(craftingMonitor, tile, playerEntity, windowId); + return new CraftingMonitorContainer(containerType, craftingMonitor, tile, playerEntity, windowId); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/factory/WirelessCraftingMonitorContainerFactory.java b/src/main/java/com/raoulvdberge/refinedstorage/container/factory/WirelessCraftingMonitorContainerFactory.java new file mode 100644 index 000000000..aef1fc265 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/factory/WirelessCraftingMonitorContainerFactory.java @@ -0,0 +1,22 @@ +package com.raoulvdberge.refinedstorage.container.factory; + +import com.raoulvdberge.refinedstorage.RSContainers; +import com.raoulvdberge.refinedstorage.container.CraftingMonitorContainer; +import com.raoulvdberge.refinedstorage.tile.craftingmonitor.WirelessCraftingMonitor; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.network.PacketBuffer; +import net.minecraftforge.fml.network.IContainerFactory; + +public class WirelessCraftingMonitorContainerFactory implements IContainerFactory { + @Override + public CraftingMonitorContainer create(int windowId, PlayerInventory inv, PacketBuffer data) { + int invIndex = data.readInt(); + + ItemStack stack = inv.getStackInSlot(invIndex); + + WirelessCraftingMonitor wirelessCraftingMonitor = new WirelessCraftingMonitor(stack, null); + + return new CraftingMonitorContainer(RSContainers.WIRELESS_CRAFTING_MONITOR, wirelessCraftingMonitor, null, inv.player, windowId); + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessCraftingMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessCraftingMonitor.java deleted file mode 100755 index 036e56210..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessCraftingMonitor.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.raoulvdberge.refinedstorage.item; - -import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem; -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, Supplier energyCapacity) { - super(item, creative, energyCapacity); - } - - @Nonnull - @Override - public INetworkItem provide(INetworkItemManager 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) { - int invIndex = 0; - for (int i = 0; i < player.inventory.getSizeInventory(); ++i) { - if (player.inventory.getStackInSlot(i) == stack) { - invIndex = i; - break; - } - } - - return new NetworkItemWirelessCraftingMonitor(handler, player, stack, invIndex); - } - - public static Optional getTabSelected(ItemStack stack) { - if (stack.hasTag() && stack.getTag().hasUniqueId(NBT_TAB_SELECTED)) { - return Optional.of(stack.getTag().getUniqueId(NBT_TAB_SELECTED)); - } - - return Optional.absent(); - } - - public static void setTabSelected(ItemStack stack, Optional tabSelected) { - if (!stack.hasTagCompound()) { - stack.setTagCompound(new CompoundNBT()); - } - - if (tabSelected.isPresent()) { - stack.getTagCompound().setUniqueId(NBT_TAB_SELECTED, tabSelected.get()); - } else { - stack.getTagCompound().removeTag(NBT_TAB_SELECTED + "Least"); - stack.getTagCompound().removeTag(NBT_TAB_SELECTED + "Most"); - } - } - - public static int getTabPage(ItemStack stack) { - if (stack.hasTagCompound() && stack.getTagCompound().hasKey(NBT_TAB_PAGE)) { - return stack.getTagCompound().getInteger(NBT_TAB_PAGE); - } - - return 0; - } - - public static void setTabPage(ItemStack stack, int tabPage) { - if (!stack.hasTagCompound()) { - stack.setTagCompound(new CompoundNBT()); - } - - stack.getTagCompound().putInt(NBT_TAB_PAGE, tabPage); - }*/ -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/WirelessCraftingMonitorItem.java b/src/main/java/com/raoulvdberge/refinedstorage/item/WirelessCraftingMonitorItem.java new file mode 100644 index 000000000..ee2ca6d87 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/WirelessCraftingMonitorItem.java @@ -0,0 +1,89 @@ +package com.raoulvdberge.refinedstorage.item; + +import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem; +import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemManager; +import com.raoulvdberge.refinedstorage.apiimpl.network.item.WirelessCraftingMonitorNetworkItem; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundNBT; + +import javax.annotation.Nonnull; +import java.util.Optional; +import java.util.UUID; + +public class WirelessCraftingMonitorItem extends NetworkItem { + public static final String NBT_TAB_SELECTED = "TabSelected"; + public static final String NBT_TAB_PAGE = "TabPage"; + + public enum Type { + NORMAL, + CREATIVE + } + + private final Type type; + + public WirelessCraftingMonitorItem(Type type) { + super(new Item.Properties().group(RS.MAIN_GROUP).maxStackSize(1), type == Type.CREATIVE, () -> RS.SERVER_CONFIG.getWirelessCraftingMonitor().getCapacity()); + + this.setRegistryName(RS.ID, (type == Type.CREATIVE ? "creative_" : "") + "wireless_crafting_monitor"); + + this.type = type; + } + + public Type getType() { + return type; + } + + @Nonnull + @Override + public INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack) { + int invIndex = 0; + for (int i = 0; i < player.inventory.getSizeInventory(); ++i) { + if (player.inventory.getStackInSlot(i) == stack) { + invIndex = i; + break; + } + } + + return new WirelessCraftingMonitorNetworkItem(handler, player, stack, invIndex); + } + + public static Optional getTabSelected(ItemStack stack) { + if (stack.hasTag() && stack.getTag().hasUniqueId(NBT_TAB_SELECTED)) { + return Optional.of(stack.getTag().getUniqueId(NBT_TAB_SELECTED)); + } + + return Optional.empty(); + } + + public static void setTabSelected(ItemStack stack, Optional tabSelected) { + if (!stack.hasTag()) { + stack.setTag(new CompoundNBT()); + } + + if (tabSelected.isPresent()) { + stack.getTag().putUniqueId(NBT_TAB_SELECTED, tabSelected.get()); + } else { + stack.getTag().remove(NBT_TAB_SELECTED + "Least"); + stack.getTag().remove(NBT_TAB_SELECTED + "Most"); + } + } + + public static int getTabPage(ItemStack stack) { + if (stack.hasTag() && stack.getTag().contains(NBT_TAB_PAGE)) { + return stack.getTag().getInt(NBT_TAB_PAGE); + } + + return 0; + } + + public static void setTabPage(ItemStack stack, int tabPage) { + if (!stack.hasTag()) { + stack.setTag(new CompoundNBT()); + } + + stack.getTag().putInt(NBT_TAB_PAGE, tabPage); + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageWirelessCraftingMonitorSettings.java.off b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageWirelessCraftingMonitorSettings.java.off deleted file mode 100644 index 91fc710db..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageWirelessCraftingMonitorSettings.java.off +++ /dev/null @@ -1,55 +0,0 @@ -package com.raoulvdberge.refinedstorage.network; - -import com.google.common.base.Optional; -import com.raoulvdberge.refinedstorage.container.CraftingMonitorContainer; -import com.raoulvdberge.refinedstorage.item.ItemWirelessCraftingMonitor; -import com.raoulvdberge.refinedstorage.tile.craftingmonitor.WirelessCraftingMonitor; -import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fml.common.network.ByteBufUtils; -import net.minecraftforge.fml.common.network.simpleimpl.IMessage; - -import java.util.UUID; - -public class MessageWirelessCraftingMonitorSettings extends MessageHandlerPlayerToServer implements IMessage { - private Optional tabSelected = Optional.absent(); - private int tabPage; - - public MessageWirelessCraftingMonitorSettings() { - } - - public MessageWirelessCraftingMonitorSettings(Optional tabSelected, int tabPage) { - this.tabSelected = tabSelected; - this.tabPage = tabPage; - } - - @Override - public void fromBytes(ByteBuf buf) { - if (buf.readBoolean()) { - tabSelected = Optional.of(UUID.fromString(ByteBufUtils.readUTF8String(buf))); - } - - tabPage = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeBoolean(tabSelected.isPresent()); - if (tabSelected.isPresent()) { - ByteBufUtils.writeUTF8String(buf, tabSelected.get().toString()); - } - - buf.writeInt(tabPage); - } - - @Override - public void handle(MessageWirelessCraftingMonitorSettings message, ServerPlayerEntity player) { - if (player.openContainer instanceof ContainerCraftingMonitor) { - ItemStack stack = ((WirelessCraftingMonitor) ((ContainerCraftingMonitor) player.openContainer).getCraftingMonitor()).getStack(); - - ItemWirelessCraftingMonitor.setTabPage(stack, message.tabPage); - ItemWirelessCraftingMonitor.setTabSelected(stack, message.tabSelected); - } - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/NetworkHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/network/NetworkHandler.java index f6d46f707..0958e660e 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/network/NetworkHandler.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/NetworkHandler.java @@ -3,6 +3,7 @@ package com.raoulvdberge.refinedstorage.network; import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.network.craftingmonitor.CraftingMonitorCancelMessage; import com.raoulvdberge.refinedstorage.network.craftingmonitor.CraftingMonitorUpdateMessage; +import com.raoulvdberge.refinedstorage.network.craftingmonitor.WirelessCraftingMonitorSettingsUpdateMessage; import com.raoulvdberge.refinedstorage.network.disk.StorageDiskSizeRequestMessage; import com.raoulvdberge.refinedstorage.network.disk.StorageDiskSizeResponseMessage; import com.raoulvdberge.refinedstorage.network.grid.*; @@ -62,6 +63,7 @@ public class NetworkHandler { handler.registerMessage(id++, GridCraftingStartResponseMessage.class, GridCraftingStartResponseMessage::encode, GridCraftingStartResponseMessage::decode, GridCraftingStartResponseMessage::handle); handler.registerMessage(id++, CraftingMonitorUpdateMessage.class, CraftingMonitorUpdateMessage::encode, CraftingMonitorUpdateMessage::decode, CraftingMonitorUpdateMessage::handle); handler.registerMessage(id++, CraftingMonitorCancelMessage.class, CraftingMonitorCancelMessage::encode, CraftingMonitorCancelMessage::decode, CraftingMonitorCancelMessage::handle); + handler.registerMessage(id++, WirelessCraftingMonitorSettingsUpdateMessage.class, WirelessCraftingMonitorSettingsUpdateMessage::encode, WirelessCraftingMonitorSettingsUpdateMessage::decode, WirelessCraftingMonitorSettingsUpdateMessage::handle); } public void sendToServer(Object message) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/craftingmonitor/WirelessCraftingMonitorSettingsUpdateMessage.java b/src/main/java/com/raoulvdberge/refinedstorage/network/craftingmonitor/WirelessCraftingMonitorSettingsUpdateMessage.java new file mode 100644 index 000000000..a095f1306 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/craftingmonitor/WirelessCraftingMonitorSettingsUpdateMessage.java @@ -0,0 +1,55 @@ +package com.raoulvdberge.refinedstorage.network.craftingmonitor; + +import com.raoulvdberge.refinedstorage.container.CraftingMonitorContainer; +import com.raoulvdberge.refinedstorage.tile.craftingmonitor.WirelessCraftingMonitor; +import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.network.PacketBuffer; +import net.minecraftforge.fml.network.NetworkEvent; + +import java.util.Optional; +import java.util.UUID; +import java.util.function.Supplier; + +public class WirelessCraftingMonitorSettingsUpdateMessage { + private Optional tabSelected; + private int tabPage; + + public WirelessCraftingMonitorSettingsUpdateMessage(Optional tabSelected, int tabPage) { + this.tabSelected = tabSelected; + this.tabPage = tabPage; + } + + public static WirelessCraftingMonitorSettingsUpdateMessage decode(PacketBuffer buf) { + Optional tabSelected = Optional.empty(); + + if (buf.readBoolean()) { + tabSelected = Optional.of(buf.readUniqueId()); + } + + int tabPage = buf.readInt(); + + return new WirelessCraftingMonitorSettingsUpdateMessage(tabSelected, tabPage); + } + + public static void encode(WirelessCraftingMonitorSettingsUpdateMessage message, PacketBuffer buf) { + buf.writeBoolean(message.tabSelected.isPresent()); + + message.tabSelected.ifPresent(buf::writeUniqueId); + + buf.writeInt(message.tabPage); + } + + public static void handle(WirelessCraftingMonitorSettingsUpdateMessage message, Supplier ctx) { + ServerPlayerEntity player = ctx.get().getSender(); + + if (player != null) { + ctx.get().enqueueWork(() -> { + if (player.openContainer instanceof CraftingMonitorContainer) { + ((WirelessCraftingMonitor) ((CraftingMonitorContainer) player.openContainer).getCraftingMonitor()).setSettings(message.tabSelected, 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 d299d6096..999f05d2c 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/KeyInputListener.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/KeyInputListener.java @@ -31,9 +31,9 @@ public class KeyInputListener { findAndOpen(inv, (error) -> Minecraft.getInstance().player.sendMessage(error), RSItems.WIRELESS_FLUID_GRID, RSItems.CREATIVE_WIRELESS_FLUID_GRID); } else if (RSKeyBindings.OPEN_PORTABLE_GRID.isKeyDown()) { findAndOpen(inv, (error) -> Minecraft.getInstance().player.sendMessage(error), RSItems.PORTABLE_GRID, RSItems.CREATIVE_PORTABLE_GRID); - }/* TODO else if (RSKeyBindings.OPEN_WIRELESS_CRAFTING_MONITOR.isKeyDown()) { - findAndOpen(inv, RSItems.WIRELESS_CRAFTING_MONITOR); - }*/ + } else if (RSKeyBindings.OPEN_WIRELESS_CRAFTING_MONITOR.isKeyDown()) { + findAndOpen(inv, (error) -> Minecraft.getInstance().player.sendMessage(error), RSItems.WIRELESS_CRAFTING_MONITOR, RSItems.CREATIVE_WIRELESS_CRAFTING_MONITOR); + } } } 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 dfd0000ea..829c7333d 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/WirelessCraftingMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/WirelessCraftingMonitor.java @@ -1,17 +1,25 @@ package com.raoulvdberge.refinedstorage.tile.craftingmonitor; +import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingManager; import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask; import com.raoulvdberge.refinedstorage.api.network.INetwork; +import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeProxy; +import com.raoulvdberge.refinedstorage.capability.NetworkNodeProxyCapability; +import com.raoulvdberge.refinedstorage.item.WirelessCraftingMonitorItem; +import com.raoulvdberge.refinedstorage.network.craftingmonitor.WirelessCraftingMonitorSettingsUpdateMessage; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.item.ItemStack; +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 javax.annotation.Nullable; import java.util.Collection; @@ -21,18 +29,29 @@ import java.util.UUID; public class WirelessCraftingMonitor implements ICraftingMonitor { private ItemStack stack; - - private int networkDimension; - private BlockPos network; + @Nullable + private MinecraftServer server; + private DimensionType nodeDimension; + private BlockPos nodePos; private int tabPage; private Optional tabSelected; - public WirelessCraftingMonitor(ItemStack stack) { + public WirelessCraftingMonitor(ItemStack stack, @Nullable MinecraftServer server) { this.stack = stack; - /* TODO this.networkDimension = ItemWirelessCraftingMonitor.getDimensionId(stack); - this.network = new BlockPos(ItemWirelessCraftingMonitor.getX(stack), ItemWirelessCraftingMonitor.getY(stack), ItemWirelessCraftingMonitor.getZ(stack)); - this.tabPage = ItemWirelessCraftingMonitor.getTabPage(stack); - this.tabSelected = ItemWirelessCraftingMonitor.getTabSelected(stack);*/ + this.server = server; + + this.nodeDimension = WirelessCraftingMonitorItem.getDimension(stack); + this.nodePos = new BlockPos(WirelessCraftingMonitorItem.getX(stack), WirelessCraftingMonitorItem.getY(stack), WirelessCraftingMonitorItem.getZ(stack)); + this.tabPage = WirelessCraftingMonitorItem.getTabPage(stack); + this.tabSelected = WirelessCraftingMonitorItem.getTabSelected(stack); + } + + public void setSettings(Optional tabSelected, int tabPage) { + this.tabSelected = tabSelected; + this.tabPage = tabPage; + + WirelessCraftingMonitorItem.setTabSelected(stack, tabSelected); + WirelessCraftingMonitorItem.setTabPage(stack, tabPage); } @Override @@ -78,13 +97,18 @@ public class WirelessCraftingMonitor implements ICraftingMonitor { } private 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; + if (tile != null) { + INetworkNodeProxy proxy = tile.getCapability(NetworkNodeProxyCapability.NETWORK_NODE_PROXY_CAPABILITY).orElse(null); + + if (proxy != null) { + return proxy.getNode().getNetwork(); + } + } } return null; @@ -126,7 +150,7 @@ public class WirelessCraftingMonitor implements ICraftingMonitor { this.tabSelected = taskId; } - // TODO RS.INSTANCE.network.sendToServer(new MessageWirelessCraftingMonitorSettings(tabSelected, tabPage)); + RS.NETWORK_HANDLER.sendToServer(new WirelessCraftingMonitorSettingsUpdateMessage(tabSelected, tabPage)); } @Override @@ -134,7 +158,7 @@ public class WirelessCraftingMonitor implements ICraftingMonitor { if (page >= 0) { this.tabPage = page; - // TODO RS.INSTANCE.network.sendToServer(new MessageWirelessCraftingMonitorSettings(tabSelected, tabPage)); + RS.NETWORK_HANDLER.sendToServer(new WirelessCraftingMonitorSettingsUpdateMessage(tabSelected, tabPage)); } } } diff --git a/src/main/resources/assets/refinedstorage/lang/en_us.json b/src/main/resources/assets/refinedstorage/lang/en_us.json index 05518c4ae..b8a6cfa21 100644 --- a/src/main/resources/assets/refinedstorage/lang/en_us.json +++ b/src/main/resources/assets/refinedstorage/lang/en_us.json @@ -33,17 +33,17 @@ "gui.refinedstorage.interface.import": "Interface Import", "gui.refinedstorage.interface.export": "Interface Export", "gui.refinedstorage.crafting_monitor": "Crafting Monitor", - "gui.refinedstorage:wireless_crafting_monitor": "Wireless Crafting Monitor", - "gui.refinedstorage:crafting_monitor.tooltip.requested": "%d requested", - "gui.refinedstorage:crafting_monitor.stored": "Stored: %d", - "gui.refinedstorage:crafting_monitor.missing": "Missing: %d", - "gui.refinedstorage:crafting_monitor.processing": "Processing: %d", - "gui.refinedstorage:crafting_monitor.scheduled": "Scheduled: %d", - "gui.refinedstorage:crafting_monitor.crafting": "Crafting: %d", - "gui.refinedstorage:crafting_monitor.machine_does_not_accept_item": "Machine doesn't accept item", - "gui.refinedstorage:crafting_monitor.machine_does_not_accept_fluid": "Machine doesn't accept fluid", - "gui.refinedstorage:crafting_monitor.machine_none": "No machine found", - "gui.refinedstorage:crafting_monitor.crafter_is_locked": "Crafter is locked", + "gui.refinedstorage.wireless_crafting_monitor": "Wireless Crafting Monitor", + "gui.refinedstorage.crafting_monitor.tooltip.requested": "%d requested", + "gui.refinedstorage.crafting_monitor.stored": "Stored: %d", + "gui.refinedstorage.crafting_monitor.missing": "Missing: %d", + "gui.refinedstorage.crafting_monitor.processing": "Processing: %d", + "gui.refinedstorage.crafting_monitor.scheduled": "Scheduled: %d", + "gui.refinedstorage.crafting_monitor.crafting": "Crafting: %d", + "gui.refinedstorage.crafting_monitor.machine_does_not_accept_item": "Machine doesn't accept item", + "gui.refinedstorage.crafting_monitor.machine_does_not_accept_fluid": "Machine doesn't accept fluid", + "gui.refinedstorage.crafting_monitor.machine_none": "No machine found", + "gui.refinedstorage.crafting_monitor.crafter_is_locked": "Crafter is locked", "gui.refinedstorage.wireless_transmitter": "Wireless Transmitter", "gui.refinedstorage.wireless_transmitter.distance": "%d block(s)", "gui.refinedstorage.crafter": "Crafter", @@ -235,8 +235,8 @@ "item.refinedstorage.creative_wireless_grid": "Creative Wireless Grid", "item.refinedstorage.wireless_fluid_grid": "Wireless Fluid Grid", "item.refinedstorage.creative_wireless_fluid_grid": "Creative Wireless Fluid Grid", - "item.refinedstorage:wireless_crafting_monitor.0": "Wireless Crafting Monitor", - "item.refinedstorage:wireless_crafting_monitor.1": "Creative Wireless Crafting Monitor", + "item.refinedstorage.wireless_crafting_monitor": "Wireless Crafting Monitor", + "item.refinedstorage.creative_wireless_crafting_monitor": "Creative Wireless Crafting Monitor", "item.refinedstorage.quartz_enriched_iron": "Quartz Enriched Iron", "item.refinedstorage.construction_core": "Construction Core", "item.refinedstorage.destruction_core": "Destruction Core", diff --git a/src/main/resources/assets/refinedstorage/models/item/creative_wireless_crafting_monitor.json b/src/main/resources/assets/refinedstorage/models/item/creative_wireless_crafting_monitor.json new file mode 100644 index 000000000..6c3d31f1b --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/item/creative_wireless_crafting_monitor.json @@ -0,0 +1,20 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "refinedstorage:item/wireless_crafting_monitor_disconnected" + }, + "overrides": [ + { + "predicate": { + "connected": 0 + }, + "model": "refinedstorage:item/wireless_crafting_monitor_disconnected" + }, + { + "predicate": { + "connected": 1 + }, + "model": "refinedstorage:item/wireless_crafting_monitor_connected" + } + ] +} diff --git a/src/main/resources/assets/refinedstorage/recipes/wireless_crafting_monitor.json b/src/main/resources/data/refinedstorage/recipes/wireless_crafting_monitor.json similarity index 67% rename from src/main/resources/assets/refinedstorage/recipes/wireless_crafting_monitor.json rename to src/main/resources/data/refinedstorage/recipes/wireless_crafting_monitor.json index 6d16c435a..77e3ceddf 100644 --- a/src/main/resources/assets/refinedstorage/recipes/wireless_crafting_monitor.json +++ b/src/main/resources/data/refinedstorage/recipes/wireless_crafting_monitor.json @@ -10,17 +10,16 @@ "item": "refinedstorage:quartz_enriched_iron" }, "P": { - "item": "minecraft:ender_pearl" + "tag": "forge:ender_pearls" }, "M": { "item": "refinedstorage:crafting_monitor" }, "A": { - "item": "#advanced_processor" + "item": "refinedstorage:advanced_processor" } }, "result": { - "item": "refinedstorage:wireless_crafting_monitor", - "data": 0 + "item": "refinedstorage:wireless_crafting_monitor" } } \ No newline at end of file