Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
7d4acc5
pull relevant files from tar/mui-central-monitor
TarLaboratories Dec 26, 2025
b4681d7
Merge branch 'mui2-refactor' into tar/mui-code-editor
TarLaboratories Jan 7, 2026
1441ce3
Merge branch 'mui2-refactor' into tar/mui-code-editor
TarLaboratories Feb 2, 2026
d8a1a27
init new cm branch based on tar/code-editor
TarLaboratories Feb 2, 2026
7e94704
Merge branch 'mui2-refactor' into tar/mui-code-editor
TarLaboratories Feb 6, 2026
3a60de9
fix stuff
TarLaboratories Feb 6, 2026
a877e71
spotless
TarLaboratories Feb 6, 2026
c41cfbc
Merge branch 'tar/mui-code-editor' into tar/mui-cm
TarLaboratories Feb 6, 2026
65d59b4
fix
TarLaboratories Feb 6, 2026
69e7656
replace List<Boolean> with MutableBoolean
TarLaboratories Feb 6, 2026
82ee824
fix
TarLaboratories Feb 6, 2026
a77de02
MutableBoolean -> BoolValue
TarLaboratories Feb 6, 2026
7e42ffb
spotless
TarLaboratories Feb 6, 2026
3564612
replace ctor call with builder
TarLaboratories Feb 9, 2026
a2f6aba
make 1 the default text scale
TarLaboratories Feb 10, 2026
37ba113
Merge remote-tracking branch 'origin/tar/mui-cm' into tar/mui-cm
TarLaboratories Feb 11, 2026
98f028b
sync recipe logic status
TarLaboratories Feb 11, 2026
0433a05
Merge branch 'mui2-refactor' into tar/mui-code-editor
TarLaboratories Feb 11, 2026
dc5018c
spotless
TarLaboratories Feb 12, 2026
e16dbbb
compare mutable components
TarLaboratories Feb 12, 2026
e2c9900
apply change
TarLaboratories Feb 12, 2026
59db0d0
Merge branch 'mui2-refactor' into tar/mui-code-editor
TarLaboratories Feb 18, 2026
7c8954e
fixes after merge
TarLaboratories Feb 18, 2026
3b471f7
spotless
TarLaboratories Feb 18, 2026
732e704
Merge branch 'tar/mui-code-editor' into tar/mui-cm
TarLaboratories Feb 18, 2026
3b95cd8
fixes after merge
TarLaboratories Feb 18, 2026
34b1138
spotless
TarLaboratories Feb 18, 2026
95a4413
Merge branch 'mui2-refactor' into tar/mui-cm
gustovafing Mar 2, 2026
fe16407
Merge branch 'mui2-refactor' into tar/mui-cm
gustovafing Mar 2, 2026
5e8c6d0
fix incorrect import paths
gustovafing Mar 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.gregtechceu.gtceu.api.capability;

import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture;
import com.gregtechceu.gtceu.api.mui.base.drawable.IDrawable;

import net.minecraft.core.BlockPos;
import net.minecraftforge.items.IItemHandler;
Expand All @@ -13,7 +13,7 @@ default boolean isMonitor() {
return false;
}

IGuiTexture getComponentIcon();
IDrawable getIcon();

BlockPos getBlockPos();

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
package com.gregtechceu.gtceu.api.item.component;

import com.gregtechceu.gtceu.api.mui.base.IPanelHandler;
import com.gregtechceu.gtceu.api.mui.value.sync.PanelSyncManager;
import com.gregtechceu.gtceu.api.placeholder.PlaceholderContext;
import com.gregtechceu.gtceu.client.mui.screen.ModularPanel;
import com.gregtechceu.gtceu.client.renderer.monitor.IMonitorRenderer;
import com.gregtechceu.gtceu.common.machine.multiblock.electric.CentralMonitorMachine;
import com.gregtechceu.gtceu.common.machine.multiblock.electric.monitor.MonitorGroup;

import com.lowdragmc.lowdraglib.gui.widget.Widget;

import net.minecraft.world.item.ItemStack;

public interface IMonitorModuleItem extends IItemComponent {
Expand All @@ -17,7 +18,8 @@ default void tickInPlaceholder(ItemStack stack, PlaceholderContext context) {}

IMonitorRenderer getRenderer(ItemStack stack);

Widget createUIWidget(ItemStack stack, CentralMonitorMachine machine, MonitorGroup group);
ModularPanel createModularPanel(ItemStack stack, CentralMonitorMachine machine, MonitorGroup group,
PanelSyncManager syncManager, IPanelHandler panelHandler);

default String getType() {
return "unknown";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -194,4 +194,26 @@ public void draw(ModularGuiContext context, WidgetThemeEntry<?> widgetTheme) {
this.drawable.drawAtZero(context, getArea(), getActiveWidgetTheme(widgetTheme, isHovering()));
}
}

/**
* A widget wrapping multiple drawables
*/
class MultiDrawableWidget extends Widget<MultiDrawableWidget> {

private final IDrawable[] drawables;

public MultiDrawableWidget(IDrawable... drawables) {
this.drawables = drawables;
}

@OnlyIn(Dist.CLIENT)
@Override
public void draw(ModularGuiContext context, WidgetThemeEntry<?> widgetTheme) {
for (IDrawable drawable : this.drawables) {
drawable.draw(context, getArea().getPadding().left(), getArea().getPadding().top(),
getArea().paddedWidth(), getArea().paddedHeight(),
getActiveWidgetTheme(widgetTheme, isHovering()));
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.gregtechceu.gtceu.api.mui.widgets;

import com.gregtechceu.gtceu.api.mui.base.drawable.IKey;
import com.gregtechceu.gtceu.api.mui.utils.Alignment;
import com.gregtechceu.gtceu.api.mui.widget.Widget;
import com.gregtechceu.gtceu.common.mui.GTGuiTextures;

import java.util.function.Consumer;
import java.util.function.Function;

public class SimpleDialog<T, W extends Widget<W>> extends Dialog<T> {

public SimpleDialog(String name, Consumer<T> valueConsumer, W widget, Function<W, T> valueGetter, IKey title) {
super(name, valueConsumer);
child(new TextWidget<>(title).align(Alignment.TopCenter).marginTop(4));
child(widget.align(Alignment.CENTER));
child(new ButtonWidget<>()
.background(GTGuiTextures.CLOSE)
.hoverBackground(GTGuiTextures.CLOSE)
.align(Alignment.TopRight)
.onMousePressed((mouseX, mouseY, button) -> {
closeIfOpen();
return true;
}));
child(new ButtonWidget<>()
.background(GTGuiTextures.RIGHTLOAD)
.hoverBackground(GTGuiTextures.RIGHTLOAD)
.align(Alignment.BottomCenter)
.onMousePressed((mouseX, mouseY, button) -> {
closeWith(valueGetter.apply(widget));
return true;
}));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public void render(CentralMonitorMachine machine, float partialTick, PoseStack p
RenderUtil.rotateToFace(poseStack, machine.getFrontFacing(), machine.getUpwardsFacing());
poseStack.translate(-machine.getRightDist() - 0.5f, -machine.getUpDist() - 0.5f, SCREEN_OFFSET_Z);

if (machine.getRecipeLogic().isActive()) {
if (machine.getRecipeLogic().isWorking()) {
for (MonitorGroup group : machine.getMonitorGroups()) {
ItemStack itemStack = group.getItemStackHandler().getStackInSlot(0);
if (!(itemStack.getItem() instanceof ComponentItem item)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import com.gregtechceu.gtceu.common.machine.multiblock.primitive.PrimitivePumpMachine;
import com.gregtechceu.gtceu.common.machine.multiblock.steam.SteamParallelMultiblockMachine;
import com.gregtechceu.gtceu.common.mui.GTGuiTheme;
import com.gregtechceu.gtceu.common.mui.factory.CentralMonitorUIFactory;
import com.gregtechceu.gtceu.config.ConfigHolder;
import com.gregtechceu.gtceu.utils.FormattingUtil;
import com.gregtechceu.gtceu.utils.GTUtil;
Expand Down Expand Up @@ -1165,6 +1166,7 @@ public class GTMultiMachines {
GTCEu.id("block/multiblock/central_monitor"))
.andThen(b -> b.addDynamicRenderer(DynamicRenderHelper::createCentralMonitorRender)))
.hasBER(true)
.ui(CentralMonitorUIFactory.INSTANCE)
.register();

public static void init() {}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
import com.gregtechceu.gtceu.client.mui.screen.ModularPanel;
import com.gregtechceu.gtceu.client.mui.screen.UISettings;
import com.gregtechceu.gtceu.common.cover.data.BucketMode;
import com.gregtechceu.gtceu.common.item.IntCircuitBehaviour;
import com.gregtechceu.gtceu.common.item.behavior.IntCircuitBehaviour;
import com.gregtechceu.gtceu.common.mui.GTGuiTextures;
import com.gregtechceu.gtceu.config.ConfigHolder;
import com.gregtechceu.gtceu.utils.GTMath;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,44 +1,52 @@
package com.gregtechceu.gtceu.common.item.modules;

import com.gregtechceu.gtceu.api.gui.GuiTextures;
import com.gregtechceu.gtceu.api.item.component.IAddInformation;
import com.gregtechceu.gtceu.api.item.component.IMonitorModuleItem;
import com.gregtechceu.gtceu.api.mui.base.IPanelHandler;
import com.gregtechceu.gtceu.api.mui.base.drawable.IKey;
import com.gregtechceu.gtceu.api.mui.utils.Alignment;
import com.gregtechceu.gtceu.api.mui.value.sync.PanelSyncManager;
import com.gregtechceu.gtceu.api.mui.value.sync.SyncHandlers;
import com.gregtechceu.gtceu.api.mui.widgets.TextWidget;
import com.gregtechceu.gtceu.api.mui.widgets.layout.Flow;
import com.gregtechceu.gtceu.api.mui.widgets.textfield.TextFieldWidget;
import com.gregtechceu.gtceu.client.mui.screen.ModularPanel;
import com.gregtechceu.gtceu.client.renderer.monitor.IMonitorRenderer;
import com.gregtechceu.gtceu.client.renderer.monitor.MonitorImageRenderer;
import com.gregtechceu.gtceu.common.machine.multiblock.electric.CentralMonitorMachine;
import com.gregtechceu.gtceu.common.machine.multiblock.electric.monitor.MonitorGroup;
import com.gregtechceu.gtceu.common.network.GTNetwork;
import com.gregtechceu.gtceu.common.network.packets.SCPacketMonitorGroupNBTChange;

import com.lowdragmc.lowdraglib.gui.widget.ButtonWidget;
import com.lowdragmc.lowdraglib.gui.widget.TextFieldWidget;
import com.lowdragmc.lowdraglib.gui.widget.Widget;
import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup;

import net.minecraft.ChatFormatting;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.Level;

import org.jetbrains.annotations.Nullable;

import java.util.List;

public class ImageModuleBehaviour implements IMonitorModuleItem {
public class ImageModuleBehaviour implements IMonitorModuleItem, IAddInformation {

@Override
public IMonitorRenderer getRenderer(ItemStack stack) {
return new MonitorImageRenderer(getUrl(stack));
}

@Override
public Widget createUIWidget(ItemStack stack, CentralMonitorMachine machine, MonitorGroup group) {
WidgetGroup builder = new WidgetGroup();
TextFieldWidget textField = new TextFieldWidget(0, 0, 100, 10, null, null);
textField.setCurrentString(getUrl(stack));

ButtonWidget saveButton = new ButtonWidget(-40, 22, 20, 20, click -> {
if (!click.isRemote) return;

setUrl(stack, textField.getCurrentString());
GTNetwork.sendToServer(new SCPacketMonitorGroupNBTChange(stack, group, machine));
});
saveButton.setButtonTexture(GuiTextures.BUTTON_CHECK);
builder.addWidget(textField);
builder.addWidget(saveButton);
return builder;
public ModularPanel createModularPanel(ItemStack stack, CentralMonitorMachine machine, MonitorGroup group,
PanelSyncManager syncManager, IPanelHandler panelHandler) {
return new ModularPanel("image_module_editor")
.size(200, 50)
.child(Flow.column()
.marginTop(5)
.align(Alignment.CENTER)
.widthRel(1)
.child(new TextWidget<>(IKey.lang("gtceu.gui.central_monitor.url")))
.child(new TextFieldWidget()
.value(SyncHandlers.string(() -> getUrl(stack), s -> setUrl(stack, s)))
.align(Alignment.CENTER)
.widthRel(.8f)));
}

@Override
Expand All @@ -53,4 +61,11 @@ public String getUrl(ItemStack stack) {
public void setUrl(ItemStack stack, String url) {
stack.getOrCreateTag().putString("url", url);
}

@Override
public void appendHoverText(ItemStack stack, @Nullable Level level, List<Component> tooltipComponents,
TooltipFlag isAdvanced) {
tooltipComponents.add(Component.translatable("gtceu.item.tooltip.image_url", getUrl(stack))
.withStyle(ChatFormatting.DARK_AQUA));
}
}
Loading
Loading