11package dev .xpple .seedmapper .seedmap ;
22
3+ import dev .xpple .seedmapper .command .arguments .DimensionArgument ;
34import dev .xpple .seedmapper .world .WorldPreset ;
45import net .fabricmc .fabric .api .client .rendering .v1 .HudRenderCallback ;
56import net .minecraft .client .DeltaTracker ;
@@ -13,6 +14,10 @@ public final class SeedMapMinimapManager {
1314 private static final SeedMapMinimapManager INSTANCE = new SeedMapMinimapManager ();
1415
1516 private @ Nullable SeedMapMinimapScreen minimapScreen ;
17+ private long activeSeed ;
18+ private int activeVersion ;
19+ private @ Nullable WorldPreset activePreset ;
20+ private boolean hasContext ;
1621
1722 private SeedMapMinimapManager () {
1823 }
@@ -47,6 +52,10 @@ public static void disableMinimap() {
4752
4853 private void enable (long seed , int dimension , int version , WorldPreset preset , BlockPos pos ) {
4954 this .disable ();
55+ this .activeSeed = seed ;
56+ this .activeVersion = version ;
57+ this .activePreset = preset ;
58+ this .hasContext = true ;
5059 this .minimapScreen = new SeedMapMinimapScreen (seed , dimension , version , preset , pos );
5160 }
5261
@@ -69,8 +78,22 @@ private void render(GuiGraphics guiGraphics, DeltaTracker deltaTracker) {
6978 this .disable ();
7079 return ;
7180 }
81+ BlockPos playerPos = player .blockPosition ();
82+ Integer resolvedDimension = DimensionArgument .resolveDimensionId (minecraft .level .dimension ().identifier ().getPath ());
83+ if (resolvedDimension == null ) {
84+ this .disable ();
85+ return ;
86+ }
87+ int currentDimensionId = resolvedDimension ;
88+ if (currentDimensionId != this .minimapScreen .getDimensionId ()) {
89+ if (!this .hasContext || this .activePreset == null ) {
90+ this .disable ();
91+ return ;
92+ }
93+ this .enable (this .activeSeed , currentDimensionId , this .activeVersion , this .activePreset , playerPos );
94+ }
7295
73- this .minimapScreen .focusOn (player . blockPosition () );
96+ this .minimapScreen .focusOn (playerPos );
7497
7598 float partialTick = deltaTracker .getGameTimeDeltaPartialTick (false );
7699 this .minimapScreen .renderToHud (guiGraphics , player , partialTick );
0 commit comments