Skip to content

Commit 0a7e002

Browse files
committed
Make item pipe priorities clearer
1 parent e3cd152 commit 0a7e002

File tree

8 files changed

+72
-40
lines changed

8 files changed

+72
-40
lines changed

src/client/java/aztech/modern_industrialization/pipes/fluid/FluidPipeScreen.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,17 @@ protected void init() {
5858

5959
addNetworkFluidButton();
6060
addConnectionTypeButton(148, 22, menu.iface);
61-
addPriorityWidgets(33, 42, menu.iface, "transfer", 0);
61+
addPriorityWidgets(33, 42, menu.iface, 0, () -> {
62+
List<Component> lines = new ArrayList<>();
63+
64+
MIText priorityText = MIText.PriorityTransfer;
65+
lines.add(priorityText.text(menu.iface.getPriority(0)));
66+
67+
MIText priorityTextHelp = MIText.PriorityTransferHelp;
68+
lines.add(priorityTextHelp.text().setStyle(TextHelper.GRAY_TEXT));
69+
70+
return lines;
71+
}, () -> true);
6272
}
6373

6474
@Override

src/client/java/aztech/modern_industrialization/pipes/gui/PipeScreen.java

Lines changed: 10 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import com.mojang.blaze3d.systems.RenderSystem;
3434
import java.util.ArrayList;
3535
import java.util.List;
36+
import java.util.function.BooleanSupplier;
3637
import java.util.function.Supplier;
3738
import net.minecraft.client.gui.GuiGraphics;
3839
import net.minecraft.network.chat.Component;
@@ -66,44 +67,24 @@ public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float delta)
6667
renderTooltip(guiGraphics, mouseX, mouseY);
6768
}
6869

69-
protected void addPriorityWidgets(int startX, int startY, PriorityInterface priority, String tooltipType, int channel) {
70-
Supplier<List<Component>> tooltip = () -> {
71-
List<Component> lines = new ArrayList<>();
72-
73-
MIText priorityText = switch (tooltipType) {
74-
case "transfer" -> MIText.PriorityTransfer;
75-
case "insert" -> MIText.PriorityInsert;
76-
case "extract" -> MIText.PriorityExtract;
77-
default -> throw new IllegalArgumentException("tooltipType : " + tooltipType + " must be either transfer, insert or extract");
78-
};
79-
80-
MIText priorityTextHelp = switch (tooltipType) {
81-
case "transfer" -> MIText.PriorityTransferHelp;
82-
case "insert" -> MIText.PriorityInsertHelp;
83-
case "extract" -> MIText.PriorityExtractHelp;
84-
default -> throw new IllegalArgumentException("tooltipTypeHelp : " + tooltipType + " must be either transfer, insert or extract");
85-
};
86-
87-
lines.add(priorityText.text(priority.getPriority(channel)));
88-
lines.add(priorityTextHelp.text().setStyle(TextHelper.GRAY_TEXT));
89-
return lines;
90-
};
91-
addPriorityButton(startX, startY, 20, 12, "--", -10, priority, channel, tooltip);
92-
addPriorityButton(startX + 22, startY, 12, 0, "-", -1, priority, channel, tooltip);
93-
addPriorityButton(startX + 62, startY, 12, 0, "+", +1, priority, channel, tooltip);
94-
addPriorityButton(startX + 76, startY, 20, 12, "++", +10, priority, channel, tooltip);
70+
protected void addPriorityWidgets(int startX, int startY, PriorityInterface priority, int channel, Supplier<List<Component>> tooltip,
71+
BooleanSupplier isEnabled) {
72+
addPriorityButton(startX, startY, 20, 12, "--", -10, priority, channel, tooltip, isEnabled);
73+
addPriorityButton(startX + 22, startY, 12, 0, "-", -1, priority, channel, tooltip, isEnabled);
74+
addPriorityButton(startX + 62, startY, 12, 0, "+", +1, priority, channel, tooltip, isEnabled);
75+
addPriorityButton(startX + 76, startY, 20, 12, "++", +10, priority, channel, tooltip, isEnabled);
9576
addRenderableWidget(
9677
new PriorityDisplay(startX + 34 + this.leftPos, startY + this.topPos, 28, 12, Component.literal(""), tooltip,
9778
() -> priority.getPriority(channel),
98-
font));
79+
font, isEnabled));
9980
}
10081

10182
private void addPriorityButton(int x, int y, int width, int u, String text, int delta, PriorityInterface priority,
102-
int channel, Supplier<List<Component>> priorityTooltip) {
83+
int channel, Supplier<List<Component>> priorityTooltip, BooleanSupplier isEnabled) {
10384
addRenderableWidget(new PriorityButton(x + this.leftPos, y + this.topPos, width, u, text, button -> {
10485
priority.incrementPriority(channel, delta);
10586
new IncrementPriorityPacket(menu.containerId, channel, delta).sendToServer();
106-
}, priorityTooltip));
87+
}, priorityTooltip, isEnabled));
10788
}
10889

10990
protected int connectionTypeForward(ConnectionTypeInterface connectionType) {

src/client/java/aztech/modern_industrialization/pipes/gui/PriorityButton.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import aztech.modern_industrialization.client.DynamicTooltip;
2727
import com.mojang.blaze3d.systems.RenderSystem;
2828
import java.util.List;
29+
import java.util.function.BooleanSupplier;
2930
import java.util.function.Supplier;
3031
import net.minecraft.client.Minecraft;
3132
import net.minecraft.client.gui.Font;
@@ -36,15 +37,20 @@
3637

3738
class PriorityButton extends Button {
3839
private final int u;
40+
private final BooleanSupplier isEnabled;
3941

40-
public PriorityButton(int x, int y, int width, int u, String message, OnPress onPress, Supplier<List<Component>> tooltipSupplier) {
42+
public PriorityButton(int x, int y, int width, int u, String message, OnPress onPress, Supplier<List<Component>> tooltipSupplier,
43+
BooleanSupplier isEnabled) {
4144
super(x, y, width, 12, Component.literal(message), onPress, Button.DEFAULT_NARRATION);
4245
this.u = u;
46+
this.isEnabled = isEnabled;
4347
setTooltip(new DynamicTooltip(tooltipSupplier));
4448
}
4549

4650
@Override
4751
public void renderWidget(GuiGraphics guiGraphics, int mouseX, int mouseY, float delta) {
52+
this.active = this.isEnabled.getAsBoolean();
53+
4854
Minecraft minecraftClient = Minecraft.getInstance();
4955
Font font = minecraftClient.font;
5056
int v = this.isHoveredOrFocused() ? 40 + this.height : 40;

src/client/java/aztech/modern_industrialization/pipes/gui/PriorityDisplay.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
import aztech.modern_industrialization.client.DynamicTooltip;
2727
import java.util.List;
28+
import java.util.function.BooleanSupplier;
2829
import java.util.function.Supplier;
2930
import net.minecraft.client.gui.Font;
3031
import net.minecraft.client.gui.GuiGraphics;
@@ -36,14 +37,17 @@
3637
class PriorityDisplay extends AbstractWidget {
3738
private final Supplier<Integer> priorityGetter;
3839
private final Font textRenderer;
40+
private final BooleanSupplier isEnabled;
3941

4042
public PriorityDisplay(int x, int y, int width, int height, Component message, Supplier<List<Component>> tooltipSupplier,
4143
Supplier<Integer> priorityGetter,
42-
Font textRenderer) {
44+
Font textRenderer,
45+
BooleanSupplier isEnabled) {
4346
super(x, y, width, height, message);
4447
setTooltip(new DynamicTooltip(tooltipSupplier));
4548
this.priorityGetter = priorityGetter;
4649
this.textRenderer = textRenderer;
50+
this.isEnabled = isEnabled;
4751
this.active = false;
4852
}
4953

@@ -60,6 +64,6 @@ protected void updateWidgetNarration(NarrationElementOutput narrationElementOutp
6064
public void renderWidget(GuiGraphics guiGraphics, int mouseX, int mouseY, float delta) {
6165
FormattedCharSequence orderedText = getMessage().getVisualOrderText();
6266
guiGraphics.drawString(textRenderer, orderedText, this.getX() + this.width / 2 - textRenderer.width(orderedText) / 2,
63-
this.getY() + (this.height - 8) / 2, 4210752, false);
67+
this.getY() + (this.height - 8) / 2, isEnabled.getAsBoolean() ? 0x404040 : 0x707070, false);
6468
}
6569
}

src/client/java/aztech/modern_industrialization/pipes/item/ItemPipeScreen.java

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,37 @@ protected void init() {
7070
return lines;
7171
}));
7272
addConnectionTypeButton(148, 22, menu.pipeInterface);
73-
addPriorityWidgets(35, 72, menu.pipeInterface, "insert", 0);
74-
addPriorityWidgets(35, 86, menu.pipeInterface, "extract", 1);
73+
74+
addPriorityWidgets(35, 72, menu.pipeInterface, 0, makePriorityWidgetTooltip(0, true), () -> menu.pipeInterface.getConnectionType() != 2);
75+
addPriorityWidgets(35, 86, menu.pipeInterface, 1, makePriorityWidgetTooltip(1, false), () -> menu.pipeInterface.getConnectionType() != 0);
76+
}
77+
78+
private Supplier<List<Component>> makePriorityWidgetTooltip(int channel, boolean insert) {
79+
return () -> {
80+
List<Component> lines = new ArrayList<>();
81+
82+
MIText priorityText = insert ? MIText.PriorityInsert : MIText.PriorityExtract;
83+
lines.add(priorityText.text(menu.pipeInterface.getPriority(channel)));
84+
85+
if (insert && menu.pipeInterface.getConnectionType() == 2) {
86+
lines.add(MIText.PriorityNotApplicable.text(
87+
MIText.PipeConnectionTooltipExtractOnly.text().setStyle(MITooltips.HIGHLIGHT_STYLE),
88+
MIText.PipeConnectionOut.text().setStyle(MITooltips.HIGHLIGHT_STYLE))
89+
.setStyle(TextHelper.GRAY_TEXT));
90+
} else if (!insert && menu.pipeInterface.getConnectionType() == 0) {
91+
lines.add(MIText.PriorityNotApplicable.text(
92+
MIText.PipeConnectionTooltipInsertOnly.text().setStyle(MITooltips.HIGHLIGHT_STYLE),
93+
MIText.PipeConnectionIn.text().setStyle(MITooltips.HIGHLIGHT_STYLE))
94+
.setStyle(TextHelper.GRAY_TEXT));
95+
} else {
96+
lines.add(MIText.PriorityItemHelp.text(
97+
MIText.PipeConnectionOut.text().setStyle(MITooltips.HIGHLIGHT_STYLE),
98+
MIText.PipeConnectionIn.text().setStyle(MITooltips.HIGHLIGHT_STYLE))
99+
.setStyle(TextHelper.GRAY_TEXT));
100+
}
101+
102+
return lines;
103+
};
75104
}
76105

77106
/**

src/generated/resources/assets/modern_industrialization/lang/en_us.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1652,9 +1652,9 @@
16521652
"text.modern_industrialization.PipeHelp1": "Can be instantly retrieved by pressing %s with any Wrench.",
16531653
"text.modern_industrialization.PipeHelp2": "Use %s + %s to connect directly the pipe to the target block.",
16541654
"text.modern_industrialization.PriorityExtract": "Extract priority: %d",
1655-
"text.modern_industrialization.PriorityExtractHelp": "Lower priorities first, only into higher priorities.",
16561655
"text.modern_industrialization.PriorityInsert": "Insert priority: %d",
1657-
"text.modern_industrialization.PriorityInsertHelp": "Higher priorities first.",
1656+
"text.modern_industrialization.PriorityItemHelp": "Items only move from lower extract (%s) priorities to equal or higher insert (%s) priorities. Greater differences take precedence.",
1657+
"text.modern_industrialization.PriorityNotApplicable": "Not applicable in %s mode (%s).",
16581658
"text.modern_industrialization.PriorityTransfer": "Transfer priority: %d",
16591659
"text.modern_industrialization.PriorityTransferHelp": "Pipes will interact with higher priorities first.",
16601660
"text.modern_industrialization.Progress": "Progress: %s",

src/main/java/aztech/modern_industrialization/MIText.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,9 +206,10 @@ public enum MIText {
206206
PipeHelp1("Can be instantly retrieved by pressing %s with any Wrench."),
207207
PipeHelp2("Use %s + %s to connect directly the pipe to the target block."),
208208
PriorityExtract("Extract priority: %d"),
209-
PriorityExtractHelp("Lower priorities first, only into higher priorities."),
210209
PriorityInsert("Insert priority: %d"),
211-
PriorityInsertHelp("Higher priorities first."),
210+
PriorityItemHelp(
211+
"Items only move from lower extract (%s) priorities to equal or higher insert (%s) priorities. Greater differences take precedence."),
212+
PriorityNotApplicable("Not applicable in %s mode (%s)."),
212213
PriorityTransfer("Transfer priority: %d"),
213214
PriorityTransferHelp("Pipes will interact with higher priorities first."),
214215
Progress("Progress: %s"),

src/main/java/aztech/modern_industrialization/MITooltips.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,8 @@ public class MITooltips {
6868
public static final PriorityQueue<TooltipAttachment> TOOLTIPS = new PriorityQueue<>();
6969

7070
public static final Style DEFAULT_STYLE = Style.EMPTY.withColor(TextColor.fromRgb(0xa9a9a9)).withItalic(false);
71-
public static final Style NUMBER_TEXT = Style.EMPTY.withColor(TextColor.fromRgb(0xffde7d)).withItalic(false);
71+
public static final Style HIGHLIGHT_STYLE = Style.EMPTY.withColor(TextColor.fromRgb(0xffde7d)).withItalic(false);
72+
public static final Style NUMBER_TEXT = HIGHLIGHT_STYLE;
7273

7374
private static final Map<Class<?>, Style> DEFAULT_ARGUMENT_STYLE = new HashMap<>();
7475

0 commit comments

Comments
 (0)