Skip to content

Commit 121d7b5

Browse files
committed
Disable motor slot for IN only pipes and add relevant tooltip
1 parent a348e13 commit 121d7b5

File tree

4 files changed

+34
-7
lines changed

4 files changed

+34
-7
lines changed

src/client/java/aztech/modern_industrialization/client/DynamicTooltip.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
*/
2424
package aztech.modern_industrialization.client;
2525

26-
import java.util.ArrayList;
26+
import aztech.modern_industrialization.util.RenderHelper;
2727
import java.util.List;
2828
import java.util.function.Supplier;
2929
import net.minecraft.client.Minecraft;
@@ -41,10 +41,6 @@ public DynamicTooltip(Supplier<List<Component>> tooltipSupplier) {
4141

4242
@Override
4343
public List<FormattedCharSequence> toCharSequence(Minecraft minecraft) {
44-
List<FormattedCharSequence> charSequences = new ArrayList<>();
45-
for (var component : tooltipSupplier.get()) {
46-
charSequences.addAll(Tooltip.splitTooltip(minecraft, component));
47-
}
48-
return charSequences;
44+
return RenderHelper.splitTooltip(tooltipSupplier.get());
4945
}
5046
}

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import aztech.modern_industrialization.network.pipes.SetItemWhitelistPacket;
3131
import aztech.modern_industrialization.pipes.gui.PipeGuiHelper;
3232
import aztech.modern_industrialization.pipes.gui.PipeScreen;
33+
import aztech.modern_industrialization.util.RenderHelper;
3334
import aztech.modern_industrialization.util.TextHelper;
3435
import com.mojang.blaze3d.systems.RenderSystem;
3536
import java.util.ArrayList;
@@ -122,7 +123,15 @@ protected void renderTooltip(GuiGraphics guiGraphics, int x, int y) {
122123
super.renderTooltip(guiGraphics, x, y);
123124

124125
if (this.hoveredSlot != null && this.hoveredSlot instanceof ItemPipeScreenHandler.UpgradeSlot && !this.hoveredSlot.hasItem()) {
125-
guiGraphics.renderTooltip(font, new MITooltips.Line(MIText.PutMotorToUpgrade).build(), x, y);
126+
List<Component> lines = new ArrayList<>();
127+
lines.add(MIText.PutMotorToUpgrade.text());
128+
if (menu.pipeInterface.getConnectionType() == 0) {
129+
lines.add(MIText.PriorityNotApplicable.text(
130+
MIText.PipeConnectionTooltipInsertOnly.text().setStyle(MITooltips.HIGHLIGHT_STYLE),
131+
MIText.PipeConnectionIn.text().setStyle(MITooltips.HIGHLIGHT_STYLE))
132+
.setStyle(TextHelper.GRAY_TEXT));
133+
}
134+
guiGraphics.renderTooltip(font, RenderHelper.splitTooltip(lines), x, y);
126135
}
127136

128137
}

src/client/java/aztech/modern_industrialization/util/RenderHelper.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,14 @@
4040
import com.mojang.blaze3d.vertex.Tesselator;
4141
import com.mojang.blaze3d.vertex.VertexConsumer;
4242
import com.mojang.blaze3d.vertex.VertexFormat;
43+
import java.util.ArrayList;
44+
import java.util.List;
4345
import java.util.Objects;
4446
import java.util.function.Supplier;
4547
import net.minecraft.client.Minecraft;
4648
import net.minecraft.client.gui.Font;
4749
import net.minecraft.client.gui.GuiGraphics;
50+
import net.minecraft.client.gui.components.Tooltip;
4851
import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer;
4952
import net.minecraft.client.renderer.GameRenderer;
5053
import net.minecraft.client.renderer.LevelRenderer;
@@ -55,7 +58,9 @@
5558
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
5659
import net.minecraft.core.BlockPos;
5760
import net.minecraft.core.Direction;
61+
import net.minecraft.network.chat.Component;
5862
import net.minecraft.resources.ResourceLocation;
63+
import net.minecraft.util.FormattedCharSequence;
5964
import net.minecraft.world.inventory.InventoryMenu;
6065
import net.minecraft.world.item.BlockItem;
6166
import net.minecraft.world.item.ItemDisplayContext;
@@ -294,4 +299,12 @@ public static void renderAndDecorateItem(GuiGraphics guiGraphics, Font font, Ite
294299
guiGraphics.renderItem(stack, x, y);
295300
guiGraphics.renderItemDecorations(font, stack, x, y, text);
296301
}
302+
303+
public static List<FormattedCharSequence> splitTooltip(List<Component> components) {
304+
List<FormattedCharSequence> charSequences = new ArrayList<>();
305+
for (var component : components) {
306+
charSequences.addAll(Tooltip.splitTooltip(Minecraft.getInstance(), component));
307+
}
308+
return charSequences;
309+
}
297310
}

src/main/java/aztech/modern_industrialization/pipes/item/ItemPipeScreenHandler.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,9 +215,18 @@ public UpgradeSlot(int x, int y) {
215215

216216
@Override
217217
public boolean mayPlace(ItemStack stack) {
218+
if (pipeInterface.getConnectionType() == 0) {
219+
// Prevent placing motors in `IN` pipes.
220+
return false;
221+
}
218222
return stack.getItemHolder().getData(MIDataMaps.ITEM_PIPE_UPGRADES) != null;
219223
}
220224

225+
@Override
226+
public boolean isHighlightable() {
227+
return pipeInterface.getConnectionType() != 0;
228+
}
229+
221230
@Override
222231
public ItemStack getItem() {
223232
return pipeInterface.getUpgradeStack();

0 commit comments

Comments
 (0)