MixinGuiContainerCreative.java 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package me.shedaniel.mixins;
  2. import me.shedaniel.Core;
  3. import me.shedaniel.listenerdefinitions.GuiKeyDown;
  4. import net.minecraft.client.gui.ingame.AbstractPlayerInventoryGui;
  5. import net.minecraft.client.gui.ingame.CreativePlayerInventoryGui;
  6. import net.minecraft.client.gui.widget.TextFieldWidget;
  7. import net.minecraft.container.Container;
  8. import net.minecraft.container.Slot;
  9. import net.minecraft.item.ItemGroup;
  10. import net.minecraft.util.math.MathHelper;
  11. import org.spongepowered.asm.mixin.Mixin;
  12. import org.spongepowered.asm.mixin.Overwrite;
  13. import org.spongepowered.asm.mixin.Shadow;
  14. import java.util.Objects;
  15. @Mixin(CreativePlayerInventoryGui.class)
  16. public abstract class MixinGuiContainerCreative extends AbstractPlayerInventoryGui {
  17. @Shadow
  18. private boolean field_2888;
  19. @Shadow
  20. public abstract int method_2469();
  21. @Shadow
  22. protected abstract void setSelectedTab(ItemGroup itemGroup_1);
  23. @Shadow
  24. protected abstract boolean method_2470(Slot slot_1);
  25. @Shadow
  26. private TextFieldWidget searchBox;
  27. @Shadow
  28. protected abstract void method_2464();
  29. @Shadow
  30. protected abstract boolean doRenderScrollBar();
  31. @Shadow
  32. private float scrollPosition;
  33. public MixinGuiContainerCreative(Container container_1) {
  34. super(container_1);
  35. }
  36. @Overwrite
  37. public boolean keyPressed(int p_keyPressed_1_, int p_keyPressed_2_, int p_keyPressed_3_) {
  38. this.field_2888 = false;
  39. if (method_2469() != ItemGroup.SEARCH.getId()) {
  40. if (method_2469() != ItemGroup.INVENTORY.getId()) {
  41. if (this.client.options.keyChat.matches(p_keyPressed_1_, p_keyPressed_2_)) {
  42. this.field_2888 = true;
  43. this.setSelectedTab(ItemGroup.SEARCH);
  44. return true;
  45. }
  46. } else for(GuiKeyDown listener : Core.getListeners(GuiKeyDown.class))
  47. if (listener.keyDown(p_keyPressed_1_, p_keyPressed_2_, p_keyPressed_3_))
  48. return true;
  49. } else {
  50. boolean flag = !this.method_2470(this.focusedSlot) || this.focusedSlot != null && this.focusedSlot.hasStack();
  51. if (flag && this.handleHotbarKeyPressed(p_keyPressed_1_, p_keyPressed_2_)) {
  52. this.field_2888 = true;
  53. return true;
  54. } else {
  55. String s = this.searchBox.getText();
  56. if (this.searchBox.keyPressed(p_keyPressed_1_, p_keyPressed_2_, p_keyPressed_3_)) {
  57. if (!Objects.equals(s, this.searchBox.getText()))
  58. this.method_2464();
  59. return true;
  60. }
  61. }
  62. }
  63. return super.keyPressed(p_keyPressed_1_, p_keyPressed_2_, p_keyPressed_3_);
  64. }
  65. @Overwrite
  66. public boolean mouseScrolled(double p_mouseScrolled_1_) {
  67. if (!this.doRenderScrollBar()) {
  68. return super.mouseScrolled(p_mouseScrolled_1_);
  69. } else {
  70. int i = (((CreativePlayerInventoryGui.CreativeContainer) this.container).itemList.size() + 9 - 1) / 9 - 5;
  71. this.scrollPosition = (float) ((double) this.scrollPosition - p_mouseScrolled_1_ / (double) i);
  72. this.scrollPosition = MathHelper.clamp(this.scrollPosition, 0.0F, 1.0F);
  73. ((CreativePlayerInventoryGui.CreativeContainer) this.container).method_2473(this.scrollPosition);
  74. return true;
  75. }
  76. }
  77. }