Skip to content

Commit

Permalink
Fix registries freezing before holders are registered
Browse files Browse the repository at this point in the history
Relates to #404
  • Loading branch information
Su5eD committed Oct 22, 2023
1 parent 25ba84b commit d321d45
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 8 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ versionAdapterDefinition=1.8.0
versionMc=1.20.1
versionForge=47.1.3
versionForgeAutoRenamingTool=1.0.8
versionFabricLoader=2.5.0+0.14.21+1.20.1
versionFabricLoader=2.5.1+0.14.21+1.20.1
versionAccessWidener=2.1.0
versionFabricApi=0.90.0+1.9.26+1.20.1
versionMixin=0.12.5+mixin.0.8.5
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import net.fabricmc.api.DedicatedServerModInitializer;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.loader.impl.entrypoint.EntrypointUtils;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.fml.loading.FMLEnvironment;
import net.minecraftforge.fml.loading.progress.ProgressMeter;
Expand Down Expand Up @@ -56,9 +55,6 @@ public static void load() {
EntrypointUtils.invoke("server", DedicatedServerModInitializer.class, DedicatedServerModInitializer::onInitializeServer);
}

// Freeze registries
BuiltInRegistries.bootStrap();

loading = false;
finishedLoading = true;
} catch (Throwable t) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,26 @@

package dev.su5ed.sinytra.connector.mod.mixin.registries;

import net.minecraft.core.MappedRegistry;
import net.minecraft.core.Registry;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.server.Bootstrap;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(Bootstrap.class)
public abstract class BootstrapMixin {
@Redirect(method = "bootStrap", at = @At(value = "INVOKE", target = "Lnet/minecraft/core/registries/BuiltInRegistries;bootStrap()V"))
private static void initialize() {
BuiltInRegistries.createContents();
@Inject(method = "bootStrap", at = @At(value = "INVOKE", target = "Lnet/minecraft/core/registries/BuiltInRegistries;bootStrap()V", shift = At.Shift.AFTER))
private static void initialize(CallbackInfo ci) {
// Unfreeze registries
// We let the get frozen first as some forge mods may rely on registering their contents in the BuiltInRegistries.freeze() method
((MappedRegistry<?>) BuiltInRegistries.REGISTRY).unfreeze();
for (Registry<?> registry : BuiltInRegistries.REGISTRY) {
((MappedRegistry<?>) registry).unfreeze();
}
}

@Redirect(method = "bootStrap", at = @At(value = "INVOKE", target = "Lnet/minecraftforge/registries/GameData;vanillaSnapshot()V", remap = false))
Expand Down

0 comments on commit d321d45

Please sign in to comment.