3
3
import com .mojang .authlib .GameProfile ;
4
4
import dev .compactmods .machines .CompactMachines ;
5
5
import dev .compactmods .machines .api .core .Tooltips ;
6
+ import dev .compactmods .machines .core .MissingDimensionException ;
7
+ import dev .compactmods .machines .i18n .TranslationUtil ;
6
8
import dev .compactmods .machines .machine .CompactMachineBlock ;
7
9
import dev .compactmods .machines .machine .CompactMachineBlockEntity ;
8
- import dev .compactmods .machines .i18n . TranslationUtil ;
9
- import mcjty . theoneprobe . api . IProbeHitData ;
10
- import mcjty .theoneprobe .api .IProbeInfo ;
11
- import mcjty .theoneprobe .api . IProbeInfoProvider ;
12
- import mcjty .theoneprobe .api . ProbeMode ;
10
+ import dev .compactmods .machines .tunnel . TunnelItem ;
11
+ import dev . compactmods . machines . tunnel . data . RoomTunnelData ;
12
+ import mcjty .theoneprobe .api .* ;
13
+ import mcjty .theoneprobe .apiimpl . styles . ItemStyle ;
14
+ import mcjty .theoneprobe .apiimpl . styles . LayoutStyle ;
13
15
import net .minecraft .ChatFormatting ;
14
16
import net .minecraft .network .chat .MutableComponent ;
15
17
import net .minecraft .resources .ResourceLocation ;
16
18
import net .minecraft .world .entity .player .Player ;
19
+ import net .minecraft .world .item .ItemStack ;
17
20
import net .minecraft .world .level .Level ;
18
- import net .minecraft .world .level .block .entity .BlockEntity ;
19
21
import net .minecraft .world .level .block .state .BlockState ;
20
22
23
+ import java .util .stream .Collectors ;
24
+
21
25
public class CompactMachineProvider implements IProbeInfoProvider {
22
26
23
27
@ Override
@@ -27,14 +31,16 @@ public ResourceLocation getID() {
27
31
28
32
@ Override
29
33
public void addProbeInfo (ProbeMode probeMode , IProbeInfo info , Player player , Level level , BlockState blockState , IProbeHitData hitData ) {
30
- if (!(blockState .getBlock () instanceof CompactMachineBlock mach ))
34
+ if (!(blockState .getBlock () instanceof CompactMachineBlock mach ))
31
35
return ;
32
36
33
- BlockEntity te = level .getBlockEntity (hitData .getPos ());
37
+ final var server = level .getServer ();
38
+ final var te = level .getBlockEntity (hitData .getPos ());
39
+
34
40
if (te instanceof CompactMachineBlockEntity machine ) {
35
- if (machine .mapped ()) {
41
+ if (machine .mapped ()) {
36
42
MutableComponent id = TranslationUtil
37
- .tooltip (Tooltips .Machines .ID , machine .machineId )
43
+ .tooltip (Tooltips .Machines .ID , machine .machineId , hitData . getSideHit () )
38
44
.withStyle (ChatFormatting .GREEN );
39
45
40
46
info .text (id );
@@ -59,7 +65,45 @@ public void addProbeInfo(ProbeMode probeMode, IProbeInfo info, Player player, Le
59
65
}
60
66
});
61
67
62
- // TODO - Connected Tunnels horizontal preview?
68
+ machine .getInternalChunkPos ().ifPresent (room -> {
69
+ try {
70
+ final var tunnels = RoomTunnelData .get (server , room );
71
+ final var graph = tunnels .getGraph ();
72
+
73
+ final var applied = graph .getTypesForSide (machine .machineId , hitData .getSideHit ())
74
+ .collect (Collectors .toSet ());
75
+
76
+ switch (probeMode ) {
77
+ case NORMAL :
78
+ final var group = info .horizontal (new LayoutStyle ()
79
+ .alignment (ElementAlignment .ALIGN_TOPLEFT )
80
+ .padding (0 )
81
+ .spacing (0 ));
82
+
83
+ applied .forEach (tn -> {
84
+ ItemStack item = TunnelItem .createStack (tn );
85
+ group .item (item , new ItemStyle ().bounds (8 , 8 ));
86
+ });
87
+ break ;
88
+
89
+ case EXTENDED :
90
+ final var tgg = info .vertical (new LayoutStyle ().alignment (ElementAlignment .ALIGN_TOPLEFT ));
91
+ applied .forEach (tn -> {
92
+ final var tg = tgg .horizontal (new LayoutStyle ()
93
+ .alignment (ElementAlignment .ALIGN_CENTER )
94
+ .hPadding (2 ).vPadding (2 )
95
+ .spacing (0 ));
96
+
97
+ ItemStack item = TunnelItem .createStack (tn );
98
+ tg .item (item , new ItemStyle ().bounds (8 , 8 ));
99
+ tg .itemLabel (item );
100
+ });
101
+ break ;
102
+ }
103
+ } catch (MissingDimensionException e ) {
104
+ CompactMachines .LOGGER .fatal (e );
105
+ }
106
+ });
63
107
}
64
108
}
65
109
}
0 commit comments