From 1acdaa34b6e664fdd4487989d3e871cc6c8f9208 Mon Sep 17 00:00:00 2001 From: Marcel Konrad Date: Sat, 23 May 2020 21:28:17 +0200 Subject: [PATCH] Extend IContent by IGuiEventListener and implement method hooks --- .../worldhandler/gui/container/Container.java | 14 +-- .../gui/container/impl/GuiWorldHandler.java | 101 ++++++++++++++++-- .../worldhandler/gui/content/IContent.java | 3 +- 3 files changed, 103 insertions(+), 15 deletions(-) diff --git a/src/main/java/exopandora/worldhandler/gui/container/Container.java b/src/main/java/exopandora/worldhandler/gui/container/Container.java index 4f812e2..d6cc863 100644 --- a/src/main/java/exopandora/worldhandler/gui/container/Container.java +++ b/src/main/java/exopandora/worldhandler/gui/container/Container.java @@ -15,12 +15,18 @@ import net.minecraftforge.api.distmarker.OnlyIn; @OnlyIn(Dist.CLIENT) public abstract class Container extends Screen implements IContainer { + protected final List menus = new ArrayList(); + protected Container(ITextComponent title) { super(title); } - protected final List menus = new ArrayList(); + @Override + public void init() + { + super.init(); + } @Override public T add(T button) @@ -34,12 +40,6 @@ public abstract class Container extends Screen implements IContainer return textfield; } - @Override - public void init() - { - super.init(); - } - @Override public void add(Menu menu) { diff --git a/src/main/java/exopandora/worldhandler/gui/container/impl/GuiWorldHandler.java b/src/main/java/exopandora/worldhandler/gui/container/impl/GuiWorldHandler.java index 79ec78f..7a87c72 100644 --- a/src/main/java/exopandora/worldhandler/gui/container/impl/GuiWorldHandler.java +++ b/src/main/java/exopandora/worldhandler/gui/container/impl/GuiWorldHandler.java @@ -535,14 +535,9 @@ public class GuiWorldHandler extends Container } @Override - public boolean charTyped(char charTyped, int keyCode) + public void mouseMoved(double xPos, double mouseY) { - if(this.nameField.isFocused()) - { - this.nameField.setCursorPositionEnd(); - } - - return super.charTyped(charTyped, keyCode); + this.content.mouseMoved(xPos, mouseY); } @Override @@ -553,9 +548,47 @@ public class GuiWorldHandler extends Container this.nameField.setCursorPositionEnd(); } + if(this.content.mouseClicked(mouseX, mouseY, keyCode)) + { + return true; + } + return super.mouseClicked(mouseX, mouseY, keyCode); } + @Override + public boolean mouseReleased(double mouseX, double mouseY, int keyCode) + { + if(this.content.mouseReleased(mouseX, mouseY, keyCode)) + { + return true; + } + + return super.mouseReleased(mouseX, mouseY, keyCode); + } + + @Override + public boolean mouseDragged(double mouseX, double mouseY, int keyCode, double deltaX, double deltaY) + { + if(this.content.mouseDragged(mouseX, mouseY, keyCode, deltaX, deltaY)) + { + return true; + } + + return super.mouseDragged(mouseX, mouseY, keyCode, deltaX, deltaY); + } + + @Override + public boolean mouseScrolled(double mouseX, double mouseY, double distance) + { + if(this.content.mouseScrolled(mouseX, mouseY, distance)) + { + return true; + } + + return super.mouseScrolled(mouseX, mouseY, distance); + } + @Override public boolean keyPressed(int keyCode, int scanCode, int modifiers) { @@ -572,9 +605,63 @@ public class GuiWorldHandler extends Container return true; } + if(this.content.keyPressed(keyCode, scanCode, modifiers)) + { + return true; + } + return super.keyPressed(keyCode, scanCode, modifiers); } + @Override + public boolean keyReleased(int keyCode, int scanCode, int modifiers) + { + if(this.content.keyReleased(keyCode, scanCode, modifiers)) + { + return true; + } + + return super.keyReleased(keyCode, scanCode, modifiers); + } + + @Override + public boolean charTyped(char charTyped, int keyCode) + { + if(this.nameField.isFocused()) + { + this.nameField.setCursorPositionEnd(); + } + + if(this.content.charTyped(charTyped, keyCode)) + { + return true; + } + + return super.charTyped(charTyped, keyCode); + } + + @Override + public boolean changeFocus(boolean focus) + { + if(this.content.changeFocus(focus)) + { + return true; + } + + return super.changeFocus(focus); + } + + @Override + public boolean isMouseOver(double mouseX, double mouseY) + { + if(this.content.isMouseOver(mouseX, mouseY)) + { + return true; + } + + return super.isMouseOver(mouseX, mouseY); + } + private void defaultColor() { this.defaultColor(1.0F); diff --git a/src/main/java/exopandora/worldhandler/gui/content/IContent.java b/src/main/java/exopandora/worldhandler/gui/content/IContent.java index 18aa73e..0f3da8a 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/IContent.java +++ b/src/main/java/exopandora/worldhandler/gui/content/IContent.java @@ -6,11 +6,12 @@ import javax.annotation.Nullable; import exopandora.worldhandler.builder.ICommandBuilder; import exopandora.worldhandler.gui.category.Category; import exopandora.worldhandler.gui.container.Container; +import net.minecraft.client.gui.IGuiEventListener; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @OnlyIn(Dist.CLIENT) -public interface IContent +public interface IContent extends IGuiEventListener { default void init(Container container) {