Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -408,6 +408,7 @@ public class GTMultiMachines {
.multiblock("primitive_pump", PrimitivePumpMachine::new)
.rotationState(RotationState.NON_Y_AXIS)
.appearanceBlock(CASING_PUMP_DECK)
.themeId(GTGuiTheme.PRIMITIVE.getId())
.pattern(definition -> MultiblockPatternBuilder.start(FRONT, UP, RIGHT)
.slice("XXXX", "##F#", "##F#")
.slice("XXHX", "F##F", "FFFF")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,44 @@
import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability;
import com.gregtechceu.gtceu.api.capability.recipe.IO;
import com.gregtechceu.gtceu.api.machine.TickableSubscription;
import com.gregtechceu.gtceu.api.machine.feature.IMuiMachine;
import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart;
import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine;
import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank;
import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient;
import com.gregtechceu.gtceu.common.data.GTMaterials;
import com.gregtechceu.gtceu.common.mui.GTMultiblockTextUtil;
import com.gregtechceu.gtceu.utils.FormattingUtil;
import com.gregtechceu.gtceu.utils.GTUtil;

import net.minecraft.ChatFormatting;
import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.world.level.biome.Biome.Precipitation;
import net.minecraftforge.fluids.FluidType;

import brachy.modularui.api.drawable.Text;
import brachy.modularui.api.widget.IWidget;
import brachy.modularui.drawable.GuiTextures;
import brachy.modularui.drawable.Icon;
import brachy.modularui.factory.PosGuiData;
import brachy.modularui.screen.UISettings;
import brachy.modularui.utils.Alignment;
import brachy.modularui.value.sync.BooleanSyncValue;
import brachy.modularui.value.sync.IntSyncValue;
import brachy.modularui.value.sync.PanelSyncManager;
import brachy.modularui.widget.ParentWidget;
import brachy.modularui.widget.Widget;
import brachy.modularui.widgets.ListWidget;
import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.ParametersAreNonnullByDefault;

@ParametersAreNonnullByDefault
@MethodsReturnNonnullByDefault
public class PrimitivePumpMachine extends MultiblockControllerMachine {
public class PrimitivePumpMachine extends MultiblockControllerMachine implements IMuiMachine {

private int biomeModifier = 0;
private int hatchModifier = 0;
Expand Down Expand Up @@ -117,4 +135,54 @@ public int getFluidProduction() {
}
return value;
}

public Widget<?> getMainTextPanel(PanelSyncManager syncManager, int width, int height) {
var parentWidget = new ParentWidget<>();
var listWidget = new ListWidget<>();
listWidget
.width(width - 6)
.height(height - 6)
.childSeparator(Icon.EMPTY_2PX)
.crossAxisAlignment(Alignment.CrossAxis.START)
.collapseDisabledChildren()
.posRel(Alignment.CenterLeft)
.left(3)
.top(3);
parentWidget.size(width, height)
.background(GuiTextures.DISPLAY);

listWidget.children(getWidgetsForDisplay(syncManager));
parentWidget.child(listWidget.left(3).top(3));
return parentWidget;
}

@Override
public void buildMainUI(ParentWidget<?> mainWidget, PosGuiData guiData, PanelSyncManager syncManager,
UISettings settings) {
mainWidget.child(getMainTextPanel(syncManager, 177, 77).margin(4, 2));
}

@Override
public List<IWidget> getWidgetsForDisplay(PanelSyncManager syncManager) {
List<IWidget> widgets = new ArrayList<>();

BooleanSyncValue isFormed = syncManager.getOrCreateSyncHandler("isFormed", BooleanSyncValue.class,
() -> new BooleanSyncValue(this::isFormed));
// Sync these values for use in getFluidProduction()
syncManager.getOrCreateSyncHandler("biomeModifier", IntSyncValue.class,
() -> new IntSyncValue(() -> this.biomeModifier, value -> this.biomeModifier = value));
syncManager.getOrCreateSyncHandler("hatchModifier", IntSyncValue.class,
() -> new IntSyncValue(() -> this.hatchModifier, value -> this.hatchModifier = value));

widgets.add(GTMultiblockTextUtil.addUnformedWarning(this, syncManager));
widgets.add(Text
.dynamic(() -> Text
.lang("gtceu.top.primitive_pump_production",
FormattingUtil.formatNumbers(this.getFluidProduction()))
.withStyle(ChatFormatting.WHITE))
.asWidget()
.setEnabledIf((widget) -> isFormed.getBoolValue()));

return widgets;
}
}
Loading