Skip to content
Open
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
9 changes: 3 additions & 6 deletions src/generated/resources/assets/gtceu/lang/en_ud.json
Original file line number Diff line number Diff line change
Expand Up @@ -3085,19 +3085,16 @@
"gtceu.machine.me_import_item_hatch.configs.tooltip": "ʞɔoʇs uı sǝdʎʇ ɯǝʇı 9Ɩ sdǝǝʞ",
"gtceu.machine.miner.chunkradius": "%d :snıpɐᴚ ʞunɥƆ",
"gtceu.machine.miner.fluid_usage": "˙ʞɔoןɔɹǝʌo ɹǝd pǝןqnop 'ㄥ§%sɟ§ ɟoㄥ§ ʇ/ᗺɯ %dɟ§ sǝs∩",
"gtceu.machine.miner.minex": "%d :Xɯ",
"gtceu.machine.miner.miney": "%d :ʎɯ",
"gtceu.machine.miner.minez": "%d :Zɯ",
"gtceu.machine.miner.multi.description": "˙ǝɹo ɟo ʎʇıʇuɐnb ǝbnɥ sǝɔnpoɹd puɐ ɐǝɹɐ ǝbɹɐן ɐ sɹǝʌoɔ ʇɐɥʇ ǝuıɥɔɐɯ buıuıɯ ʞɔoןqıʇןnɯ Ɐ",
"gtceu.machine.miner.multi.modes": "˙sǝpoW pǝubıןⱯ ʞunɥƆ puɐ ɥɔno⟘ ʞןıS sɐH",
"gtceu.machine.miner.multi.production": "˙ㄥ§ɹoʇɐɹǝɔɐWɟ§ ɐ uɐɥʇ ǝɹo pǝɥsnɹɔ ǝɹoɯ ㄥ§xƐɟ§ sǝɔnpoɹԀ",
"gtceu.machine.miner.per_block": "ʞɔoןᗺ ɹǝdㄥ§ %dsɟ§ sǝʞɐʇㄥ§",
"gtceu.machine.miner.progress": "%d/%d :ssǝɹboɹԀ",
"gtceu.machine.miner.radius": "%d :snıpɐᴚ",
"gtceu.machine.miner.startx": "%d :Xs",
"gtceu.machine.miner.starty": "%d :ʎs",
"gtceu.machine.miner.startz": "%d :Zs",
"gtceu.machine.miner.tooltip": "ɐǝɹɐㄥ§ %sx%sɟ§ sɐ sʇɹɐʇS ¡ɹǝuıW ǝɥʇ ʍoןǝq sǝɹo sǝuıWㄥ§",
"gtceu.machine.miner.x": "%d :Xɯ '%d :Xs",
"gtceu.machine.miner.y": "%d :ʎɯ '%d :ʎs",
"gtceu.machine.miner.z": "%d :Zɯ '%d :Zs",
"gtceu.machine.muffle.off": "pǝןqɐsıᗡ :buıןɟɟnW punoS",
"gtceu.machine.muffle.on": "pǝןqɐuƎ :buıןɟɟnW punoS",
"gtceu.machine.muffler_hatch.tooltip.0": "sǝuıɥɔɐɯ ɯoɹɟ ǝʇsɐʍ sɹǝʌoɔǝᴚ",
Expand Down
9 changes: 3 additions & 6 deletions src/generated/resources/assets/gtceu/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -3085,19 +3085,16 @@
"gtceu.machine.me_import_item_hatch.configs.tooltip": "Keeps 16 item types in stock",
"gtceu.machine.miner.chunkradius": "Chunk Radius: %d",
"gtceu.machine.miner.fluid_usage": "Uses §f%d mB/t §7of §f%s§7, doubled per overclock.",
"gtceu.machine.miner.minex": "mX: %d",
"gtceu.machine.miner.miney": "mY: %d",
"gtceu.machine.miner.minez": "mZ: %d",
"gtceu.machine.miner.multi.description": "A multiblock mining machine that covers a large area and produces huge quantity of ore.",
"gtceu.machine.miner.multi.modes": "Has Silk Touch and Chunk Aligned Modes.",
"gtceu.machine.miner.multi.production": "Produces §f3x§7 more crushed ore than a §fMacerator§7.",
"gtceu.machine.miner.per_block": "§7takes §f%ds §7per Block",
"gtceu.machine.miner.progress": "Progress: %d/%d",
"gtceu.machine.miner.radius": "Radius: %d",
"gtceu.machine.miner.startx": "sX: %d",
"gtceu.machine.miner.starty": "sY: %d",
"gtceu.machine.miner.startz": "sZ: %d",
"gtceu.machine.miner.tooltip": "§7Mines ores below the Miner! Starts as §f%sx%s §7area",
"gtceu.machine.miner.x": "sX: %d, mX: %d",
"gtceu.machine.miner.y": "sY: %d, mY: %d",
"gtceu.machine.miner.z": "sZ: %d, mZ: %d",
"gtceu.machine.muffle.off": "Sound Muffling: Disabled",
"gtceu.machine.muffle.on": "Sound Muffling: Enabled",
"gtceu.machine.muffler_hatch.tooltip.0": "Recovers waste from machines",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -361,32 +361,6 @@ public ModularPanel buildUI(PosGuiData data, PanelSyncManager syncManager, UISet
return panel;
}

/*
* @Override
* public ModularUI createUI(Player entityPlayer) {
* return new ModularUI(176, 166, this, entityPlayer)
* .background(GuiTextures.BACKGROUND_STEAM.get(isHighPressure))
* .widget(new LabelWidget(6, 6, getBlockState().getBlock().getDescriptionId()))
* .widget(new ProgressWidget(this::getTemperaturePercent, 96, 26, 10, 54)
* .setProgressTexture(GuiTextures.PROGRESS_BAR_BOILER_EMPTY.get(isHighPressure),
* GuiTextures.PROGRESS_BAR_BOILER_HEAT)
* .setFillDirection(ProgressTexture.FillDirection.DOWN_TO_UP)
* .setDynamicHoverTips(pct -> I18n.get("gtceu.multiblock.large_boiler.temperature",
* currentTemperature + 274, getMaxTemperature() + 274)))
* .widget(new TankWidget(waterTank.getStorages()[0], 83, 26, 10, 54, false, true)
* .setShowAmount(false)
* .setFillDirection(ProgressTexture.FillDirection.DOWN_TO_UP)
* .setBackground(GuiTextures.PROGRESS_BAR_BOILER_EMPTY.get(isHighPressure)))
* .widget(new TankWidget(steamTank.getStorages()[0], 70, 26, 10, 54, true, false)
* .setShowAmount(false)
* .setFillDirection(ProgressTexture.FillDirection.DOWN_TO_UP)
* .setBackground(GuiTextures.PROGRESS_BAR_BOILER_EMPTY.get(isHighPressure)))
* .widget(new ImageWidget(43, 44, 18, 18, GuiTextures.CANISTER_OVERLAY_STEAM.get(isHighPressure)))
* .widget(UITemplate.bindPlayerInventory(entityPlayer.getInventory(),
* GuiTextures.SLOT_STEAM.get(isHighPressure), 7, 84, true));
* }
*/

//////////////////////////////////////
// ********* Client *********//
//////////////////////////////////////
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,7 @@ public class GTMachines {
int maxArea = IMiner.getWorkingArea(isHP ? 6 : 4);
tooltip.add(Component.translatable("gtceu.universal.tooltip.working_area", maxArea, maxArea));
})
.themeId((i) -> i > 0 ? GTGuiTheme.STEEL.getId() : GTGuiTheme.BRONZE.getId())
.modelProperty(GTMachineModelProperties.VENT_DIRECTION, RelativeDirection.UP)
.workableSteamHullModel(isHP, isHP ?
GTCEu.id("block/machines/high_pressure_steam_miner") :
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import com.gregtechceu.gtceu.api.mui.base.drawable.IKey;
import com.gregtechceu.gtceu.api.mui.factory.PosGuiData;
import com.gregtechceu.gtceu.api.mui.utils.Alignment;
import com.gregtechceu.gtceu.api.mui.utils.Color;
import com.gregtechceu.gtceu.api.mui.value.sync.PanelSyncManager;
import com.gregtechceu.gtceu.api.mui.widgets.TextWidget;
import com.gregtechceu.gtceu.api.mui.widgets.layout.Column;
Expand Down Expand Up @@ -141,15 +142,15 @@ protected void chargeBattery() {
}
}

private void addDisplayText(@NotNull List<Component> textList) {
private void addDisplayText(List<Component> textList) {
int workingArea = IMiner.getWorkingArea(getRecipeLogic().getCurrentRadius());
textList.add(recipeLogic.getCustomProgressLine());
textList.add(Component.translatable("gtceu.machine.miner.startx", getRecipeLogic().getX()).append(" ")
.append(Component.translatable("gtceu.machine.miner.minex", getRecipeLogic().getMineX())));
textList.add(Component.translatable("gtceu.machine.miner.starty", getRecipeLogic().getY()).append(" ")
.append(Component.translatable("gtceu.machine.miner.miney", getRecipeLogic().getMineY())));
textList.add(Component.translatable("gtceu.machine.miner.startz", getRecipeLogic().getZ()).append(" ")
.append(Component.translatable("gtceu.machine.miner.minez", getRecipeLogic().getMineZ())));
textList.add(
Component.translatable("gtceu.machine.miner.x", getRecipeLogic().getX(), getRecipeLogic().getMineX()));
textList.add(
Component.translatable("gtceu.machine.miner.y", getRecipeLogic().getY(), getRecipeLogic().getMineY()));
textList.add(
Component.translatable("gtceu.machine.miner.x", getRecipeLogic().getZ(), getRecipeLogic().getMineZ()));
textList.add(Component.translatable("gtceu.universal.tooltip.working_area", workingArea, workingArea));
if (getRecipeLogic().isDone())
textList.add(Component.translatable("gtceu.multiblock.large_miner.done")
Expand Down Expand Up @@ -242,7 +243,7 @@ public ModularPanel buildUI(PosGuiData data, PanelSyncManager syncManager, UISet
.map(Component::copy)
.reduce((a, b) -> a.append("\n").append(b))
.orElse(Component.empty());
}))))
})).color(Color.WHITE.main)))
.child(GTMuiMachineUtil.createSquareSlotGroupFromInventory(exportItems, "export_inv",
syncManager)))
.child(new Column()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,39 +4,43 @@
import com.gregtechceu.gtceu.api.capability.IControllable;
import com.gregtechceu.gtceu.api.capability.IMiner;
import com.gregtechceu.gtceu.api.capability.recipe.IO;
import com.gregtechceu.gtceu.api.gui.GuiTextures;
import com.gregtechceu.gtceu.api.gui.UITemplate;
import com.gregtechceu.gtceu.api.gui.widget.PredicatedImageWidget;
import com.gregtechceu.gtceu.api.gui.widget.SlotWidget;
import com.gregtechceu.gtceu.api.machine.TickableSubscription;
import com.gregtechceu.gtceu.api.machine.feature.*;
import com.gregtechceu.gtceu.api.machine.steam.SteamWorkableMachine;
import com.gregtechceu.gtceu.api.machine.trait.ExhaustVentMachineTrait;
import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler;
import com.gregtechceu.gtceu.api.mui.base.drawable.IKey;
import com.gregtechceu.gtceu.api.mui.drawable.UITexture;
import com.gregtechceu.gtceu.api.mui.factory.PosGuiData;
import com.gregtechceu.gtceu.api.mui.theme.ThemeAPI;
import com.gregtechceu.gtceu.api.mui.utils.Alignment;
import com.gregtechceu.gtceu.api.mui.utils.Color;
import com.gregtechceu.gtceu.api.mui.value.sync.PanelSyncManager;
import com.gregtechceu.gtceu.api.mui.widgets.TextWidget;
import com.gregtechceu.gtceu.api.mui.widgets.layout.Flow;
import com.gregtechceu.gtceu.api.sync_system.annotations.SaveField;
import com.gregtechceu.gtceu.client.mui.screen.ModularPanel;
import com.gregtechceu.gtceu.client.mui.screen.UISettings;
import com.gregtechceu.gtceu.common.data.mui.GTMuiMachineUtil;
import com.gregtechceu.gtceu.common.data.mui.GTMuiWidgets;
import com.gregtechceu.gtceu.common.item.behavior.PortableScannerBehavior;
import com.gregtechceu.gtceu.common.machine.trait.miner.SteamMinerLogic;
import com.gregtechceu.gtceu.common.mui.GTGuiTextures;
import com.gregtechceu.gtceu.utils.GTTransferUtils;
import com.gregtechceu.gtceu.utils.ISubscription;

import com.lowdragmc.lowdraglib.gui.modular.ModularUI;
import com.lowdragmc.lowdraglib.gui.widget.ComponentPanelWidget;
import com.lowdragmc.lowdraglib.gui.widget.ImageWidget;
import com.lowdragmc.lowdraglib.gui.widget.LabelWidget;

import net.minecraft.ChatFormatting;
import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.Style;
import net.minecraft.server.TickTask;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.block.Block;
import net.minecraftforge.fluids.capability.IFluidHandler;

import lombok.Getter;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.ArrayList;
Expand All @@ -48,7 +52,7 @@
@ParametersAreNonnullByDefault
@MethodsReturnNonnullByDefault
public class SteamMinerMachine extends SteamWorkableMachine implements IControllable,
IUIMachine, IDataInfoProvider, IMiner {
IDataInfoProvider, IMiner, IMuiMachine {

@SaveField
public final NotifiableItemStackHandler importItems;
Expand Down Expand Up @@ -148,53 +152,64 @@ protected void autoOutput() {
//////////////////////////////////////
// *********** GUI ***********//
//////////////////////////////////////

@Override
public ModularUI createUI(Player entityPlayer) {
int rowSize = (int) Math.sqrt(inventorySize);

ModularUI builder = new ModularUI(175, 176, this, entityPlayer)
.background(GuiTextures.BACKGROUND_STEAM.get(isHighPressure()));
builder.widget(UITemplate.bindPlayerInventory(entityPlayer.getInventory(),
GuiTextures.SLOT_STEAM.get(isHighPressure()), 7,
94, true));

for (int y = 0; y < rowSize; y++) {
for (int x = 0; x < rowSize; x++) {
int index = y * rowSize + x;
builder.widget(new SlotWidget(exportItems, index, 142 - rowSize * 9 + x * 18, 18 + y * 18, true, false)
.setBackgroundTexture(GuiTextures.SLOT_STEAM.get(isHighPressure())));
}
public ModularPanel buildUI(PosGuiData data, PanelSyncManager syncManager, UISettings settings) {
var theme = getDefinition().getThemeId();
var backgroundTexture = (UITexture) ThemeAPI.INSTANCE.getTheme(theme).getPanelTheme().getTheme()
.getBackground();
if (backgroundTexture == null) {
backgroundTexture = GTGuiTextures.BACKGROUND;
}

builder.widget(new LabelWidget(5, 5, getBlockState().getBlock().getDescriptionId()));
builder.widget(new PredicatedImageWidget(79, 42, 18, 18, GuiTextures.INDICATOR_NO_STEAM.get(isHighPressure()))
.setPredicate(() -> !drainInput(true)));
builder.widget(new ImageWidget(7, 16, 105, 75, GuiTextures.DISPLAY_STEAM.get(isHighPressure())));
builder.widget(new ComponentPanelWidget(10, 19, this::addDisplayText)
.setMaxWidthLimit(84));
builder.widget(new ComponentPanelWidget(70, 19, this::addDisplayText2)
.setMaxWidthLimit(84));

return builder;
return new ModularPanel(getDefinition().getName())
.width(200)
.child(GTMuiWidgets.createTitleBar(getDefinition(), 200))
.bindPlayerInventory()
.child(Flow.row()
.coverChildrenHeight()
.margin(5)
.childPadding(5)
.widthRel(1f)
.child(Flow.column()
.crossAxisAlignment(Alignment.CrossAxis.START)
.padding(5)
.background(GTGuiTextures.DISPLAY)
.widthRel(.6f)
.coverChildrenHeight()
.child(new TextWidget<>(IKey.dynamic(() -> {
List<Component> text = new ArrayList<>();
addDisplayText(text);
return text.stream()
.map(Component::copy)
.reduce((a, b) -> a.append("\n").append(b))
.orElse(Component.empty());
})).color(Color.WHITE.main)))
.child(GTMuiMachineUtil.createSquareSlotGroupFromInventory(exportItems, "export_inv",
syncManager).alignX(0.875f).alignY(0.5f)));
}

void addDisplayText(List<Component> textList) {
private void addDisplayText(List<Component> textList) {
int workingArea = IMiner.getWorkingArea(getRecipeLogic().getCurrentRadius());
textList.add(Component.translatable("gtceu.machine.miner.startx", this.getRecipeLogic().getX()));
textList.add(Component.translatable("gtceu.machine.miner.starty", this.getRecipeLogic().getY()));
textList.add(Component.translatable("gtceu.machine.miner.startz", this.getRecipeLogic().getZ()));
textList.add(recipeLogic.getCustomProgressLine());
textList.add(
Component.translatable("gtceu.machine.miner.x", getRecipeLogic().getX(), getRecipeLogic().getMineX()));
textList.add(
Component.translatable("gtceu.machine.miner.y", getRecipeLogic().getY(), getRecipeLogic().getMineY()));
textList.add(
Component.translatable("gtceu.machine.miner.x", getRecipeLogic().getZ(), getRecipeLogic().getMineZ()));
textList.add(Component.translatable("gtceu.universal.tooltip.working_area", workingArea, workingArea));
if (this.getRecipeLogic().isDone())
if (getRecipeLogic().isDone())
textList.add(Component.translatable("gtceu.multiblock.large_miner.done")
.withStyle(ChatFormatting.GREEN));
else if (this.getRecipeLogic().isWorking())
.setStyle(Style.EMPTY.withColor(ChatFormatting.GREEN)));
else if (getRecipeLogic().isWorking())
textList.add(Component.translatable("gtceu.multiblock.large_miner.working")
.withStyle(ChatFormatting.GOLD));
.setStyle(Style.EMPTY.withColor(ChatFormatting.GOLD)));
else if (!this.isWorkingEnabled())
textList.add(Component.translatable("gtceu.multiblock.work_paused"));
if (getRecipeLogic().isInventoryFull())
textList.add(Component.translatable("gtceu.multiblock.large_miner.invfull")
.withStyle(ChatFormatting.RED));
.setStyle(Style.EMPTY.withColor(ChatFormatting.RED)));
if (exhaustVentTrait.isVentingBlocked())
textList.add(Component.translatable("gtceu.multiblock.large_miner.vent")
.withStyle(ChatFormatting.RED));
Expand All @@ -203,12 +218,6 @@ else if (!drainInput(true))
.withStyle(ChatFormatting.RED));
}

void addDisplayText2(List<Component> textList) {
textList.add(Component.translatable("gtceu.machine.miner.minex", this.getRecipeLogic().getMineX()));
textList.add(Component.translatable("gtceu.machine.miner.miney", this.getRecipeLogic().getMineY()));
textList.add(Component.translatable("gtceu.machine.miner.minez", this.getRecipeLogic().getMineZ()));
}

@Override
public boolean drainInput(boolean simulate) {
long resultSteam = steamTank.getFluidInTank(0).getAmount() - energyPerTick;
Expand All @@ -220,7 +229,6 @@ public boolean drainInput(boolean simulate) {
return false;
}

@NotNull
@Override
public List<Component> getDataInfo(PortableScannerBehavior.DisplayMode mode) {
if (mode == PortableScannerBehavior.DisplayMode.SHOW_ALL ||
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/com/gregtechceu/gtceu/common/mui/GTGuis.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ public static ModularPanel createPanel(String name, int width, int height) {
return ModularPanel.defaultPanel(name, width, height);
}

public static ModularPanel createPanel(MetaMachine mte, int width, int height) {
return createPanel(mte.getDefinition().getId().getPath(), width, height);
public static ModularPanel createPanel(MetaMachine machine, int width, int height) {
return createPanel(machine.getDefinition().getId().getPath(), width, height);
}

public static ModularPanel createPanel(CoverBehavior cover, int width, int height) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -476,12 +476,9 @@ protected static void init(RegistrateLangProvider provider) {
provider.add("gtceu.machine.miner.fluid_usage", "Uses §f%d mB/t §7of §f%s§7, doubled per overclock.");
provider.add("gtceu.machine.miner.multi.description",
"A multiblock mining machine that covers a large area and produces huge quantity of ore.");
provider.add("gtceu.machine.miner.startx", "sX: %d");
provider.add("gtceu.machine.miner.starty", "sY: %d");
provider.add("gtceu.machine.miner.startz", "sZ: %d");
provider.add("gtceu.machine.miner.minex", "mX: %d");
provider.add("gtceu.machine.miner.miney", "mY: %d");
provider.add("gtceu.machine.miner.minez", "mZ: %d");
provider.add("gtceu.machine.miner.x", "sX: %d, mX: %d");
provider.add("gtceu.machine.miner.y", "sY: %d, mY: %d");
provider.add("gtceu.machine.miner.z", "sZ: %d, mZ: %d");
provider.add("gtceu.machine.miner.radius", "Radius: %d");
provider.add("gtceu.machine.miner.chunkradius", "Chunk Radius: %d");
provider.add("gtceu.machine.miner.progress", "Progress: %d/%d");
Expand Down