From 17eb003a12097fb9748e85ad7d3a35954a10ef1e Mon Sep 17 00:00:00 2001 From: somehussar <148253652+somehussar@users.noreply.github.com> Date: Sat, 31 Jan 2026 07:18:54 +0100 Subject: [PATCH] i fucking give up, this will not hold up. --- .../data/ability/type/AbilitySlam.java | 2 ++ .../java/somehussar/gui/AnnotatedGui.java | 23 +++++++++---- .../somehussar/gui/ImmediateTextField.java | 32 +++++++++++++++++++ 3 files changed, 50 insertions(+), 7 deletions(-) create mode 100644 src/main/java/somehussar/gui/ImmediateTextField.java diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilitySlam.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilitySlam.java index 2dae47d05..b3c800d81 100644 --- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilitySlam.java +++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilitySlam.java @@ -19,6 +19,7 @@ import noppes.npcs.client.gui.util.IAbilityConfigCallback; import noppes.npcs.entity.EntityNPCInterface; import noppes.npcs.api.ability.type.IAbilitySlam; +import somehussar.gui.annotationHandling.GuiEditable; import java.util.List; @@ -31,6 +32,7 @@ import java.util.List; * - Landing: When NPC hits ground, deal AOE damage * - RECOVERY: Landing recovery animation */ +@GuiEditable public class AbilitySlam extends Ability implements IAbilitySlam { // Type-specific config diff --git a/src/main/java/somehussar/gui/AnnotatedGui.java b/src/main/java/somehussar/gui/AnnotatedGui.java index 7bb4bf777..8cdf224d5 100644 --- a/src/main/java/somehussar/gui/AnnotatedGui.java +++ b/src/main/java/somehussar/gui/AnnotatedGui.java @@ -1,19 +1,28 @@ package somehussar.gui; -import noppes.npcs.client.gui.util.GuiNPCInterface; +import net.minecraft.client.gui.GuiScreen; import noppes.npcs.client.gui.util.GuiNpcLabel; +import noppes.npcs.client.gui.util.SubGuiInterface; import somehussar.gui.annotationHandling.GuiFieldHandler; import somehussar.gui.annotationHandling.field.EditableField; -public class AnnotatedGui extends GuiNPCInterface { +public class AnnotatedGui extends SubGuiInterface { private final GuiFieldHandler.ClassMetadata metadata; - public AnnotatedGui(Class type) { - metadata = GuiFieldHandler.getMetadata(type); + public AnnotatedGui(T object, String[] groups, GuiScreen parent) { + this(object, groups, parent, 256, 216); + } + + public AnnotatedGui(T object, String[] groups, GuiScreen parent, int xSize, int ySize) { + if (object != null) + metadata = GuiFieldHandler.getMetadata(object.getClass()); + else + metadata = null; setBackground("menubg.png"); - xSize = 256; - ySize = 216; + this.xSize = xSize; + this.ySize = ySize; closeOnEsc = true; + this.parent = parent; } @Override @@ -23,7 +32,7 @@ public class AnnotatedGui extends GuiNPCInterface { return; int i = 0; - for (EditableField field : metadata.getDeclaredFields()) { + for (EditableField field : metadata.getParent().getDeclaredFields()) { addLabel(new GuiNpcLabel(i++, field.getName(), guiLeft+8, guiTop+i*15+5)); } } diff --git a/src/main/java/somehussar/gui/ImmediateTextField.java b/src/main/java/somehussar/gui/ImmediateTextField.java new file mode 100644 index 000000000..5f49a9d84 --- /dev/null +++ b/src/main/java/somehussar/gui/ImmediateTextField.java @@ -0,0 +1,32 @@ +package somehussar.gui; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import noppes.npcs.client.gui.util.GuiNpcTextField; +import somehussar.gui.annotationHandling.field.EditableField; + +public class ImmediateTextField extends GuiNpcTextField{ + private final EditableField editableField; +// +// private final GuiNpcTextField encapsulatedField; + + public ImmediateTextField(int id, EditableField field, int xPos, int yPos) { + this(id, field, Minecraft.getMinecraft().fontRenderer, xPos, yPos); + } + public ImmediateTextField(int id, EditableField field, FontRenderer fontRenderer, int xPos, int yPos) { + super(id, null, fontRenderer, xPos, yPos, 0, 0, null); + + this.editableField = field; + } + + @Override + public void drawTextBox(int mousX, int mousY) { + + } + + @Override + public void mouseClicked(int xPos, int yPos, int k) { + xPos -= this.xPosition; + yPos -= this.yPosition; + } +}