Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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
5 changes: 3 additions & 2 deletions src/main/java/gregtech/api/cover/CoverWithUI.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import gregtech.api.gui.ModularUI;
import gregtech.api.mui.GTGuiTextures;
import gregtech.api.mui.GTGuiTheme;
import gregtech.api.mui.GTGuis;
import gregtech.api.mui.GregTechGuiScreen;
import gregtech.api.mui.factory.CoverGuiFactory;

Expand Down Expand Up @@ -66,8 +67,8 @@ default GTGuiTheme getUITheme() {
}

@Override
default ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncManager, UISettings settings) {
return null;
default ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager panelSyncManager, UISettings settings) {
return GTGuis.errorPanel();
}

@Override
Expand Down
12 changes: 7 additions & 5 deletions src/main/java/gregtech/api/items/gui/ItemUIFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,22 @@
import gregtech.api.gui.ModularUI;
import gregtech.api.items.metaitem.stats.IItemComponent;
import gregtech.api.mui.GTGuiTheme;
import gregtech.api.mui.GTGuis;
import gregtech.api.mui.GregTechGuiScreen;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

import com.cleanroommc.modularui.api.IGuiHolder;
import com.cleanroommc.modularui.factory.HandGuiData;
import com.cleanroommc.modularui.factory.PlayerInventoryGuiData;
import com.cleanroommc.modularui.screen.ModularPanel;
import com.cleanroommc.modularui.screen.ModularScreen;
import com.cleanroommc.modularui.screen.UISettings;
import com.cleanroommc.modularui.value.sync.PanelSyncManager;
import org.jetbrains.annotations.ApiStatus;

public interface ItemUIFactory extends IItemComponent, IGuiHolder<HandGuiData> {
public interface ItemUIFactory extends IItemComponent, IGuiHolder<PlayerInventoryGuiData> {

/**
* Creates new UI basing on given holder. Holder contains information
Expand All @@ -31,7 +32,7 @@ default ModularUI createUI(PlayerInventoryHolder holder, EntityPlayer entityPlay
@ApiStatus.NonExtendable
@SideOnly(Side.CLIENT)
@Override
default ModularScreen createScreen(HandGuiData creationContext, ModularPanel mainPanel) {
default ModularScreen createScreen(PlayerInventoryGuiData creationContext, ModularPanel mainPanel) {
return new GregTechGuiScreen(mainPanel, getUITheme());
}

Expand All @@ -40,7 +41,8 @@ default GTGuiTheme getUITheme() {
}

@Override
default ModularPanel buildUI(HandGuiData guiData, PanelSyncManager guiSyncManager, UISettings settings) {
return null;
default ModularPanel buildUI(PlayerInventoryGuiData guiData, PanelSyncManager panelSyncManager,
UISettings settings) {
return GTGuis.errorPanel();
}
}
4 changes: 2 additions & 2 deletions src/main/java/gregtech/api/items/toolitem/IGTTool.java
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,8 @@
import cofh.api.item.IToolHammer;
import com.cleanroommc.modularui.api.drawable.IKey;
import com.cleanroommc.modularui.api.widget.IWidget;
import com.cleanroommc.modularui.factory.HandGuiData;
import com.cleanroommc.modularui.factory.ItemGuiFactory;
import com.cleanroommc.modularui.factory.PlayerInventoryGuiData;
import com.cleanroommc.modularui.screen.ModularPanel;
import com.cleanroommc.modularui.screen.UISettings;
import com.cleanroommc.modularui.utils.Alignment;
Expand Down Expand Up @@ -947,7 +947,7 @@ default void playSound(EntityPlayer player) {
}

@Override
default ModularPanel buildUI(HandGuiData guiData, PanelSyncManager manager, UISettings settings) {
default ModularPanel buildUI(PlayerInventoryGuiData guiData, PanelSyncManager manager, UISettings settings) {
final var usedStack = guiData.getUsedItemStack();
final var behaviorsTag = getBehaviorsTag(usedStack);
final var defaultDefinition = getMaxAoEDefinition(usedStack);
Expand Down
13 changes: 7 additions & 6 deletions src/main/java/gregtech/api/items/toolitem/ItemGTToolbelt.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
import net.minecraftforge.oredict.OreIngredient;

import com.cleanroommc.modularui.api.drawable.IKey;
import com.cleanroommc.modularui.factory.HandGuiData;
import com.cleanroommc.modularui.factory.PlayerInventoryGuiData;
import com.cleanroommc.modularui.screen.ModularPanel;
import com.cleanroommc.modularui.screen.UISettings;
import com.cleanroommc.modularui.value.sync.PanelSyncManager;
Expand Down Expand Up @@ -107,18 +107,19 @@ public ItemStack getToolInSlot(@NotNull ItemStack toolbelt, int slot) {
}

@Override
public ModularPanel buildUI(HandGuiData guiData, PanelSyncManager guiSyncManager, UISettings settings) {
public ModularPanel buildUI(PlayerInventoryGuiData guiData, PanelSyncManager panelSyncManager,
UISettings settings) {
final var usedStack = guiData.getUsedItemStack();
final var handler = getHandler(usedStack);
final var selected = handler.getSelectedStack();
if (!selected.isEmpty() && selected.getItem() instanceof ItemUIFactory factory) {
return factory.buildUI(guiData, guiSyncManager, settings);
return factory.buildUI(guiData, panelSyncManager, settings);
}

int heightBonus = (handler.getSlots() / 9) * 18;

SlotGroup group = new SlotGroup("toolbelt_inventory", Math.min(handler.getSlots(), 9));
guiSyncManager.registerSlotGroup(group);
panelSyncManager.registerSlotGroup(group);

List<ItemSlot> slots = new ArrayList<>();
for (int i = 0; i < handler.getSlots(); i++) {
Expand All @@ -141,8 +142,8 @@ public ModularPanel buildUI(HandGuiData guiData, PanelSyncManager guiSyncManager
(newItem, onlyAmountChanged, client, init) -> handler
.onContentsChanged(index)))
.background(GTGuiTextures.SLOT, GTGuiTextures.TOOL_SLOT_OVERLAY)
.debugName("slot_" + index))
.debugName("toolbelt_inventory"))
.name("slot_" + index))
.name("toolbelt_inventory"))
.bindPlayerInventory();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
package gregtech.api.metatileentity.multiblock;

import gregtech.api.metatileentity.multiblock.ui.TemplateBarBuilder;

import com.cleanroommc.modularui.value.sync.PanelSyncManager;
import com.cleanroommc.modularui.widgets.ProgressWidget;

import java.util.List;
import java.util.function.UnaryOperator;
Expand All @@ -13,7 +12,7 @@ public interface ProgressBarMultiblock {

// the bar only needs three things
// progress, texture, and tooltip
void registerBars(List<UnaryOperator<TemplateBarBuilder>> bars, PanelSyncManager syncManager);
void registerBars(List<UnaryOperator<ProgressWidget>> bars, PanelSyncManager syncManager);

default boolean hasBars() {
return getProgressBarCount() > 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ public MultiblockUIFactory(@NotNull MultiblockWithDisplayBase mte) {
private Widget<?> createIndicator(PanelSyncManager syncManager) {
if (warningText == NO_OP && errorText == NO_OP) {
return new Widget<>()
.debugName("indicator_none")
.name("indicator_none")
.size(18)
.pos(174 - 5, screenHeight - 18 - 3)
.overlay(GTGuiTextures.GREGTECH_LOGO_DARK);
Expand All @@ -93,7 +93,7 @@ private Widget<?> createIndicator(PanelSyncManager syncManager) {
});

return new Widget<>()
.debugName("indicator")
.name("indicator")
.size(18)
.pos(174 - 5, screenHeight - 18 - 3)
.overlay(indicator)
Expand Down Expand Up @@ -234,7 +234,7 @@ public MultiblockUIFactory addScreenChildren(ScreenFunction function) {
*/
public @NotNull ModularPanel buildUI(PosGuiData guiData, PanelSyncManager panelSyncManager) {
var panel = GTGuis.createPanel(mte, width, height)
.debugName("root_panel")
.name("root_panel")
.childIf(!disableDisplay, () -> createScreen(panelSyncManager));

// TODO createExtras() hook for overrides?
Expand All @@ -255,7 +255,7 @@ public MultiblockUIFactory addScreenChildren(ScreenFunction function) {
}

return panel.child(Flow.row()
.debugName("bottom_row")
.name("bottom_row")
.bottom(7)
.coverChildrenHeight()
.margin(4, 0)
Expand Down Expand Up @@ -299,21 +299,21 @@ protected Flow createBars(@NotNull ProgressBarMultiblock progressMulti,
final int calculatedRows = calculateRows(count);

Flow column = Flow.column()
.debugName("bar_col")
.name("bar_col")
.margin(4, 0)
.top(5 + screenHeight)
.widthRel(1f)
.height(Bars.HEIGHT * calculatedRows);

List<UnaryOperator<TemplateBarBuilder>> barBuilders = new ArrayList<>(progressMulti.getProgressBarCount());
List<UnaryOperator<ProgressWidget>> barBuilders = new ArrayList<>(progressMulti.getProgressBarCount());
progressMulti.registerBars(barBuilders, panelSyncManager);

for (int r = 0; r < calculatedRows; r++) {

final int calculatedCols = calculateCols(count, r);

Flow row = Flow.row()
.debugName("bar_row:" + r)
.name("bar_row:" + r)
.widthRel(1f)
.mainAxisAlignment(Alignment.MainAxis.SPACE_BETWEEN)
.height(Bars.HEIGHT);
Expand All @@ -330,16 +330,15 @@ protected Flow createBars(@NotNull ProgressBarMultiblock progressMulti,
ProgressWidget widget;
if (i < barBuilders.size()) {
widget = barBuilders.get(i)
.apply(new TemplateBarBuilder())
.build();
.apply(new ProgressWidget());
} else {
widget = new ProgressWidget()
.addTooltipLine("Error! no bar for index: " + i)
.background(new Rectangle().setColor(Color.RED.main));
}

row.child(widget.size(barWidth, Bars.HEIGHT)
.debugName(mte.getClass().getSimpleName() + ":bar:" + i)
.name(mte.getClass().getSimpleName() + ":bar:" + i)
.direction(ProgressWidget.Direction.RIGHT));
}

Expand All @@ -357,7 +356,7 @@ protected Widget<?> createScreen(PanelSyncManager syncManager) {
display.sync("display", syncManager);

parent.child(new ScrollableTextWidget()
.debugName("display_text")
.name("display_text")
.sizeRel(1f)
.alignment(Alignment.TopLeft)
.margin(4)
Expand All @@ -370,7 +369,7 @@ protected Widget<?> createScreen(PanelSyncManager syncManager) {
}

return parent.childIf(!disableIndicator, () -> createIndicator(syncManager))
.debugName("display_root")
.name("display_root")
.background(getDisplayBackground())
.size(190, screenHeight)
.pos(4, 4);
Expand All @@ -386,7 +385,7 @@ protected Flow createButtons(@NotNull ModularPanel mainPanel, @NotNull PanelSync
IWidget flexButton = this.flexButton.apply(guiData, panelSyncManager);
if (flexButton == null) {
flexButton = new ToggleButton()
.debugName("flex_none")
.name("flex_none")
.value(ALWAYS_ON)
.overlay(GTGuiTextures.OVERLAY_NO_FLEX)
.size(18)
Expand All @@ -395,7 +394,7 @@ protected Flow createButtons(@NotNull ModularPanel mainPanel, @NotNull PanelSync
var powerButton = createPowerButton(mainPanel, panelSyncManager);

return Flow.column()
.debugName("button_col")
.name("button_col")
.right(4)
.coverChildren()
.child(createDistinctButton(mainPanel, panelSyncManager))
Expand All @@ -408,15 +407,15 @@ protected IWidget createDistinctButton(@NotNull ModularPanel mainPanel,
@NotNull PanelSyncManager panelSyncManager) {
if (!(mte instanceof IDistinctBusController distinct) || !distinct.canBeDistinct()) {
return new ToggleButton()
.debugName("distinct_none")
.name("distinct_none")
.value(ALWAYS_ON)
.size(18)
.overlay(GTGuiTextures.OVERLAY_DISTINCT_BUSES[0])
.addTooltipLine(IKey.lang("gregtech.multiblock.universal.distinct_not_supported"));
}

return new ToggleButton()
.debugName("distinct_button")
.name("distinct_button")
.size(18)
.value(new BooleanSyncValue(distinct::isDistinct, distinct::setDistinct))
.disableHoverBackground()
Expand All @@ -429,7 +428,7 @@ protected IWidget createDistinctButton(@NotNull ModularPanel mainPanel,
protected IWidget createVoidingButton(@NotNull ModularPanel mainPanel, @NotNull PanelSyncManager panelSyncManager) {
if (!mte.shouldShowVoidingModeButton()) {
return new ToggleButton()
.debugName("voiding_none")
.name("voiding_none")
.value(ALWAYS_ON)
.size(18)
.overlay(GTGuiTextures.OVERLAY_VOID_NONE)
Expand All @@ -439,7 +438,7 @@ protected IWidget createVoidingButton(@NotNull ModularPanel mainPanel, @NotNull
IntSyncValue voidingValue = new IntSyncValue(mte::getVoidingMode, mte::setVoidingMode);

return new CycleButtonWidget()
.debugName("voiding_button")
.name("voiding_button")
.size(18)
.value(voidingValue)
.length(4)
Expand All @@ -458,7 +457,7 @@ protected Widget<?> createPowerButton(@NotNull ModularPanel mainPanel, @NotNull
controllable::setWorkingEnabled);

return new ToggleButton()
.debugName("power_button")
.name("power_button")
.size(18)
.disableHoverBackground()
.overlay(true, detail, GTGuiTextures.BUTTON_POWER[1])
Expand Down

This file was deleted.

20 changes: 20 additions & 0 deletions src/main/java/gregtech/api/mui/GTGuis.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,41 @@
import gregtech.api.mui.factory.CoverGuiFactory;
import gregtech.api.mui.factory.MetaItemGuiFactory;
import gregtech.api.mui.factory.MetaTileEntityGuiFactory;
import gregtech.api.util.GTLog;

import net.minecraft.item.ItemStack;

import com.cleanroommc.modularui.api.IPanelHandler;
import com.cleanroommc.modularui.api.drawable.IKey;
import com.cleanroommc.modularui.factory.GuiManager;
import com.cleanroommc.modularui.screen.ModularPanel;
import com.cleanroommc.modularui.utils.Alignment;
import com.cleanroommc.modularui.widgets.ButtonWidget;
import com.cleanroommc.modularui.widgets.RichTextWidget;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;

public class GTGuis {

public static final int DEFAULT_WIDTH = 176, DEFAULT_HIEGHT = 166;

private static final ModularPanel ERROR = createPanel("error")
.size(100)
.child(new RichTextWidget()
.sizeRel(1)
.margin(6)
.align(Alignment.Center)
.alignment(Alignment.Center)
.textBuilder(richText -> {
richText.addLine(IKey.str("ERROR!").style(IKey.RED, IKey.ITALIC)).newLine();
richText.addLine("You shouldn't be able to see this. If you do, report it to a dev.");
}));

public static ModularPanel errorPanel() {
GTLog.logger.error("Error Panel Opened!", new Throwable());
return ERROR;
}

@ApiStatus.Internal
public static void registerFactories() {
GuiManager.registerFactory(MetaTileEntityGuiFactory.INSTANCE);
Expand Down
Loading
Loading