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
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ org.gradle.jvmargs=-Xmx1G
# Dependencies
guideme_version=20.1.11
architectury_version=9.2.14
gtceu_version=7.5.1
gtceu_version=7.5.2
ldlib_version=1.0.40.b
registrate_version=MC1.20-1.3.11
rhino_version=2001.2.3-build.6
Expand Down
47 changes: 46 additions & 1 deletion src/generated/resources/assets/monilabs/lang/en_ud.json
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,53 @@
"gtceu.placeholder_info.sculkVatXPBuffer.0": "˙ʇɐΛ ʞןnɔS ǝɥʇ ɟo ɹǝɟɟnq ԀX ʇuǝɹɹnɔ ǝɥʇ suɹnʇǝᴚ",
"gtceu.placeholder_info.sculkVatXPBuffer.1": ":ǝbɐs∩",
"gtceu.placeholder_info.sculkVatXPBuffer.2": ")sʇǝʞɔnqıןןıɯ uı ǝnןɐʌ( :pǝɹoʇS ԀX >- }ɹǝɟɟnᗺԀXʇɐΛʞןnɔs{ ",
"gui.advanced_chroma_sensor.display": " :ǝdʎ⟘",
"gui.advanced_chroma_sensor.invert.disabled.0": "ןɐɯɹoN :ʇndʇnO",
"gui.advanced_chroma_sensor.invert.disabled.1": "",
"gui.advanced_chroma_sensor.invert.disabled.2": "ɔıboן ǝuoʇspǝɹ ǝɥʇ ʇɹǝʌuı oʇ ǝןbbo⟘",
"gui.advanced_chroma_sensor.invert.disabled.3": "˙ǝןqıɔnɹƆ ɔıʇɐɯsıɹԀ ǝɥʇ ɟo ɹoןoɔ ǝʌıʇɔɐ ǝɥʇ ɥɔʇɐɯ ʇou sǝop uǝsoɥɔ ɹoןoɔ ǝɥʇ uǝɥʍ buıʇʇıɯǝ sdoʇs ǝuoʇspǝɹ 'ʇןnɐɟǝp ʎᗺ",
"gui.advanced_chroma_sensor.invert.enabled.0": "pǝʇɹǝʌuI :ʇndʇnO",
"gui.advanced_chroma_sensor.invert.enabled.1": "",
"gui.advanced_chroma_sensor.invert.enabled.2": "ɔıboן ǝuoʇspǝɹ ǝɥʇ ʇɹǝʌuı oʇ ǝןbbo⟘",
"gui.advanced_chroma_sensor.invert.enabled.3": "˙ǝןqıɔnɹƆ ɔıʇɐɯsıɹԀ ǝɥʇ ɟo ɹoןoɔ ǝʌıʇɔɐ ǝɥʇ ɥɔʇɐɯ ʇou sǝop uǝsoɥɔ ɹoןoɔ ǝɥʇ uǝɥʍ buıʇʇıɯǝ sdoʇs ǝuoʇspǝɹ 'ʇןnɐɟǝp ʎᗺ",
"gui.advanced_chroma_sensor.none": "ǝuoN",
"gui.ae2.With": "ɥʇıM",
"gui.monilabs.chroma.color.display": " :ɹoןoƆ",
"gui.monilabs.chroma.color.unknown": "uʍouʞu∩",
"gui.monilabs.microverse_stability.max": " :xɐW",
"gui.monilabs.microverse_stability.max_threshold": "pןoɥsǝɹɥʇ ɯnɯıxɐɯ ʇǝS",
"gui.monilabs.microverse_stability.min": " :uıW",
"gui.monilabs.microverse_stability.min_threshold": "pןoɥsǝɹɥʇ ɯnɯıuıɯ ʇǝS",
"gui.monilabs.microverse_stability_sensor.invert.disabled.0": "ןɐɯɹoN :ʇndʇnO",
"gui.monilabs.microverse_stability_sensor.invert.disabled.1": "",
"gui.monilabs.microverse_stability_sensor.invert.disabled.2": "ɔıboן ǝuoʇspǝɹ ǝɥʇ ʇɹǝʌuı oʇ ǝןbbo⟘",
"gui.monilabs.microverse_stability_sensor.invert.disabled.3": "˙ɹoʇɔǝظoɹԀ ǝsɹǝʌoɹɔıW ǝɥʇ ɟo ʎʇıןıqɐʇs ʇuǝɹɹnɔ ǝɥʇ ɥɔʇɐɯ ʇou sǝop ǝbɐʇuǝɔɹǝd ǝɥʇ uǝɥʍ buıʇʇıɯǝ sdoʇs ǝuoʇspǝɹ 'ʇןnɐɟǝp ʎᗺ",
"gui.monilabs.microverse_stability_sensor.invert.enabled.0": "pǝʇɹǝʌuI :ʇndʇnO",
"gui.monilabs.microverse_stability_sensor.invert.enabled.1": "",
"gui.monilabs.microverse_stability_sensor.invert.enabled.2": "ɔıboן ǝuoʇspǝɹ ǝɥʇ ʇɹǝʌuı oʇ ǝןbbo⟘",
"gui.monilabs.microverse_stability_sensor.invert.enabled.3": "˙ɹoʇɔǝظoɹԀ ǝsɹǝʌoɹɔıW ǝɥʇ ɟo ʎʇıןıqɐʇs ʇuǝɹɹnɔ ǝɥʇ ɥɔʇɐɯ ʇou sǝop ǝbɐʇuǝɔɹǝd ǝɥʇ uǝɥʍ buıʇʇıɯǝ sdoʇs ǝuoʇspǝɹ 'ʇןnɐɟǝp ʎᗺ",
"gui.monilabs.xp_sensor.invert.disabled.0": "ןɐɯɹoN :ʇndʇnO",
"gui.monilabs.xp_sensor.invert.disabled.1": "",
"gui.monilabs.xp_sensor.invert.disabled.2": "ɔıboן ǝuoʇspǝɹ ǝɥʇ ʇɹǝʌuı oʇ ǝןbbo⟘",
"gui.monilabs.xp_sensor.invert.disabled.3": "˙ʇɐΛ ʞןnɔS ǝɥʇ ɟo ɹǝɟɟnq ןɐuɹǝʇuı ǝɥʇ uı ԀX ɟo ʇunoɯɐ ǝɥʇ ɥɔʇɐɯ ʇou sǝop ǝbɐʇuǝɔɹǝd ɹo ǝnןɐʌ ʍɐɹ ǝɥʇ uǝɥʍ buıʇʇıɯǝ sdoʇs ǝuoʇspǝɹ 'ʇןnɐɟǝp ʎᗺ",
"gui.monilabs.xp_sensor.invert.enabled.0": "pǝʇɹǝʌuI :ʇndʇnO",
"gui.monilabs.xp_sensor.invert.enabled.1": "",
"gui.monilabs.xp_sensor.invert.enabled.2": "ɔıboן ǝuoʇspǝɹ ǝɥʇ ʇɹǝʌuı oʇ ǝןbbo⟘",
"gui.monilabs.xp_sensor.invert.enabled.3": "˙ʇɐΛ ʞןnɔS ǝɥʇ ɟo ɹǝɟɟnq ןɐuɹǝʇuı ǝɥʇ uı ԀX ɟo ʇunoɯɐ ǝɥʇ ɥɔʇɐɯ ʇou sǝop ǝbɐʇuǝɔɹǝd ɹo ǝnןɐʌ ʍɐɹ ǝɥʇ uǝɥʍ buıʇʇıɯǝ sdoʇs ǝuoʇspǝɹ 'ʇןnɐɟǝp ʎᗺ",
"gui.monilabs.xp_sensor.max": " :xɐW",
"gui.monilabs.xp_sensor.max_threshold": "pןoɥsǝɹɥʇ ɯnɯıxɐɯ ʇǝS",
"gui.monilabs.xp_sensor.min": " :uıW",
"gui.monilabs.xp_sensor.min_threshold": "pןoɥsǝɹɥʇ ɯnɯıuıɯ ʇǝS",
"gui.monilabs.xp_sensor.mode_percentage": " )%%( ǝbɐʇuǝɔɹǝԀ :ǝpoW",
"gui.monilabs.xp_sensor.mode_raw_amount": " )ԀX( ʇunoɯⱯ ʍɐᴚ :ǝpoW",
"gui.monilabs.xp_sensor.mode_toggle.disabled.0": "ʇunoɯⱯ ʍɐᴚ :ǝpoW",
"gui.monilabs.xp_sensor.mode_toggle.disabled.1": "",
"gui.monilabs.xp_sensor.mode_toggle.disabled.2": "˙ןɐubıS ǝɔuǝıɹǝdxƎ ʞןnɔS ɟo ǝpoɯ ǝɥʇ ʇɔǝןǝs oʇ ǝןbbo⟘",
"gui.monilabs.xp_sensor.mode_toggle.disabled.3": "sǝnןɐʌ ʍɐɹ ǝɥʇ sǝɥɔʇɐɯ ʇɐΛ ʞןnɔS ǝɥʇ uı ԀX ɟo ʇunoɯɐ ǝɥʇ uǝɥʍ pǝʇʇıɯǝ sı ǝuoʇspǝɹ 'ǝpoɯ sıɥʇ uI",
"gui.monilabs.xp_sensor.mode_toggle.enabled.0": " ǝbɐʇuǝɔɹǝԀ :ǝpoW",
"gui.monilabs.xp_sensor.mode_toggle.enabled.1": "",
"gui.monilabs.xp_sensor.mode_toggle.enabled.2": "˙ןɐubıS ǝɔuǝıɹǝdxƎ ʞןnɔS ɟo ǝpoɯ ǝɥʇ ʇɔǝןǝs oʇ ǝןbbo⟘",
"gui.monilabs.xp_sensor.mode_toggle.enabled.3": "sǝbɐʇuǝɔɹǝd ǝɥʇ sǝɥɔʇɐɯ ʇɐΛ ʞןnɔS ǝɥʇ uı ԀX ɟo ʇunoɯɐ ǝɥʇ uǝɥʍ pǝʇʇıɯǝ sı ǝuoʇspǝɹ 'ǝpoɯ sıɥʇ uI",
"item.monilabs.max_conveyor_module": "ǝןnpoW ɹoʎǝʌuoƆ XⱯW",
"item.monilabs.max_electric_motor": "ɹoʇoW ɔıɹʇɔǝןƎ XⱯW",
"item.monilabs.max_electric_piston": "uoʇsıԀ ɔıɹʇɔǝןƎ XⱯW",
Expand All @@ -103,7 +149,6 @@
"microverse.monilabs.type.none": "ǝuoN",
"microverse.monilabs.type.normal": "ןɐɯɹoN",
"microverse.monilabs.type.shattered": "pǝɹǝʇʇɐɥS",
"monilabs.advanced_chroma_sensor_hatch.toggle": " :ʇndʇno ǝuoʇspǝɹ ǝןbbo⟘",
"monilabs.commands.helpexpert": "sbuıɥʇ ɹǝɥʇo buoɯɐ sbuıʇʇǝs ɯ⟘⅁ ǝɯǝɹʇxǝ ǝɹoɯ ǝɥʇ ɟo ǝɯos sǝןqɐuǝ 'pɹɐɥ ɹoɟ ɹǝıɟıpoɯ Ɐ - ǝpoW ʇɹǝdxƎ",
"monilabs.commands.helphard": "buıpuǝds uıoɔıuoW puɐ NNH sǝʌoɯǝɹ 'uoıssǝɹboɹd puɐ sǝuıן ǝɹoɯ sppⱯ - ǝpoW pɹɐH",
"monilabs.commands.helpnormal": "ǝpoɯ ʇןnɐɟǝᗡ ǝɥ⟘ - ǝpoW ןɐɯɹoN",
Expand Down
47 changes: 46 additions & 1 deletion src/generated/resources/assets/monilabs/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,53 @@
"gtceu.placeholder_info.sculkVatXPBuffer.0": "Returns the current XP buffer of the Sculk Vat.",
"gtceu.placeholder_info.sculkVatXPBuffer.1": "Usage:",
"gtceu.placeholder_info.sculkVatXPBuffer.2": " {sculkVatXPBuffer} -> XP Stored: (value in millibuckets)",
"gui.advanced_chroma_sensor.display": "Type: ",
"gui.advanced_chroma_sensor.invert.disabled.0": "Output: Normal",
"gui.advanced_chroma_sensor.invert.disabled.1": "",
"gui.advanced_chroma_sensor.invert.disabled.2": "Toggle to invert the redstone logic",
"gui.advanced_chroma_sensor.invert.disabled.3": "By default, redstone stops emitting when the color chosen does not match the active color of the Prismatic Crucible.",
"gui.advanced_chroma_sensor.invert.enabled.0": "Output: Inverted",
"gui.advanced_chroma_sensor.invert.enabled.1": "",
"gui.advanced_chroma_sensor.invert.enabled.2": "Toggle to invert the redstone logic",
"gui.advanced_chroma_sensor.invert.enabled.3": "By default, redstone stops emitting when the color chosen does not match the active color of the Prismatic Crucible.",
"gui.advanced_chroma_sensor.none": "None",
"gui.ae2.With": "With",
"gui.monilabs.chroma.color.display": "Color: ",
"gui.monilabs.chroma.color.unknown": "Unknown",
"gui.monilabs.microverse_stability.max": "Max: ",
"gui.monilabs.microverse_stability.max_threshold": "Set maximum threshold",
"gui.monilabs.microverse_stability.min": "Min: ",
"gui.monilabs.microverse_stability.min_threshold": "Set minimum threshold",
"gui.monilabs.microverse_stability_sensor.invert.disabled.0": "Output: Normal",
"gui.monilabs.microverse_stability_sensor.invert.disabled.1": "",
"gui.monilabs.microverse_stability_sensor.invert.disabled.2": "Toggle to invert the redstone logic",
"gui.monilabs.microverse_stability_sensor.invert.disabled.3": "By default, redstone stops emitting when the percentage does not match the current stability of the Microverse Projector.",
"gui.monilabs.microverse_stability_sensor.invert.enabled.0": "Output: Inverted",
"gui.monilabs.microverse_stability_sensor.invert.enabled.1": "",
"gui.monilabs.microverse_stability_sensor.invert.enabled.2": "Toggle to invert the redstone logic",
"gui.monilabs.microverse_stability_sensor.invert.enabled.3": "By default, redstone stops emitting when the percentage does not match the current stability of the Microverse Projector.",
"gui.monilabs.xp_sensor.invert.disabled.0": "Output: Normal",
"gui.monilabs.xp_sensor.invert.disabled.1": "",
"gui.monilabs.xp_sensor.invert.disabled.2": "Toggle to invert the redstone logic",
"gui.monilabs.xp_sensor.invert.disabled.3": "By default, redstone stops emitting when the raw value or percentage does not match the amount of XP in the internal buffer of the Sculk Vat.",
"gui.monilabs.xp_sensor.invert.enabled.0": "Output: Inverted",
"gui.monilabs.xp_sensor.invert.enabled.1": "",
"gui.monilabs.xp_sensor.invert.enabled.2": "Toggle to invert the redstone logic",
"gui.monilabs.xp_sensor.invert.enabled.3": "By default, redstone stops emitting when the raw value or percentage does not match the amount of XP in the internal buffer of the Sculk Vat.",
"gui.monilabs.xp_sensor.max": "Max: ",
"gui.monilabs.xp_sensor.max_threshold": "Set maximum threshold",
"gui.monilabs.xp_sensor.min": "Min: ",
"gui.monilabs.xp_sensor.min_threshold": "Set minimum threshold",
"gui.monilabs.xp_sensor.mode_percentage": "Mode: Percentage (%%) ",
"gui.monilabs.xp_sensor.mode_raw_amount": "Mode: Raw Amount (XP) ",
"gui.monilabs.xp_sensor.mode_toggle.disabled.0": "Mode: Raw Amount",
"gui.monilabs.xp_sensor.mode_toggle.disabled.1": "",
"gui.monilabs.xp_sensor.mode_toggle.disabled.2": "Toggle to select the mode of Sculk Experience Signal.",
"gui.monilabs.xp_sensor.mode_toggle.disabled.3": "In this mode, redstone is emitted when the amount of XP in the Sculk Vat matches the raw values",
"gui.monilabs.xp_sensor.mode_toggle.enabled.0": "Mode: Percentage ",
"gui.monilabs.xp_sensor.mode_toggle.enabled.1": "",
"gui.monilabs.xp_sensor.mode_toggle.enabled.2": "Toggle to select the mode of Sculk Experience Signal.",
"gui.monilabs.xp_sensor.mode_toggle.enabled.3": "In this mode, redstone is emitted when the amount of XP in the Sculk Vat matches the percentages",
"item.monilabs.max_conveyor_module": "MAX Conveyor Module",
"item.monilabs.max_electric_motor": "MAX Electric Motor",
"item.monilabs.max_electric_piston": "MAX Electric Piston",
Expand All @@ -103,7 +149,6 @@
"microverse.monilabs.type.none": "None",
"microverse.monilabs.type.normal": "Normal",
"microverse.monilabs.type.shattered": "Shattered",
"monilabs.advanced_chroma_sensor_hatch.toggle": "Toggle redstone output: ",
"monilabs.commands.helpexpert": "Expert Mode - A modifier for hard, enables some of the more extreme GTm settings among other things",
"monilabs.commands.helphard": "Hard Mode - Adds more lines and progression, removes HNN and Monicoin spending",
"monilabs.commands.helpnormal": "Normal Mode - The Default mode",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,6 @@ public class MoniGuiTextures {
"monilabs:textures/gui/progress_bar/progress_bar_simulation.png");
public static final ResourceTexture PROGRESS_BAR_XP = new ResourceTexture(
"monilabs:textures/gui/progress_bar/progress_bar_xp.png");
public static final ResourceTexture XP_SENSOR_BUTTON = new ResourceTexture(
"monilabs:textures/gui/widget/button_xp_sensor.png");
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package net.neganote.monilabs.common.machine.multiblock;

import net.minecraft.network.chat.Component;
import net.minecraft.util.StringRepresentable;

import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap;
Expand Down Expand Up @@ -87,6 +88,36 @@ public enum Color implements StringRepresentable {
}

public static final Map<Color, Color> TO_NOT_COLOR = new Object2ObjectArrayMap<>();

public String getColoredDisplayName() {
String displayName;

if (nameKey != null && !nameKey.isEmpty()) {
displayName = Component.translatable(nameKey).getString();
} else {
displayName = this.name().toUpperCase().replace('_', ' ');
}

boolean isRealColor = this.key >= Color.RED.key && this.key <= Color.PINK.key;

if (isRealColor) {
int rgb = this.integerColor;
String hex = String.format("%06X", rgb & 0xFFFFFF);
StringBuilder sb = new StringBuilder("§x");
for (char c : hex.toCharArray()) {
sb.append('§').append(c);
}
return sb + displayName;
} else {
String hex = String.format("%06X", 0x555555 & 0xFFFFFF);
StringBuilder sb = new StringBuilder("§x");
for (char c : hex.toCharArray()) {
sb.append('§').append(c);
}
return sb + displayName;
}
}

public static final Map<Color, Color> FROM_NOT_COLOR = new Object2ObjectArrayMap<>();

static {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
package net.neganote.monilabs.common.machine.multiblock;

import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.network.chat.*;
import net.minecraft.util.StringRepresentable;
import net.minecraft.world.level.block.state.properties.EnumProperty;
import net.neganote.monilabs.config.MoniConfig;

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

import java.util.Arrays;

@MethodsReturnNonnullByDefault
public enum Microverse implements StringRepresentable {

NONE("none", 0, 0, false, false, "microverse.monilabs.type.none"),
Expand All @@ -17,24 +19,26 @@ public enum Microverse implements StringRepresentable {
SHATTERED("shattered", 3, 0, false, false, "microverse.monilabs.type.shattered"),
CORRUPTED("corrupted", 4, 10, true, true, "microverse.monilabs.type.corrupted");

public static final Microverse[] MICROVERSES = Microverse.values();
public static final Microverse[] MICROVERSES = values();

public static final EnumProperty<Microverse> MICROVERSE_TYPE = EnumProperty.create("microverse_type",
Microverse.class);

public final int decayRate;
public final boolean isRepairable;

public final boolean isHungry;

public final String langKey;
public final int key;

@Getter
public final String serializedName;

public final int key;

Microverse(String serializedName, int key, int decayRate, boolean isRepairable, boolean isHungry, String langKey) {
Microverse(String serializedName,
int key,
int decayRate,
boolean isRepairable,
boolean isHungry,
String langKey) {
this.decayRate = decayRate;
this.isRepairable = isRepairable;
this.isHungry = isHungry;
Expand All @@ -43,12 +47,22 @@ public enum Microverse implements StringRepresentable {
this.serializedName = serializedName;
}

public String getDisplayName() {
if (langKey != null && !langKey.isEmpty()) {
return Component.translatable(langKey).getString();
}
return this.name().toLowerCase().replace('_', ' ');
}

public static final Microverse[] ACTUAL_MICROVERSES = Arrays.copyOfRange(MICROVERSES, 0,
Microverse.CORRUPTED.ordinal() + 1);

public static Microverse getMicroverseFromKey(int pKey) {
return MICROVERSES[pKey];
}

@Override
public String toString() {
return "Microverse{" + name() + "}";
public @NotNull String getSerializedName() {
return serializedName;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@
import com.gregtechceu.gtceu.api.gui.GuiTextures;
import com.gregtechceu.gtceu.api.gui.widget.ToggleButtonWidget;
import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity;
import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine;

import com.lowdragmc.lowdraglib.gui.widget.Widget;
import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup;
import com.lowdragmc.lowdraglib.gui.texture.ResourceBorderTexture;
import com.lowdragmc.lowdraglib.gui.widget.*;
import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced;
import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted;
import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder;
Expand All @@ -17,14 +18,22 @@
import net.neganote.monilabs.common.machine.multiblock.Color;

import com.mojang.blaze3d.MethodsReturnNonnullByDefault;
import it.unimi.dsi.fastutil.objects.Object2ObjectMap;
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
import lombok.Getter;
import lombok.Setter;

import java.util.Arrays;
import java.util.List;

import javax.annotation.ParametersAreNonnullByDefault;

import static net.neganote.monilabs.common.machine.multiblock.Color.ACTUAL_COLORS;

@MethodsReturnNonnullByDefault
@ParametersAreNonnullByDefault
public class AdvancedChromaSensorHatchPartMachine extends ChromaSensorHatchPartMachine {
public class AdvancedChromaSensorHatchPartMachine extends ChromaSensorHatchPartMachine
implements IFancyUIMachine {

public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(
AdvancedChromaSensorHatchPartMachine.class,
Expand All @@ -42,6 +51,20 @@ public class AdvancedChromaSensorHatchPartMachine extends ChromaSensorHatchPartM
@DescSynced
public boolean inverted = false;

public static final Object2ObjectMap<String, Color> NAME_TO_COLOR = new Object2ObjectOpenHashMap<>();

static {
for (Color color : Color.values()) {
NAME_TO_COLOR.put(color.name(), color);
}
}

private static final List<Color> VALID_COLORS = Arrays.asList(ACTUAL_COLORS);

private static final List<String> ACTUAL_COLOR_DISPLAY_NAMES = VALID_COLORS.stream()
.map(Color::getColoredDisplayName)
.toList();

public AdvancedChromaSensorHatchPartMachine(IMachineBlockEntity holder) {
super(holder);
}
Expand Down Expand Up @@ -70,13 +93,35 @@ public int getOutputSignal(Direction direction) {

@Override
public Widget createUIWidget() {
WidgetGroup group = new WidgetGroup(0, 0, 176, 105);
WidgetGroup group = new WidgetGroup(0, 0, 70, 70);

int currentIndex = VALID_COLORS.indexOf(getDetectorColor());
if (currentIndex == -1) currentIndex = 0;

group.addWidget(new LabelWidget(-40, 15, "gui.monilabs.chroma.color.display"));

group.addWidget(new SelectorWidget(
-5, 11, 80, 20,
ACTUAL_COLOR_DISPLAY_NAMES,
currentIndex)
.setMaxCount(3)
.setOnChanged(selectedName -> {
int index = ACTUAL_COLOR_DISPLAY_NAMES.indexOf(selectedName);
if (index >= 0) {
setDetectorColor(VALID_COLORS.get(index));
}
})
.setButtonBackground(ResourceBorderTexture.BUTTON_COMMON)
.setSupplier(() -> {
int idx = VALID_COLORS.indexOf(getDetectorColor());
return idx >= 0 ? ACTUAL_COLOR_DISPLAY_NAMES.get(idx) : "gui.monilabs.chroma.color.unknown";
}));

group.addWidget(new ToggleButtonWidget(
9, 20, 20, 20,
80, 11, 20, 20,
GuiTextures.INVERT_REDSTONE_BUTTON, this::isInverted, this::setInverted)
.isMultiLang()
.setTooltipText("cover.advanced_energy_detector.invert"));
.setTooltipText("gui.advanced_chroma_sensor.invert"));

return group;
}
Expand Down
Loading