Re-add the Wireless Crafting Monitor
This commit is contained in:
@@ -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());
|
||||
|
@@ -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<CrafterContainer, CrafterTile>((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
|
||||
|
@@ -51,4 +51,6 @@ public final class RSContainers {
|
||||
public static final ContainerType<CrafterManagerContainer> CRAFTER_MANAGER = null;
|
||||
@ObjectHolder(RS.ID + ":crafting_monitor")
|
||||
public static final ContainerType<CraftingMonitorContainer> CRAFTING_MONITOR = null;
|
||||
@ObjectHolder(RS.ID + ":wireless_crafting_monitor")
|
||||
public static final ContainerType<CraftingMonitorContainer> WIRELESS_CRAFTING_MONITOR = null;
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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"
|
||||
);
|
||||
}
|
@@ -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
|
||||
|
@@ -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();
|
||||
|
@@ -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();
|
||||
|
@@ -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);
|
||||
|
@@ -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());
|
||||
}
|
||||
}
|
||||
|
@@ -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();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
@@ -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())));
|
||||
}
|
||||
}
|
@@ -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);
|
||||
}
|
||||
|
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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<CraftingMonitorContainer> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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<Crafti
|
||||
|
||||
CraftingMonitorTile tile = (CraftingMonitorTile) inv.player.world.getTileEntity(pos);
|
||||
|
||||
return new CraftingMonitorContainer(
|
||||
tile.getNode(),
|
||||
tile,
|
||||
inv.player,
|
||||
windowId
|
||||
);
|
||||
return new CraftingMonitorContainer(RSContainers.CRAFTING_MONITOR, tile.getNode(), tile, inv.player, windowId);
|
||||
}
|
||||
}
|
||||
|
@@ -6,17 +6,20 @@ import com.raoulvdberge.refinedstorage.tile.craftingmonitor.ICraftingMonitor;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.inventory.container.Container;
|
||||
import net.minecraft.inventory.container.ContainerType;
|
||||
import net.minecraft.inventory.container.INamedContainerProvider;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class CraftingMonitorContainerProvider implements INamedContainerProvider {
|
||||
private ICraftingMonitor craftingMonitor;
|
||||
private final ICraftingMonitor craftingMonitor;
|
||||
@Nullable
|
||||
private CraftingMonitorTile tile;
|
||||
private final CraftingMonitorTile tile;
|
||||
private final ContainerType<CraftingMonitorContainer> containerType;
|
||||
|
||||
public CraftingMonitorContainerProvider(ICraftingMonitor craftingMonitor, @Nullable CraftingMonitorTile tile) {
|
||||
public CraftingMonitorContainerProvider(ContainerType<CraftingMonitorContainer> 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);
|
||||
}
|
||||
}
|
||||
|
@@ -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<CraftingMonitorContainer> {
|
||||
@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);
|
||||
}
|
||||
}
|
@@ -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<Integer> 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<UUID> 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<UUID> 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);
|
||||
}*/
|
||||
}
|
@@ -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<UUID> 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<UUID> 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);
|
||||
}
|
||||
}
|
@@ -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<MessageWirelessCraftingMonitorSettings> implements IMessage {
|
||||
private Optional<UUID> tabSelected = Optional.absent();
|
||||
private int tabPage;
|
||||
|
||||
public MessageWirelessCraftingMonitorSettings() {
|
||||
}
|
||||
|
||||
public MessageWirelessCraftingMonitorSettings(Optional<UUID> 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);
|
||||
}
|
||||
}
|
||||
}
|
@@ -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) {
|
||||
|
@@ -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<UUID> tabSelected;
|
||||
private int tabPage;
|
||||
|
||||
public WirelessCraftingMonitorSettingsUpdateMessage(Optional<UUID> tabSelected, int tabPage) {
|
||||
this.tabSelected = tabSelected;
|
||||
this.tabPage = tabPage;
|
||||
}
|
||||
|
||||
public static WirelessCraftingMonitorSettingsUpdateMessage decode(PacketBuffer buf) {
|
||||
Optional<UUID> 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<NetworkEvent.Context> 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);
|
||||
}
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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<UUID> 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<UUID> 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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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",
|
||||
|
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
@@ -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"
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user