Skip to content

Commit 90cd83b

Browse files
committed
get themes to work
1 parent 2fbbcd9 commit 90cd83b

File tree

14 files changed

+106
-152
lines changed

14 files changed

+106
-152
lines changed

src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.gregtechceu.gtceu.api.item.MetaMachineItem;
88
import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine;
99
import com.gregtechceu.gtceu.api.mui.factory.PanelFactory;
10+
import com.gregtechceu.gtceu.api.mui.theme.ThemeAPI;
1011
import com.gregtechceu.gtceu.api.recipe.GTRecipe;
1112
import com.gregtechceu.gtceu.api.recipe.GTRecipeType;
1213
import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifier;
@@ -131,6 +132,9 @@ public class MachineDefinition implements Supplier<IMachineBlock> {
131132
private PanelFactory UI;
132133
@Getter
133134
@Setter
135+
private String themeId = ThemeAPI.DEFAULT_ID;
136+
@Getter
137+
@Setter
134138
private Reference2IntMap<RecipeCapability<?>> recipeOutputLimits = new Reference2IntOpenHashMap<>();
135139

136140
@Getter

src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,7 @@ public void handleRecipeWorking() {
270270
}
271271
progress++;
272272
totalContinuousRunningTime++;
273+
syncDataHolder.markClientSyncFieldDirty("progress");
273274
} else {
274275
setWaiting(handleTick.reason());
275276

@@ -310,6 +311,7 @@ public void handleRecipeWorking() {
310311
protected void regressRecipe() {
311312
if (progress > 0 && machine.regressWhenWaiting()) {
312313
this.progress = 1;
314+
syncDataHolder.markClientSyncFieldDirty("progress");
313315
}
314316
}
315317

@@ -330,6 +332,7 @@ public void findAndHandleRecipe() {
330332
lastOriginRecipe = null;
331333
handleSearchingRecipes(searchRecipe());
332334
}
335+
syncDataHolder.markClientSyncFieldDirty("lastRecipe");
333336
recipeDirty = false;
334337
}
335338

@@ -370,6 +373,10 @@ public void setupRecipe(GTRecipe recipe) {
370373
progress = 0;
371374
duration = 0;
372375
isActive = false;
376+
syncDataHolder.markClientSyncFieldDirty("progress");
377+
syncDataHolder.markClientSyncFieldDirty("duration");
378+
syncDataHolder.markClientSyncFieldDirty("isActive");
379+
syncDataHolder.markClientSyncFieldDirty("consecutiveRecipes");
373380
return;
374381
}
375382
var handledIO = handleRecipeIO(recipe, IO.IN);
@@ -383,6 +390,10 @@ public void setupRecipe(GTRecipe recipe) {
383390
progress = 0;
384391
duration = recipe.duration;
385392
isActive = true;
393+
syncDataHolder.markClientSyncFieldDirty("lastRecipe");
394+
syncDataHolder.markClientSyncFieldDirty("progress");
395+
syncDataHolder.markClientSyncFieldDirty("duration");
396+
syncDataHolder.markClientSyncFieldDirty("isActive");
386397
}
387398
}
388399

@@ -402,13 +413,15 @@ public void setStatus(Status status) {
402413
updateTickSubscription();
403414
if (this.status != Status.WAITING) {
404415
waitingReason = null;
416+
syncDataHolder.markClientSyncFieldDirty("waitingReason");
405417
}
406418
}
407419
}
408420

409421
public void setWaiting(@Nullable Component reason) {
410422
setStatus(Status.WAITING);
411423
waitingReason = reason;
424+
syncDataHolder.markClientSyncFieldDirty("waitingReason");
412425
machine.onWaiting();
413426
}
414427

@@ -497,6 +510,11 @@ public void onRecipeFinish() {
497510
isActive = false;
498511
// Force a recipe recheck.
499512
lastRecipe = null;
513+
syncDataHolder.markClientSyncFieldDirty("consecutiveRecipes");
514+
syncDataHolder.markClientSyncFieldDirty("progress");
515+
syncDataHolder.markClientSyncFieldDirty("duration");
516+
syncDataHolder.markClientSyncFieldDirty("isActive");
517+
syncDataHolder.markClientSyncFieldDirty("lastRecipe");
500518
return;
501519
}
502520
if (machine.alwaysTryModifyRecipe()) {
@@ -506,6 +524,7 @@ public void onRecipeFinish() {
506524
markLastRecipeDirty();
507525
} else {
508526
lastRecipe = modified;
527+
syncDataHolder.markClientSyncFieldDirty("lastRecipe");
509528
}
510529
} else {
511530
markLastRecipeDirty();
@@ -519,11 +538,16 @@ public void onRecipeFinish() {
519538
setStatus(Status.IDLE);
520539
if (recipeCheck.io() != IO.IN || recipeCheck.capability() == EURecipeCapability.CAP) {
521540
waitingReason = recipeCheck.reason();
541+
syncDataHolder.markClientSyncFieldDirty("waitingReason");
522542
}
523543
consecutiveRecipes = 0;
524544
progress = 0;
525545
duration = 0;
526546
isActive = false;
547+
syncDataHolder.markClientSyncFieldDirty("consecutiveRecipes");
548+
syncDataHolder.markClientSyncFieldDirty("progress");
549+
syncDataHolder.markClientSyncFieldDirty("duration");
550+
syncDataHolder.markClientSyncFieldDirty("isActive");
527551
}
528552
}
529553
}
@@ -545,6 +569,8 @@ public void interruptRecipe() {
545569
setStatus(Status.IDLE);
546570
progress = 0;
547571
duration = 0;
572+
syncDataHolder.markClientSyncFieldDirty("progress");
573+
syncDataHolder.markClientSyncFieldDirty("duration");
548574
}
549575
}
550576

src/main/java/com/gregtechceu/gtceu/api/mui/widgets/SlotGroupWidget.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import com.gregtechceu.gtceu.api.mui.base.widget.IWidget;
55
import com.gregtechceu.gtceu.api.mui.widget.ParentWidget;
66
import com.gregtechceu.gtceu.api.mui.widgets.slot.ItemSlot;
7-
import com.gregtechceu.gtceu.common.mui.GTGuiTextures;
87

98
import it.unimi.dsi.fastutil.chars.Char2IntMap;
109
import it.unimi.dsi.fastutil.chars.Char2IntOpenHashMap;
@@ -49,14 +48,12 @@ public static SlotGroupWidget playerInventory(SlotConsumer slotConsumer) {
4948
String key = "player";
5049
for (int i = 0; i < 9; i++) {
5150
slotGroupWidget.child(slotConsumer.apply(i, new ItemSlot())
52-
.background(GTGuiTextures.SLOT)
5351
.syncHandler(key, i)
5452
.pos(i * 18, 3 * 18 + 4)
5553
.name("slot_" + i));
5654
}
5755
for (int i = 0; i < 27; i++) {
5856
slotGroupWidget.child(slotConsumer.apply(i + 9, new ItemSlot())
59-
.background(GTGuiTextures.SLOT)
6057
.syncHandler(key, i + 9)
6158
.pos(i % 9 * 18, i / 9 * 18)
6259
.name("slot_" + (i + 9)));

src/main/java/com/gregtechceu/gtceu/api/recipe/gui/GTRecipeTypeUILayout.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,7 @@
1919
import com.gregtechceu.gtceu.api.mui.widgets.slot.ModularSlot;
2020
import com.gregtechceu.gtceu.api.mui.widgets.slot.SlotGroup;
2121
import com.gregtechceu.gtceu.api.recipe.GTRecipeType;
22-
import com.gregtechceu.gtceu.client.mui.screen.UISettings;
2322
import com.gregtechceu.gtceu.common.data.mui.GTMuiWidgets;
24-
import com.gregtechceu.gtceu.common.mui.GTGuiTextures;
2523
import com.gregtechceu.gtceu.common.mui.GTGuis;
2624

2725
import it.unimi.dsi.fastutil.ints.*;
@@ -57,7 +55,7 @@ public class GTRecipeTypeUILayout {
5755
public GTRecipeTypeUILayout() {}
5856

5957
public ParentWidget<?> getBackedSlotsRow(@NotNull PanelSyncManager syncManager,
60-
@NotNull UISettings settings,
58+
@NotNull String themeId,
6159
@Nullable NotifiableItemStackHandler inputItems,
6260
@Nullable NotifiableItemStackHandler outputItems,
6361
@Nullable NotifiableFluidTank inputFluids,
@@ -108,11 +106,9 @@ public ParentWidget<?> getBackedSlotsRow(@NotNull PanelSyncManager syncManager,
108106

109107
slotGroupHeightPx += 18 * grid.length;
110108

111-
112-
113109
IDrawable defaultSlotBackground = (recipeCap == ItemRecipeCapability.CAP ?
114-
ThemeAPI.INSTANCE.getTheme(settings.getTheme()).getItemSlotTheme().getTheme().getBackground()
115-
: ThemeAPI.INSTANCE.getTheme(settings.getTheme()).getFluidSlotTheme().getTheme().getBackground());
110+
ThemeAPI.INSTANCE.getTheme(themeId).getItemSlotTheme().getTheme().getBackground() :
111+
ThemeAPI.INSTANCE.getTheme(themeId).getFluidSlotTheme().getTheme().getBackground());
116112

117113
SlotGroupWidget.Builder slotWidgetBuilder = SlotGroupWidget.builder()
118114
.matrix(grid);

src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties;
1616
import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic;
1717
import com.gregtechceu.gtceu.api.mui.factory.PanelFactory;
18+
import com.gregtechceu.gtceu.api.mui.theme.ThemeAPI;
1819
import com.gregtechceu.gtceu.api.recipe.GTRecipe;
1920
import com.gregtechceu.gtceu.api.recipe.GTRecipeType;
2021
import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifier;
@@ -175,6 +176,8 @@ public class MachineBuilder<DEFINITION extends MachineDefinition> extends Builde
175176
@Setter
176177
@Getter
177178
private PanelFactory UI = null;
179+
@Getter
180+
private String themeId = ThemeAPI.DEFAULT_ID;
178181

179182
@Setter
180183
private boolean allowCoverOnFront = false;
@@ -405,6 +408,16 @@ public MachineBuilder<DEFINITION> abilities(PartAbility... abilities) {
405408
return this;
406409
}
407410

411+
public MachineBuilder<DEFINITION> themeId(String themeId) {
412+
this.themeId = themeId;
413+
return this;
414+
}
415+
416+
public MachineBuilder<DEFINITION> themeId(Function<Integer, String> themeId) {
417+
this.themeId = themeId.apply(tier);
418+
return this;
419+
}
420+
408421
public MachineBuilder<DEFINITION> modelProperty(Property<?> property) {
409422
return modelProperty(property, null);
410423
}
@@ -570,6 +583,9 @@ public DEFINITION register() {
570583
if (this.UI != null) {
571584
definition.setUI(UI);
572585
}
586+
if (this.themeId != null) {
587+
definition.setThemeId(themeId);
588+
}
573589
definition.setRecipeTypes(recipeTypes);
574590
definition.setBlockSupplier(block);
575591
definition.setItemSupplier(item);

src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import com.gregtechceu.gtceu.common.machine.steam.SteamSolarBoiler;
3434
import com.gregtechceu.gtceu.common.machine.steam.SteamSolidBoilerMachine;
3535
import com.gregtechceu.gtceu.common.machine.storage.*;
36+
import com.gregtechceu.gtceu.common.mui.GTGuiTheme;
3637
import com.gregtechceu.gtceu.common.pipelike.fluidpipe.longdistance.LDFluidEndpointMachine;
3738
import com.gregtechceu.gtceu.common.pipelike.item.longdistance.LDItemEndpointMachine;
3839
import com.gregtechceu.gtceu.config.ConfigHolder;
@@ -121,7 +122,7 @@ public class GTMachines {
121122
.recipeType(GTRecipeTypes.MACERATOR_RECIPES)
122123
.recipeModifier(SimpleSteamMachine::recipeModifier)
123124
.addOutputLimit(ItemRecipeCapability.CAP, 1)
124-
// .theme((tier) -> {tier > 1 : GTGuiTheme.STEEL : GTGuiTheme.BRONZE})
125+
.themeId((i) -> GTGuiTheme.BRONZE.getId())
125126
.UI(GTSingleblockMachinePanels.STEAM_MACERATOR)
126127
.modelProperty(GTMachineModelProperties.VENT_DIRECTION, RelativeDirection.BACK)
127128
.workableSteamHullModel(pressure, GTCEu.id("block/machines/macerator"))

src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
import com.gregtechceu.gtceu.common.machine.storage.DrumMachine;
5757
import com.gregtechceu.gtceu.common.machine.storage.QuantumChestMachine;
5858
import com.gregtechceu.gtceu.common.machine.storage.QuantumTankMachine;
59+
import com.gregtechceu.gtceu.common.mui.GTGuiTheme;
5960
import com.gregtechceu.gtceu.config.ConfigHolder;
6061
import com.gregtechceu.gtceu.utils.FormattingUtil;
6162

@@ -373,6 +374,7 @@ public static Pair<MachineDefinition, MachineDefinition> registerSimpleSteamMach
373374
.rotationState(RotationState.ALL)
374375
.recipeType(recipeType)
375376
.recipeModifier(SimpleSteamMachine::recipeModifier)
377+
.themeId((i) -> i > 0 ? GTGuiTheme.STEEL.getId() : GTGuiTheme.BRONZE.getId())
376378
.UI(GTSingleblockMachinePanels.STEAM_MACHINE)
377379
.modelProperty(GTMachineModelProperties.VENT_DIRECTION, RelativeDirection.BACK)
378380
.workableSteamHullModel(pressure, GTCEu.id("block/machines/" + name))

src/main/java/com/gregtechceu/gtceu/common/data/mui/GTMuiWidgets.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ public static Flow createTitleBar(MachineDefinition definition, int panelWidth,
7777
.marginLeft(borderRadius))
7878
.mainAxisAlignment(Alignment.MainAxis.START)
7979
.child(IKey.str(hatchName)
80+
.alignment(Alignment.CENTER)
8081
.asWidget()
8182
.paddingTop(1)
8283
.margin(borderRadius, borderRadius, borderRadius, 1)

0 commit comments

Comments
 (0)