diff --git a/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java b/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java index a29107d15..443d4a6d0 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java @@ -59,6 +59,8 @@ public class ClientSetup { ScreenManager.registerFactory(RSContainers.CONTROLLER, ControllerScreen::new); ScreenManager.registerFactory(RSContainers.DISK_DRIVE, DiskDriveScreen::new); ScreenManager.registerFactory(RSContainers.GRID, new GridScreenFactory()); + + RSKeyBindings.init(); } @SubscribeEvent diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSKeyBindings.java b/src/main/java/com/raoulvdberge/refinedstorage/RSKeyBindings.java index d979f59f2..0ddde537c 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSKeyBindings.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSKeyBindings.java @@ -1,7 +1,13 @@ package com.raoulvdberge.refinedstorage; +import net.minecraft.client.settings.KeyBinding; +import net.minecraft.client.util.InputMappings; +import net.minecraftforge.client.settings.KeyConflictContext; +import net.minecraftforge.fml.client.registry.ClientRegistry; +import org.lwjgl.glfw.GLFW; + public final class RSKeyBindings { - /*public static final KeyBinding FOCUS_SEARCH_BAR = new KeyBinding("key.refinedstorage.focusSearchBar", KeyConflictContext.GUI, Keyboard.KEY_TAB, "Refined Storage"); + /* public static final KeyBinding CLEAR_GRID_CRAFTING_MATRIX = new KeyBinding("key.refinedstorage.clearGridCraftingMatrix", KeyConflictContext.GUI, KeyModifier.CONTROL, Keyboard.KEY_X, "Refined Storage"); public static final KeyBinding OPEN_WIRELESS_GRID = new KeyBinding("key.refinedstorage.openWirelessGrid", KeyConflictContext.IN_GAME, 0, "Refined Storage"); public static final KeyBinding OPEN_WIRELESS_FLUID_GRID = new KeyBinding("key.refinedstorage.openWirelessFluidGrid", KeyConflictContext.IN_GAME, 0, "Refined Storage"); @@ -9,14 +15,16 @@ public final class RSKeyBindings { public static final KeyBinding OPEN_WIRELESS_CRAFTING_MONITOR = new KeyBinding("key.refinedstorage.openWirelessCraftingMonitor", KeyConflictContext.IN_GAME, 0, "Refined Storage"); public static void init() { - ClientRegistry.registerKeyBinding(FOCUS_SEARCH_BAR); ClientRegistry.registerKeyBinding(CLEAR_GRID_CRAFTING_MATRIX); ClientRegistry.registerKeyBinding(OPEN_WIRELESS_GRID); ClientRegistry.registerKeyBinding(OPEN_WIRELESS_FLUID_GRID); ClientRegistry.registerKeyBinding(OPEN_PORTABLE_GRID); ClientRegistry.registerKeyBinding(OPEN_WIRELESS_CRAFTING_MONITOR); }*/ + + 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() { - // TODO + ClientRegistry.registerKeyBinding(FOCUS_SEARCH_BAR); } } \ No newline at end of file diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/GridOpenHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/GridOpenHandler.java deleted file mode 100644 index 5ae8aa572..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/GridOpenHandler.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.raoulvdberge.refinedstorage.apiimpl.network.grid; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.PlayerEntity; - -public class GridOpenHandler implements Runnable { - //private MessageGridOpen message; - - //public GridOpenHandler(MessageGridOpen message) { - // this.message = message; - //} - - @Override - public void run() { - PlayerEntity player = Minecraft.getInstance().player; - - //Pair grid = API.instance().getGridManager().createGrid(message.getGridId(), player, message.getStack(), message.getPos()); - - //if (grid == null) { - // return; - //} - - //GuiGrid gui = new GuiGrid(null, null, grid.getLeft()); - - // @Volatile: Just set the windowId: from OpenGuiHandler#process - /*TODO player.openContainer = new ContainerGrid(grid.getLeft(), gui, grid.getRight() instanceof TileBase ? (TileBase) grid.getRight() : null, player); - player.openContainer.windowId = message.getWindowId(); - - gui.inventorySlots = player.openContainer; - - FMLClientHandler.instance().showGuiScreen(gui);*/ - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridOpen.java.off b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridOpen.java.off deleted file mode 100644 index 0d1bc3a20..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridOpen.java.off +++ /dev/null @@ -1,93 +0,0 @@ -package com.raoulvdberge.refinedstorage.network; - -import com.raoulvdberge.refinedstorage.apiimpl.network.grid.GridOpenHandler; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.fml.common.network.ByteBufUtils; -import net.minecraftforge.fml.common.network.simpleimpl.IMessage; -import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; -import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; - -import javax.annotation.Nullable; - -public class MessageGridOpen implements IMessage, IMessageHandler { - private int windowId; - @Nullable - private BlockPos pos; - @Nullable - private ItemStack stack; - private int gridId; - - public MessageGridOpen() { - } - - public MessageGridOpen(int windowId, @Nullable BlockPos pos, int gridId, @Nullable ItemStack stack) { - if (pos == null && stack == null) { - throw new IllegalArgumentException("Can't be both null"); - } - - this.windowId = windowId; - this.pos = pos; - this.stack = stack; - this.gridId = gridId; - } - - @Override - public void fromBytes(ByteBuf buf) { - windowId = buf.readInt(); - gridId = buf.readInt(); - - if (buf.readBoolean()) { - pos = new BlockPos(buf.readInt(), buf.readInt(), buf.readInt()); - } - - if (buf.readBoolean()) { - stack = ByteBufUtils.readItemStack(buf); - } - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(windowId); - buf.writeInt(gridId); - - buf.writeBoolean(pos != null); - if (pos != null) { - buf.writeInt(pos.getX()); - buf.writeInt(pos.getY()); - buf.writeInt(pos.getZ()); - } - - buf.writeBoolean(stack != null); - if (stack != null) { - ByteBufUtils.writeItemStack(buf, stack); - } - } - - public int getWindowId() { - return windowId; - } - - @Nullable - public BlockPos getPos() { - return pos; - } - - @Nullable - public ItemStack getStack() { - return stack; - } - - public int getGridId() { - return gridId; - } - - @Override - public IMessage onMessage(MessageGridOpen message, MessageContext ctx) { - Minecraft.getMinecraft().addScheduledTask(new GridOpenHandler(message)); - - return null; - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/GridScreen.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/GridScreen.java index 0b532a90f..1c29c12b2 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/GridScreen.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/GridScreen.java @@ -322,9 +322,9 @@ public class GridScreen extends BaseScreen implements IScreenInfo tabs.drawForeground(x, y - tabs.getHeight(), mouseX, mouseY, true); - if (searchField != null) { - searchField.render(0, 0, 0); - } + searchField.render(0, 0, 0); + + scrollbar.render(); } @Override @@ -417,6 +417,10 @@ public class GridScreen extends BaseScreen implements IScreenInfo return true; } + if (scrollbar.mouseClicked(mouseX, mouseY, clickedButton)) { + return true; + } + boolean clickedClear = clickedButton == 0 && isOverClear(mouseX - guiLeft, mouseY - guiTop); boolean clickedCreatePattern = clickedButton == 0 && isOverCreatePattern(mouseX - guiLeft, mouseY - guiTop); @@ -484,6 +488,23 @@ public class GridScreen extends BaseScreen implements IScreenInfo return super.mouseClicked(mouseX, mouseY, clickedButton); } + @Override + public void mouseMoved(double mx, double my) { + scrollbar.mouseMoved(mx, my); + + super.mouseMoved(mx, my); + } + + @Override + public boolean mouseReleased(double mx, double my, int button) { + return scrollbar.mouseReleased(mx, my, button) || super.mouseReleased(mx, my, button); + } + + @Override + public boolean mouseScrolled(double x, double y, double delta) { + return this.scrollbar.mouseScrolled(x, y, delta) || super.mouseScrolled(x, y, delta); + } + @Override public boolean keyPressed(int key, int scanCode, int modifiers) { if (searchField.keyPressed(key, scanCode, modifiers) || searchField.func_212955_f()) { @@ -514,10 +535,8 @@ public class GridScreen extends BaseScreen implements IScreenInfo } public void updateScrollbar() { - if (scrollbar != null) { - scrollbar.setEnabled(getRows() > getVisibleRows()); - scrollbar.setMaxOffset(getRows() - getVisibleRows()); - } + scrollbar.setEnabled(getRows() > getVisibleRows()); + scrollbar.setMaxOffset(getRows() - getVisibleRows()); } public static List getSorters() { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/widget/SearchWidget.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/widget/SearchWidget.java index 290e2c4e6..acaf23daf 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/widget/SearchWidget.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/widget/SearchWidget.java @@ -1,5 +1,6 @@ package com.raoulvdberge.refinedstorage.screen.widget; +import com.raoulvdberge.refinedstorage.RSKeyBindings; import com.raoulvdberge.refinedstorage.api.network.grid.IGrid; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.widget.TextFieldWidget; @@ -82,14 +83,13 @@ public class SearchWidget extends TextFieldWidget { } } - /* TODO - if (keyCode == RSKeyBindings.FOCUS_SEARCH_BAR.getKeyCode() && canLoseFocus) { + if (keyCode == RSKeyBindings.FOCUS_SEARCH_BAR.getKey().getKeyCode() && canLoseFocus) { setFocused(!isFocused()); saveHistory(); result = true; - }*/ + } if (result) { listeners.forEach(Runnable::run);