ContainerGuiOverlay.java 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package me.shedaniel.rei.gui;
  2. import me.shedaniel.rei.gui.widget.IWidget;
  3. import me.shedaniel.rei.gui.widget.LabelWidget;
  4. import me.shedaniel.rei.mixin.IMixinContainerGui;
  5. import net.minecraft.client.MinecraftClient;
  6. import net.minecraft.client.gui.ContainerGui;
  7. import net.minecraft.client.gui.Gui;
  8. import net.minecraft.client.gui.widget.ButtonWidget;
  9. import net.minecraft.client.util.Window;
  10. import java.awt.*;
  11. import java.util.ArrayList;
  12. import java.util.List;
  13. public class ContainerGuiOverlay extends Gui {
  14. private Rectangle rectangle;
  15. private IMixinContainerGui containerGui;
  16. private Window window;
  17. private int page;
  18. private List<IWidget> widgets;
  19. public ContainerGuiOverlay(ContainerGui containerGui) {
  20. this.containerGui = (IMixinContainerGui) containerGui;
  21. }
  22. @Override
  23. protected void onInitialized() {
  24. //Update Variables
  25. this.widgets = new ArrayList<>();
  26. this.window = MinecraftClient.getInstance().window;
  27. if (MinecraftClient.getInstance().currentGui instanceof ContainerGui)
  28. this.containerGui = (IMixinContainerGui) MinecraftClient.getInstance().currentGui;
  29. this.page = 0;
  30. rectangle = calculateBoundary();
  31. addButton(new ButtonWidget(-1, rectangle.x, rectangle.y + 3, 16, 20, "<") {
  32. @Override
  33. public void onPressed(double double_1, double double_2) {
  34. //Left Page
  35. }
  36. });
  37. addButton(new ButtonWidget(-1, rectangle.x + rectangle.width - 18, rectangle.y + 3, 16, 20, ">") {
  38. @Override
  39. public void onPressed(double double_1, double double_2) {
  40. //Right Page
  41. }
  42. });
  43. widgets.add(new LabelWidget(rectangle.x + (rectangle.width / 2), rectangle.y + 10, String.format("%s/%s", page + 1, getTotalPage() + 1)));
  44. }
  45. @Override
  46. public void draw(int int_1, int int_2, float float_1) {
  47. widgets.forEach(widget -> widget.draw(int_1, int_2, float_1));
  48. }
  49. private Rectangle calculateBoundary() {
  50. int startX = containerGui.getContainerLeft() + containerGui.getContainerWidth() + 10;
  51. int width = window.getScaledWidth() - startX;
  52. return new Rectangle(startX, 0, width, window.getScaledHeight());
  53. }
  54. private int getTotalPage() {
  55. return 10;
  56. }
  57. }