36
36
import net .minecraft .server .level .ServerLevel ;
37
37
import net .minecraft .tags .BlockTags ;
38
38
import net .minecraft .util .valueproviders .UniformInt ;
39
+ import net .minecraft .world .entity .Entity ;
40
+ import net .minecraft .world .level .Level ;
39
41
import net .minecraft .world .level .block .Blocks ;
42
+ import net .minecraft .world .level .border .WorldBorder ;
40
43
import net .minecraft .world .level .dimension .BuiltinDimensionTypes ;
41
44
import net .minecraft .world .level .dimension .DimensionType ;
45
+ import net .minecraft .world .level .portal .DimensionTransition ;
46
+ import net .minecraft .world .phys .Vec3 ;
42
47
import org .apache .commons .io .FileUtils ;
43
48
import org .jetbrains .annotations .ApiStatus ;
44
49
import org .jetbrains .annotations .Contract ;
57
62
@ ApiStatus .Internal
58
63
public class DynamicDimensionsGametest {
59
64
private static final String EMPTY_STRUCTURE = "empty" ; // in minecraft namespace because forge.
60
- private static final ResourceLocation TEST_LEVEL_0 = new ResourceLocation (Constants .MOD_ID , "level_0" );
61
- private static final ResourceLocation TEST_LEVEL_1 = new ResourceLocation (Constants .MOD_ID , "level_1" );
62
- private static final ResourceLocation TEST_LEVEL_2 = new ResourceLocation (Constants .MOD_ID , "level_2" );
63
- private static final ResourceLocation TEST_LEVEL_3 = new ResourceLocation (Constants .MOD_ID , "level_3" );
64
- private static final ResourceLocation TEST_LEVEL_4 = new ResourceLocation (Constants .MOD_ID , "level_4" );
65
- private static final ResourceLocation TEST_LEVEL_5 = new ResourceLocation (Constants .MOD_ID , "level_5" );
65
+ private static final ResourceLocation TEST_LEVEL_0 = ResourceLocation . fromNamespaceAndPath (Constants .MOD_ID , "level_0" );
66
+ private static final ResourceLocation TEST_LEVEL_1 = ResourceLocation . fromNamespaceAndPath (Constants .MOD_ID , "level_1" );
67
+ private static final ResourceLocation TEST_LEVEL_2 = ResourceLocation . fromNamespaceAndPath (Constants .MOD_ID , "level_2" );
68
+ private static final ResourceLocation TEST_LEVEL_3 = ResourceLocation . fromNamespaceAndPath (Constants .MOD_ID , "level_3" );
69
+ private static final ResourceLocation TEST_LEVEL_4 = ResourceLocation . fromNamespaceAndPath (Constants .MOD_ID , "level_4" );
70
+ private static final ResourceLocation TEST_LEVEL_5 = ResourceLocation . fromNamespaceAndPath (Constants .MOD_ID , "level_5" );
66
71
67
72
/**
68
73
* Checks if dimensions can be created.
@@ -87,6 +92,13 @@ public void createDynamicDimension(@NotNull GameTestHelper context) {
87
92
});
88
93
}
89
94
95
+ private static DimensionTransition createTransition (ServerLevel level , Entity entity ) {
96
+ WorldBorder border = level .getWorldBorder ();
97
+ double scale = DimensionType .getTeleportationScale (level .dimensionType (), level .dimensionType ());
98
+ BlockPos pos = border .clampToBounds (entity .getX () * scale , entity .getY (), entity .getZ () * scale );
99
+ return new DimensionTransition (level , pos .getBottomCenter (), Vec3 .ZERO , entity .getYRot (), entity .getXRot (), DimensionTransition .DO_NOTHING );
100
+ }
101
+
90
102
/**
91
103
* Checks if dimensions can be unloaded.
92
104
* @param context GameTest context
@@ -103,7 +115,7 @@ public void unloadDynamicDimension(@NotNull GameTestHelper context) {
103
115
context .runAfterDelay (1 , () -> {
104
116
ServerLevel level = server .getLevel (ResourceKey .create (Registries .DIMENSION , TEST_LEVEL_1 ));
105
117
assertNotNull (level );
106
- assertTrue (((DynamicDimensionRegistry ) server ).unloadDynamicDimension (TEST_LEVEL_1 , (server1 , player ) -> player .changeDimension (overworld )));
118
+ assertTrue (((DynamicDimensionRegistry ) server ).unloadDynamicDimension (TEST_LEVEL_1 , (server1 , player ) -> player .changeDimension (createTransition ( overworld , player ) )));
107
119
context .runAfterDelay (1 , () -> {
108
120
ServerLevel level2 = server .getLevel (ResourceKey .create (Registries .DIMENSION , TEST_LEVEL_1 ));
109
121
assertNull (level2 );
@@ -143,7 +155,7 @@ public void removedDimensionsDelete(@NotNull GameTestHelper context) {
143
155
level .save (null , true , false );
144
156
assertTrue (file .isDirectory ());
145
157
146
- assertTrue (((DynamicDimensionRegistry ) server ).deleteDynamicDimension (TEST_LEVEL_3 , (server1 , player ) -> player .changeDimension (overworld )));
158
+ assertTrue (((DynamicDimensionRegistry ) server ).deleteDynamicDimension (TEST_LEVEL_3 , (server1 , player ) -> player .changeDimension (createTransition ( overworld , player ) )));
147
159
context .runAfterDelay (1 , () -> {
148
160
ServerLevel level2 = server .getLevel (ResourceKey .create (Registries .DIMENSION , TEST_LEVEL_3 ));
149
161
assertNull (level2 );
@@ -184,7 +196,7 @@ public void unloadedDynamicDimensionSaved(@NotNull GameTestHelper context) {
184
196
level .save (null , true , false );
185
197
assertTrue (file .isDirectory ());
186
198
187
- assertTrue (((DynamicDimensionRegistry ) server ).unloadDynamicDimension (TEST_LEVEL_2 , (server1 , player ) -> player .changeDimension (overworld )));
199
+ assertTrue (((DynamicDimensionRegistry ) server ).unloadDynamicDimension (TEST_LEVEL_2 , (server1 , player ) -> player .changeDimension (createTransition ( overworld , player ) )));
188
200
context .runAfterDelay (1 , () -> {
189
201
ServerLevel level2 = server .getLevel (ResourceKey .create (Registries .DIMENSION , TEST_LEVEL_2 ));
190
202
assertNull (level2 );
@@ -231,7 +243,7 @@ public void reloadDynamicDimension(@NotNull GameTestHelper context) {
231
243
level .save (null , true , false );
232
244
assertTrue (file .isDirectory ());
233
245
234
- assertTrue (((DynamicDimensionRegistry ) server ).unloadDynamicDimension (TEST_LEVEL_4 , (server1 , player ) -> player .changeDimension (overworld )));
246
+ assertTrue (((DynamicDimensionRegistry ) server ).unloadDynamicDimension (TEST_LEVEL_4 , (server1 , player ) -> player .changeDimension (createTransition ( overworld , player ) )));
235
247
context .runAfterDelay (1 , () -> {
236
248
ServerLevel level2 = server .getLevel (ResourceKey .create (Registries .DIMENSION , TEST_LEVEL_4 ));
237
249
assertNull (level2 ); // dimension was deleted
@@ -246,7 +258,7 @@ public void reloadDynamicDimension(@NotNull GameTestHelper context) {
246
258
assertEquals (level3 .getBlockState (BlockPos .ZERO ), Blocks .REDSTONE_LAMP .defaultBlockState ());
247
259
248
260
context .succeed ();
249
- ((DynamicDimensionRegistry ) server ).deleteDynamicDimension (TEST_LEVEL_4 , (server1 , player ) -> player .changeDimension (overworld ));
261
+ ((DynamicDimensionRegistry ) server ).deleteDynamicDimension (TEST_LEVEL_4 , (server1 , player ) -> player .changeDimension (createTransition ( overworld , player ) ));
250
262
});
251
263
});
252
264
});
@@ -285,7 +297,7 @@ public void recreateDynamicDimension(@NotNull GameTestHelper context) {
285
297
level .save (null , true , false );
286
298
assertTrue (file .isDirectory ());
287
299
288
- assertTrue (((DynamicDimensionRegistry ) server ).unloadDynamicDimension (TEST_LEVEL_5 , (server1 , player ) -> player .changeDimension (overworld )));
300
+ assertTrue (((DynamicDimensionRegistry ) server ).unloadDynamicDimension (TEST_LEVEL_5 , (server1 , player ) -> player .changeDimension (createTransition ( overworld , player ) )));
289
301
context .runAfterDelay (1 , () -> {
290
302
ServerLevel level2 = server .getLevel (ResourceKey .create (Registries .DIMENSION , TEST_LEVEL_5 ));
291
303
assertNull (level2 ); // dimension was deleted
@@ -300,7 +312,7 @@ public void recreateDynamicDimension(@NotNull GameTestHelper context) {
300
312
assertNotEquals (level3 .getBlockState (BlockPos .ZERO ), Blocks .REDSTONE_LAMP .defaultBlockState ());
301
313
302
314
context .succeed ();
303
- ((DynamicDimensionRegistry ) server ).deleteDynamicDimension (TEST_LEVEL_5 , (server1 , player ) -> player .changeDimension (overworld ));
315
+ ((DynamicDimensionRegistry ) server ).deleteDynamicDimension (TEST_LEVEL_5 , (server1 , player ) -> player .changeDimension (createTransition ( overworld , player ) ));
304
316
});
305
317
});
306
318
});
0 commit comments