2525import net .minecraft .client .Minecraft ;
2626import net .minecraft .commands .Commands ;
2727import net .minecraft .core .LayeredRegistryAccess ;
28+ import net .minecraft .core .Registry ;
2829import net .minecraft .core .RegistryAccess ;
2930import net .minecraft .resources .RegistryDataLoader ;
3031import net .minecraft .resources .ResourceKey ;
4243import net .minecraft .server .packs .resources .CloseableResourceManager ;
4344import net .minecraft .server .packs .resources .MultiPackResourceManager ;
4445import net .minecraft .server .packs .resources .ResourceManager ;
46+ import net .minecraft .tags .TagLoader ;
4547import net .minecraft .world .RandomSequences ;
4648import net .minecraft .world .flag .FeatureFlagSet ;
4749import net .minecraft .world .item .Item ;
@@ -229,8 +231,8 @@ private static VanillaPackResources getVanillaServerPack() {
229231
230232 private static synchronized List <Item > drops (Block b ) {
231233 return drops .computeIfAbsent (b , block -> {
232- ResourceLocation lootTableLocation = block .getLootTable (). location ();
233- if (lootTableLocation . equals ( BuiltInLootTables . EMPTY . location () )) {
234+ Optional < ResourceKey < LootTable >> optionalLootTableKey = block .getLootTable ();
235+ if (optionalLootTableKey . isEmpty ( )) {
234236 return Collections .emptyList ();
235237 } else {
236238 List <Item > items = new ArrayList <>();
@@ -251,13 +253,13 @@ private static synchronized List<Item> drops(Block b) {
251253 }
252254
253255 private static List <ItemStack > getDrops (Block state , LootParams .Builder params ) {
254- ResourceKey <LootTable > lv = state .getLootTable ();
255- if (lv == BuiltInLootTables . EMPTY ) {
256+ Optional < ResourceKey <LootTable > > lv = state .getLootTable ();
257+ if (lv . isEmpty () ) {
256258 return Collections .emptyList ();
257259 } else {
258260 LootParams lv2 = params .withParameter (LootContextParams .BLOCK_STATE , state .defaultBlockState ()).create (LootContextParamSets .BLOCK );
259261 ServerLevelStub lv3 = (ServerLevelStub ) lv2 .getLevel ();
260- LootTable lv4 = lv3 .holder ().getLootTable (lv );
262+ LootTable lv4 = lv3 .holder ().getLootTable (lv . get () );
261263 return ((ILootTable ) lv4 ).invokeGetRandomItems (new LootContext .Builder (lv2 ).withOptionalRandomSeed (1 ).create (null ));
262264 }
263265 }
@@ -307,39 +309,16 @@ public static Unsafe getUnsafe() {
307309 public static CompletableFuture <RegistryAccess > load () {
308310 PackRepository packRepository = Minecraft .getInstance ().getResourcePackRepository ();
309311 CloseableResourceManager closeableResourceManager = new MultiPackResourceManager (PackType .SERVER_DATA , packRepository .openAllSelected ());
310- LayeredRegistryAccess <RegistryLayer > layeredRegistryAccess = loadAndReplaceLayer (
311- closeableResourceManager , RegistryLayer .createRegistryAccess (), RegistryLayer .WORLDGEN , RegistryDataLoader .WORLDGEN_REGISTRIES
312+ LayeredRegistryAccess <RegistryLayer > layeredRegistryAccess = RegistryLayer .createRegistryAccess ();
313+ List <Registry .PendingTags <?>> pendingTags = TagLoader .loadTagsForExistingRegistries (
314+ closeableResourceManager , layeredRegistryAccess .getLayer (RegistryLayer .STATIC )
312315 );
313- return ReloadableServerResources .loadResources (
314- closeableResourceManager ,
316+ return ReloadableServerRegistries .reload (
315317 layeredRegistryAccess ,
316- WorldDataConfiguration .DEFAULT .enabledFeatures (),
317- Commands .CommandSelection .INTEGRATED ,
318- 2 ,
319- Runnable ::run ,
318+ pendingTags ,
319+ closeableResourceManager ,
320320 Minecraft .getInstance ()
321- ).thenApply (reloadableServerResources -> reloadableServerResources .fullRegistries ().get ());
322- }
323-
324- private static LayeredRegistryAccess <RegistryLayer > loadAndReplaceLayer (
325- ResourceManager resourceManager ,
326- LayeredRegistryAccess <RegistryLayer > registryAccess ,
327- RegistryLayer registryLayer ,
328- List <RegistryDataLoader .RegistryData <?>> registryData
329- ) {
330- RegistryAccess .Frozen frozen = loadLayer (resourceManager , registryAccess , registryLayer , registryData );
331- return registryAccess .replaceFrom (registryLayer , frozen );
321+ ).thenApply (r -> r .layers ().compositeAccess ());
332322 }
333-
334- private static RegistryAccess .Frozen loadLayer (
335- ResourceManager resourceManager ,
336- LayeredRegistryAccess <RegistryLayer > registryAccess ,
337- RegistryLayer registryLayer ,
338- List <RegistryDataLoader .RegistryData <?>> registryData
339- ) {
340- RegistryAccess .Frozen frozen = registryAccess .getAccessForLoading (registryLayer );
341- return RegistryDataLoader .load (resourceManager , frozen , registryData );
342- }
343-
344323 }
345324}
0 commit comments