diff --git a/common/src/main/java/muramasa/antimatter/gui/widget/SyncableTextWidget.java b/common/src/main/java/muramasa/antimatter/gui/widget/SyncableTextWidget.java new file mode 100644 index 000000000..ae51f2970 --- /dev/null +++ b/common/src/main/java/muramasa/antimatter/gui/widget/SyncableTextWidget.java @@ -0,0 +1,32 @@ +package muramasa.antimatter.gui.widget; + +import com.mojang.blaze3d.vertex.PoseStack; +import muramasa.antimatter.capability.IGuiHandler; +import muramasa.antimatter.gui.GuiInstance; +import muramasa.antimatter.gui.ICanSyncData; +import muramasa.antimatter.gui.IGuiElement; +import muramasa.antimatter.gui.Widget; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.function.Function; + +public class SyncableTextWidget extends TextWidget { + String text = ""; + final Function syncFunction; + protected SyncableTextWidget(@NotNull GuiInstance gui, @Nullable IGuiElement parent, int color, Function syncFunction) { + super(gui, parent, a-> ((SyncableTextWidget)a).text, color); + this.syncFunction = syncFunction; + + } + + public static WidgetSupplier build(Function textSyncFunction, int color) { + return builder((a, b) -> new SyncableTextWidget(a, b, color, textSyncFunction)); + } + + @Override + public void init() { + super.init(); + gui.syncString(() -> syncFunction.apply(gui.handler), s -> text = s, ICanSyncData.SyncDirection.SERVER_TO_CLIENT); + } +} diff --git a/common/src/main/java/muramasa/antimatter/gui/widget/TextBoxWidget.java b/common/src/main/java/muramasa/antimatter/gui/widget/TextBoxWidget.java index 5dae747e4..93ee03ffa 100644 --- a/common/src/main/java/muramasa/antimatter/gui/widget/TextBoxWidget.java +++ b/common/src/main/java/muramasa/antimatter/gui/widget/TextBoxWidget.java @@ -28,9 +28,13 @@ protected TextBoxWidget(@NotNull GuiInstance gui, @Nullable IGuiElement parent, this.consumer = consumer; } + public static WidgetSupplier build(BiConsumer consumer) { + return builder((i, p) -> new ProgressWidget(i, p)); + } + @Override public void render(PoseStack matrixStack, double mouseX, double mouseY, float partialTicks) { - + textBox.render(matrixStack, (int) mouseX, (int) mouseY, partialTicks); } @Override diff --git a/common/src/main/java/muramasa/antimatter/gui/widget/TextWidget.java b/common/src/main/java/muramasa/antimatter/gui/widget/TextWidget.java index 73f7c6820..7efedb4b1 100644 --- a/common/src/main/java/muramasa/antimatter/gui/widget/TextWidget.java +++ b/common/src/main/java/muramasa/antimatter/gui/widget/TextWidget.java @@ -5,6 +5,7 @@ import muramasa.antimatter.gui.IGuiElement; import muramasa.antimatter.gui.Widget; import muramasa.antimatter.util.Utils; +import net.minecraft.client.Minecraft; import java.util.function.Function; @@ -19,12 +20,23 @@ protected TextWidget(GuiInstance gui, IGuiElement parent, String text, int color this.color = color; } + protected TextWidget(GuiInstance gui, IGuiElement parent, Function getter, int color) { + super(gui, parent); + this.getter = getter; + this.color = color; + } + public static WidgetSupplier build(String text, int color) { return builder((a, b) -> new TextWidget(a, b, text, color)).clientSide(); } @Override public void render(PoseStack matrixStack, double mouseX, double mouseY, float partialTicks) { - this.drawText(matrixStack, Utils.literal(getter.apply(this)), realX(), realY(), color); + String text = getter.apply(this); + int textWidth = Minecraft.getInstance().font.width(text); + int xScaled = textWidth / 2; + int xCenter = (getW() / 2); + int xPosition = xCenter - xScaled; + this.drawText(matrixStack, Utils.literal(text), realX() + xPosition, realY(), color); } }