diff --git a/src/main/java/ru/dbotthepony/mc/otm/screen/MatterPanelScreen.java b/src/main/java/ru/dbotthepony/mc/otm/screen/MatterPanelScreen.java index 13395d769..8a7c29af7 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/screen/MatterPanelScreen.java +++ b/src/main/java/ru/dbotthepony/mc/otm/screen/MatterPanelScreen.java @@ -15,6 +15,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvents; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; import ru.dbotthepony.mc.otm.OverdriveThatMatters; import ru.dbotthepony.mc.otm.capability.MatterTask; import ru.dbotthepony.mc.otm.capability.PatternState; @@ -27,6 +28,7 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; +import java.util.UUID; import static org.lwjgl.opengl.GL11.GL_ALWAYS; import static org.lwjgl.opengl.GL11.GL_LESS; @@ -48,6 +50,12 @@ public class MatterPanelScreen extends MatteryScreen { imageHeight = 187; titleLabelY = 5; + + for (int i = 0; i < 100; i++) { + menu.patterns.add(new PatternState(UUID.randomUUID(), Items.COOKED_BEEF, 0.4)); + menu.patterns.add(new PatternState(UUID.randomUUID(), Items.DIAMOND, 0.6)); + menu.patterns.add(new PatternState(UUID.randomUUID(), Items.COBBLESTONE, 0.1)); + } } public static final int GRID_WIDTH = 8; @@ -95,10 +103,10 @@ public class MatterPanelScreen extends MatteryScreen { scroll_panel.setDocking(Dock.RIGHT); scroll_panel.setupRowMultiplier(() -> { if (tasks_tab.isActive()) { - return menu.tasks.size() / 9; + return menu.tasks.size() / GRID_WIDTH; } - return menu.patterns.size() / 9; + return menu.patterns.size() / GRID_WIDTH; }); var grid = new GridPanel(this, frame, 0, 0, GRID_WIDTH * AbstractSlotPanel.REGULAR_DIMENSIONS, 0, GRID_WIDTH, GRID_HEIGHT) { @@ -118,20 +126,24 @@ public class MatterPanelScreen extends MatteryScreen { @Nonnull @Override protected ItemStack getItemStack() { - if (slot >= menu.patterns.size()) { + var slot1 = slot + scroll_panel.getScroll(menu.patterns.size() / GRID_WIDTH) * GRID_WIDTH; + + if (slot1 >= menu.patterns.size()) { return ItemStack.EMPTY; } - return menu.patterns.get(slot).stack(); + return menu.patterns.get(slot1).stack(); } @Override protected List getItemStackTooltip(ItemStack stack) { - if (slot >= menu.patterns.size()) { + var slot1 = slot + scroll_panel.getScroll(menu.patterns.size() / GRID_WIDTH) * GRID_WIDTH; + + if (slot1 >= menu.patterns.size()) { return List.of(); } - return getPatternTooltip(super.getItemStackTooltip(stack), menu.patterns.get(slot)); + return getPatternTooltip(super.getItemStackTooltip(stack), menu.patterns.get(slot1)); } @Override @@ -155,22 +167,25 @@ public class MatterPanelScreen extends MatteryScreen { @Nonnull @Override protected ItemStack getItemStack() { - if (slot >= menu.tasks.size()) { + var slot1 = slot + scroll_panel.getScroll(menu.tasks.size() / GRID_WIDTH) * GRID_WIDTH; + + if (slot1 >= menu.tasks.size()) { return ItemStack.EMPTY; } - var task = menu.tasks.get(slot); - + var task = menu.tasks.get(slot1); return task.stack(Math.max(task.required(), 1)); } @Override protected List getItemStackTooltip(ItemStack stack) { - if (slot >= menu.tasks.size()) { + var slot1 = slot + scroll_panel.getScroll(menu.tasks.size() / GRID_WIDTH) * GRID_WIDTH; + + if (slot1 >= menu.tasks.size()) { return List.of(); } - return getTaskTooltip(super.getItemStackTooltip(stack), menu.tasks.get(slot)); + return getTaskTooltip(super.getItemStackTooltip(stack), menu.tasks.get(slot1)); } @Override diff --git a/src/main/java/ru/dbotthepony/mc/otm/screen/panels/ScrollBarPanel.java b/src/main/java/ru/dbotthepony/mc/otm/screen/panels/ScrollBarPanel.java index 11ae4e6b8..0da88bcee 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/screen/panels/ScrollBarPanel.java +++ b/src/main/java/ru/dbotthepony/mc/otm/screen/panels/ScrollBarPanel.java @@ -152,13 +152,14 @@ public class ScrollBarPanel extends EditablePanel { return 0; } - return (int) Math.floor(getScroll() * (max_rows - 1) + 0.5); + return (int) Math.floor(getScroll() * max_rows + 0.5); } // public is for emulating input from outside @Override public boolean mouseScrolledInner(double mouse_x, double mouse_y, double scroll) { - setScrollInternal((float) (this.scroll + scroll * scroll_multiplier.get())); + setScrollInternal((float) (this.scroll - scroll * scroll_multiplier.get())); + updateScrollBarPosition(); return true; }