diff --git a/src/main/java/org/betterx/bclib/client/gui/modmenu/TestScreen.java b/src/main/java/org/betterx/bclib/client/gui/modmenu/TestScreen.java index 569be560..1b165e40 100644 --- a/src/main/java/org/betterx/bclib/client/gui/modmenu/TestScreen.java +++ b/src/main/java/org/betterx/bclib/client/gui/modmenu/TestScreen.java @@ -10,6 +10,10 @@ import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + +@Environment(EnvType.CLIENT) public class TestScreen extends Screen { public TestScreen(Component component) { super(component); @@ -50,7 +54,7 @@ public class TestScreen extends Screen { rows.addFiller(); main.setChild(HorizontalStack.centered(rows)); main.calculateLayout(); - + addRenderableWidget(main); } diff --git a/src/main/java/org/betterx/ui/layout/components/Button.java b/src/main/java/org/betterx/ui/layout/components/Button.java index 620cb3ca..0cf99049 100644 --- a/src/main/java/org/betterx/ui/layout/components/Button.java +++ b/src/main/java/org/betterx/ui/layout/components/Button.java @@ -1,6 +1,5 @@ package org.betterx.ui.layout.components; -import org.betterx.ui.layout.components.input.MouseEvent; import org.betterx.ui.layout.components.render.ComponentRenderer; import org.betterx.ui.layout.values.DynamicSize; import org.betterx.ui.layout.values.Rectangle; @@ -9,6 +8,10 @@ import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + +@Environment(EnvType.CLIENT) class ButtonRenderer implements ComponentRenderer { Button linkedButton; @@ -35,6 +38,7 @@ class ButtonRenderer implements ComponentRenderer { } } +@Environment(EnvType.CLIENT) public class Button extends Component { int mouseX, mouseY; final net.minecraft.network.chat.Component component; @@ -57,18 +61,6 @@ public class Button extends Component { this.onTooltip = onTooltip; } - @Override - public boolean onMouseEvent(MouseEvent event, int x, int y) { - mouseX = x; - mouseY = y; - if (vanillaButton != null && relativeBounds.contains(x, y)) { - if (event == MouseEvent.DOWN) return vanillaButton.mouseClicked(x, y, 0); - - return true; - } - return super.onMouseEvent(event, x, y); - } - @Override protected void onBoundsChanged() { vanillaButton = new net.minecraft.client.gui.components.Button( diff --git a/src/main/java/org/betterx/ui/layout/components/Component.java b/src/main/java/org/betterx/ui/layout/components/Component.java index c1938ce6..b6080415 100644 --- a/src/main/java/org/betterx/ui/layout/components/Component.java +++ b/src/main/java/org/betterx/ui/layout/components/Component.java @@ -1,6 +1,5 @@ package org.betterx.ui.layout.components; -import org.betterx.ui.layout.components.input.MouseEvent; import org.betterx.ui.layout.components.render.ComponentRenderer; import org.betterx.ui.layout.values.Alignment; import org.betterx.ui.layout.values.DynamicSize; @@ -9,6 +8,10 @@ import org.betterx.ui.layout.values.Rectangle; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.gui.components.events.GuiEventListener; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + +@Environment(EnvType.CLIENT) public abstract class Component implements ComponentWithBounds, GuiEventListener { protected final R renderer; protected final DynamicSize width; @@ -86,14 +89,6 @@ public abstract class Component implements Componen } } - boolean mouseEvent(MouseEvent event, int x, int y) { - return onMouseEvent(event, x, y); - } - - public boolean onMouseEvent(MouseEvent event, int x, int y) { - return false; - } - @Override public String toString() { return super.toString() + "(" + relativeBounds + ", " + width.calculatedSize() + "x" + height.calculatedSize() + ")"; diff --git a/src/main/java/org/betterx/ui/layout/components/ComponentWithBounds.java b/src/main/java/org/betterx/ui/layout/components/ComponentWithBounds.java index cae405f9..af9ed645 100644 --- a/src/main/java/org/betterx/ui/layout/components/ComponentWithBounds.java +++ b/src/main/java/org/betterx/ui/layout/components/ComponentWithBounds.java @@ -2,6 +2,10 @@ package org.betterx.ui.layout.components; import org.betterx.ui.layout.values.Rectangle; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + +@Environment(EnvType.CLIENT) public interface ComponentWithBounds { Rectangle getRelativeBounds(); } diff --git a/src/main/java/org/betterx/ui/layout/components/Empty.java b/src/main/java/org/betterx/ui/layout/components/Empty.java index 6264f3b9..7c74ae3a 100644 --- a/src/main/java/org/betterx/ui/layout/components/Empty.java +++ b/src/main/java/org/betterx/ui/layout/components/Empty.java @@ -2,6 +2,10 @@ package org.betterx.ui.layout.components; import org.betterx.ui.layout.values.DynamicSize; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + +@Environment(EnvType.CLIENT) public class Empty extends Component { public Empty( DynamicSize width, diff --git a/src/main/java/org/betterx/ui/layout/components/HorizontalStack.java b/src/main/java/org/betterx/ui/layout/components/HorizontalStack.java index 6f538f31..a7057f3b 100644 --- a/src/main/java/org/betterx/ui/layout/components/HorizontalStack.java +++ b/src/main/java/org/betterx/ui/layout/components/HorizontalStack.java @@ -1,6 +1,5 @@ package org.betterx.ui.layout.components; -import org.betterx.ui.layout.components.input.MouseEvent; import org.betterx.ui.layout.components.input.RelativeContainerEventHandler; import org.betterx.ui.layout.components.render.ComponentRenderer; import org.betterx.ui.layout.values.Alignment; @@ -10,10 +9,14 @@ import org.betterx.ui.layout.values.Rectangle; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.gui.components.events.GuiEventListener; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + import java.util.LinkedList; import java.util.List; import org.jetbrains.annotations.Nullable; +@Environment(EnvType.CLIENT) public class HorizontalStack extends Component implements RelativeContainerEventHandler { protected final List> components = new LinkedList<>(); @@ -114,17 +117,6 @@ public class HorizontalStack extends Component i } } - @Override - boolean mouseEvent(MouseEvent event, int x, int y) { - if (!onMouseEvent(event, x, y)) { - for (Component c : components) { - if (c.mouseEvent(event, x - relativeBounds.left, y - relativeBounds.top)) - return true; - } - } - return false; - } - public static HorizontalStack centered(Component c) { return new HorizontalStack<>(DynamicSize.relative(1), DynamicSize.relative(1)).addFiller().add(c).addFiller(); } diff --git a/src/main/java/org/betterx/ui/layout/components/Panel.java b/src/main/java/org/betterx/ui/layout/components/Panel.java index 296fa207..f63a7051 100644 --- a/src/main/java/org/betterx/ui/layout/components/Panel.java +++ b/src/main/java/org/betterx/ui/layout/components/Panel.java @@ -1,7 +1,6 @@ package org.betterx.ui.layout.components; -import org.betterx.ui.layout.components.input.MouseEvent; import org.betterx.ui.layout.components.input.RelativeContainerEventHandler; import org.betterx.ui.layout.values.Rectangle; @@ -11,9 +10,13 @@ import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.gui.narration.NarratableEntry; import net.minecraft.client.gui.narration.NarrationElementOutput; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + import java.util.List; import org.jetbrains.annotations.Nullable; +@Environment(EnvType.CLIENT) public class Panel implements ComponentWithBounds, RelativeContainerEventHandler, NarratableEntry, Widget { protected Component child; List listeners = List.of(); @@ -28,13 +31,6 @@ public class Panel implements ComponentWithBounds, RelativeContainerEventHandler listeners = List.of(c); } - public boolean mouseEvent(MouseEvent event, int x, int y) { - if (child != null) { - return child.mouseEvent(event, x - bounds.left, y - bounds.top); - } - return false; - } - public void calculateLayout() { if (child != null) { child.updateContainerWidth(bounds.width); diff --git a/src/main/java/org/betterx/ui/layout/components/VerticalScroll.java b/src/main/java/org/betterx/ui/layout/components/VerticalScroll.java index c6ecd423..9a844c81 100644 --- a/src/main/java/org/betterx/ui/layout/components/VerticalScroll.java +++ b/src/main/java/org/betterx/ui/layout/components/VerticalScroll.java @@ -1,6 +1,5 @@ package org.betterx.ui.layout.components; -import org.betterx.ui.layout.components.input.MouseEvent; import org.betterx.ui.layout.components.render.ComponentRenderer; import org.betterx.ui.layout.components.render.ScrollerRenderer; import org.betterx.ui.layout.values.DynamicSize; @@ -8,6 +7,10 @@ import org.betterx.ui.layout.values.Rectangle; import com.mojang.blaze3d.vertex.PoseStack; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + +@Environment(EnvType.CLIENT) public class VerticalScroll extends Component { protected Component child; protected final RS scrollerRenderer; @@ -71,17 +74,6 @@ public class VerticalScroll extends Component implements RelativeContainerEventHandler { protected final List> components = new LinkedList<>(); @@ -113,17 +116,6 @@ public class VerticalStack extends Component imp } } - @Override - boolean mouseEvent(MouseEvent event, int x, int y) { - if (!onMouseEvent(event, x, y)) { - for (Component c : components) { - if (c.mouseEvent(event, x - relativeBounds.left, y - relativeBounds.top)) - return true; - } - } - return false; - } - public static VerticalStack centered(Component c) { return new VerticalStack<>(DynamicSize.relative(1), DynamicSize.relative(1)).addFiller().add(c).addFiller(); } diff --git a/src/main/java/org/betterx/ui/layout/components/render/ComponentRenderer.java b/src/main/java/org/betterx/ui/layout/components/render/ComponentRenderer.java index 6c4117b8..7faa9d00 100644 --- a/src/main/java/org/betterx/ui/layout/components/render/ComponentRenderer.java +++ b/src/main/java/org/betterx/ui/layout/components/render/ComponentRenderer.java @@ -4,6 +4,10 @@ import org.betterx.ui.layout.values.Rectangle; import com.mojang.blaze3d.vertex.PoseStack; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + +@Environment(EnvType.CLIENT) public interface ComponentRenderer { void renderInBounds(PoseStack stack, int x, int y, float a, Rectangle bounds, Rectangle clipRect); } diff --git a/src/main/java/org/betterx/ui/layout/components/render/ScrollerRenderer.java b/src/main/java/org/betterx/ui/layout/components/render/ScrollerRenderer.java index 32776a79..8ba5f1a9 100644 --- a/src/main/java/org/betterx/ui/layout/components/render/ScrollerRenderer.java +++ b/src/main/java/org/betterx/ui/layout/components/render/ScrollerRenderer.java @@ -3,6 +3,10 @@ package org.betterx.ui.layout.components.render; import org.betterx.ui.layout.values.Rectangle; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + +@Environment(EnvType.CLIENT) public interface ScrollerRenderer { default int scrollerHeight() { return 16; diff --git a/src/main/java/org/betterx/ui/layout/values/Alignment.java b/src/main/java/org/betterx/ui/layout/values/Alignment.java index 580389f2..f0906717 100644 --- a/src/main/java/org/betterx/ui/layout/values/Alignment.java +++ b/src/main/java/org/betterx/ui/layout/values/Alignment.java @@ -1,5 +1,9 @@ package org.betterx.ui.layout.values; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + +@Environment(EnvType.CLIENT) public enum Alignment { MIN, MAX, CENTER } diff --git a/src/main/java/org/betterx/ui/layout/values/DynamicSize.java b/src/main/java/org/betterx/ui/layout/values/DynamicSize.java index 3d8d9636..dbb3cc33 100644 --- a/src/main/java/org/betterx/ui/layout/values/DynamicSize.java +++ b/src/main/java/org/betterx/ui/layout/values/DynamicSize.java @@ -1,5 +1,9 @@ package org.betterx.ui.layout.values; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + +@Environment(EnvType.CLIENT) public class DynamicSize { private SizeType sizeType; private int calculatedSize; diff --git a/src/main/java/org/betterx/ui/layout/values/Rectangle.java b/src/main/java/org/betterx/ui/layout/values/Rectangle.java index ea301626..938d2e08 100644 --- a/src/main/java/org/betterx/ui/layout/values/Rectangle.java +++ b/src/main/java/org/betterx/ui/layout/values/Rectangle.java @@ -1,5 +1,9 @@ package org.betterx.ui.layout.values; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + +@Environment(EnvType.CLIENT) public class Rectangle { public static final Rectangle ZERO = new Rectangle(0, 0, 0, 0); public final int left; diff --git a/src/main/java/org/betterx/ui/layout/values/SizeType.java b/src/main/java/org/betterx/ui/layout/values/SizeType.java index b594418c..2f65c59f 100644 --- a/src/main/java/org/betterx/ui/layout/values/SizeType.java +++ b/src/main/java/org/betterx/ui/layout/values/SizeType.java @@ -1,5 +1,9 @@ package org.betterx.ui.layout.values; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + +@Environment(EnvType.CLIENT) public interface SizeType { FitContent FIT_CONTENT = new FitContent(); FitContentOrFill FIT_CONTENT_OR_FILL = new FitContentOrFill();