diff --git a/gradle.properties b/gradle.properties index f106468..1d9f5b1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,6 +2,6 @@ org.gradle.jvmargs = -Xmx1G org.gradle.parallel = false org.gradle.workers.max = 1 -version=7.3.2 +version=7.3.3 maven_group=net.ludocrypt archives_base_name=limlib \ No newline at end of file diff --git a/limlib_effects/gradle.properties b/limlib_effects/gradle.properties index e81bad3..72ab663 100644 --- a/limlib_effects/gradle.properties +++ b/limlib_effects/gradle.properties @@ -2,6 +2,6 @@ org.gradle.jvmargs = -Xmx1G org.gradle.parallel = false org.gradle.workers.max = 1 -version=7.3.2 +version=7.3.3 maven_group=net.ludocrypt archives_base_name=limlib-effects \ No newline at end of file diff --git a/limlib_effects/src/main/java/net/ludocrypt/limlib/effects/mixin/GameRendererMixin.java b/limlib_effects/src/main/java/net/ludocrypt/limlib/effects/mixin/GameRendererMixin.java index 69869b6..12d2356 100644 --- a/limlib_effects/src/main/java/net/ludocrypt/limlib/effects/mixin/GameRendererMixin.java +++ b/limlib_effects/src/main/java/net/ludocrypt/limlib/effects/mixin/GameRendererMixin.java @@ -19,8 +19,8 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.GameRenderer; import net.minecraft.registry.RegistryKey; +import net.minecraft.util.Identifier; import net.minecraft.util.Util; -import net.minecraft.world.World; @Mixin(GameRenderer.class) public class GameRendererMixin { @@ -30,15 +30,7 @@ public class GameRendererMixin { private MinecraftClient client; @Unique - private final Function, Optional> memoizedShaders = Util.memoize((world) -> { - Optional optionalPostEffect = LimlibEffects.snatch(client.world.getRegistryManager().getLookup(PostEffect.POST_EFFECT_KEY).get(), RegistryKey.of(PostEffect.POST_EFFECT_KEY, client.world.getRegistryKey().getValue())); - if (optionalPostEffect.isPresent()) { - if (optionalPostEffect.get().getShaderLocation() != null) { - return Optional.of(ShaderEffectManager.getInstance().manage(optionalPostEffect.get().getShaderLocation())); - } - } - return Optional.empty(); - }); + private final Function memoizedShaders = Util.memoize(id -> ShaderEffectManager.getInstance().manage(id)); @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/WorldRenderer;drawEntityOutlinesFramebuffer()V", shift = Shift.AFTER)) private void limlib$render(float tickDelta, long nanoTime, boolean renderLevel, CallbackInfo info) { @@ -46,11 +38,8 @@ public class GameRendererMixin { if (optionalPostEffect.isPresent()) { PostEffect postEffect = optionalPostEffect.get(); if (postEffect.shouldRender()) { - Optional shaderEffect = memoizedShaders.apply(client.world.getRegistryKey()); - if (shaderEffect.isPresent()) { - postEffect.beforeRender(); - shaderEffect.get().render(tickDelta); - } + postEffect.beforeRender(); + memoizedShaders.apply(postEffect.getShaderLocation()).render(tickDelta); } } } diff --git a/limlib_registry/gradle.properties b/limlib_registry/gradle.properties index 711daa3..372e722 100644 --- a/limlib_registry/gradle.properties +++ b/limlib_registry/gradle.properties @@ -2,6 +2,6 @@ org.gradle.jvmargs = -Xmx1G org.gradle.parallel = false org.gradle.workers.max = 1 -version=7.3.2 +version=7.3.3 maven_group=net.ludocrypt archives_base_name=limlib-registry \ No newline at end of file diff --git a/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/mixin/DimensionOptionsC_oiwekzxoMixin.java b/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/mixin/DimensionOptionsC_oiwekzxoMixin.java new file mode 100644 index 0000000..e575df0 --- /dev/null +++ b/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/mixin/DimensionOptionsC_oiwekzxoMixin.java @@ -0,0 +1,38 @@ +package net.ludocrypt.limlib.registry.mixin; + +import java.util.Set; + +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.At.Shift; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import com.google.common.collect.Sets; + +import net.ludocrypt.limlib.registry.registration.LimlibWorld; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.unmapped.C_oiwekzxo; +import net.minecraft.world.dimension.DimensionOptions; + +@Mixin(C_oiwekzxo.class) +public class DimensionOptionsC_oiwekzxoMixin { + + @Shadow + @Final + @Mutable + private static Set> f_txffzdje; + + @Inject(method = "", at = @At(value = "INVOKE", target = "Ljava/util/Set;size()I", shift = Shift.BEFORE, ordinal = 0)) + private static void limlib$clinit(CallbackInfo ci) { + Set> dimensions = Sets.newHashSet(); + dimensions.addAll(f_txffzdje); + LimlibWorld.LIMLIB_WORLD.getEntries().forEach((entry) -> dimensions.add(RegistryKey.of(RegistryKeys.DIMENSION, entry.getKey().getValue()))); + f_txffzdje = dimensions; + } + +} diff --git a/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/mixin/GeneratorTypesBootstrapMixin.java b/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/mixin/GeneratorTypesBootstrapMixin.java deleted file mode 100644 index baf5e69..0000000 --- a/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/mixin/GeneratorTypesBootstrapMixin.java +++ /dev/null @@ -1,37 +0,0 @@ -package net.ludocrypt.limlib.registry.mixin; - -import java.util.Map; - -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import com.google.common.collect.Maps; -import com.mojang.datafixers.util.Pair; - -import net.ludocrypt.limlib.registry.registration.LimlibWorld; -import net.minecraft.client.world.GeneratorType; -import net.minecraft.registry.RegistryKey; -import net.minecraft.registry.RegistryKeys; -import net.minecraft.world.dimension.DimensionOptions; -import net.minecraft.world.gen.BootstrapContext; - -@Mixin(targets = "net/minecraft/client/world/GeneratorTypes$Bootstrap") -public class GeneratorTypesBootstrapMixin { - - @Shadow - @Final - private BootstrapContext f_feuzwykz; - - @Inject(method = "Lnet/minecraft/client/world/GeneratorTypes$Bootstrap;createType(Lnet/minecraft/world/dimension/DimensionOptions;)Lnet/minecraft/client/world/GeneratorType;", at = @At("RETURN")) - private void limlib$createPreset(DimensionOptions dimensionOptions, CallbackInfoReturnable ci) { - Map, DimensionOptions> map = Maps.newHashMap(); - map.putAll(((GeneratorTypeAccessor) ci.getReturnValue()).getDimensions()); - LimlibWorld.LIMLIB_WORLD.getEntries().forEach((entry) -> map.put(RegistryKey.of(RegistryKeys.DIMENSION, entry.getKey().getValue()), entry.getValue().getDimensionOptionsSupplier().apply(Pair.of(f_feuzwykz.lookup(RegistryKeys.DIMENSION_TYPE), f_feuzwykz.lookup(RegistryKeys.BIOME))))); - ((GeneratorTypeAccessor) ci.getReturnValue()).setDimensions(map); - } - -} diff --git a/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/mixin/RegistryLoaderMixin.java b/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/mixin/RegistryLoaderMixin.java new file mode 100644 index 0000000..c04c5e2 --- /dev/null +++ b/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/mixin/RegistryLoaderMixin.java @@ -0,0 +1,73 @@ +package net.ludocrypt.limlib.registry.mixin; + +import java.io.Reader; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import org.quiltmc.loader.api.QuiltLoader; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.At.Shift; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import org.spongepowered.asm.mixin.injection.callback.LocalCapture; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.mojang.serialization.Decoder; +import com.mojang.serialization.Lifecycle; + +import net.ludocrypt.limlib.registry.registration.LimlibWorld; +import net.ludocrypt.limlib.registry.registration.LimlibWorld.RegistryProvider; +import net.ludocrypt.limlib.registry.registration.RegistryLoaderBootstrap; +import net.minecraft.registry.DynamicRegistryManager; +import net.minecraft.registry.HolderProvider; +import net.minecraft.registry.MutableRegistry; +import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.RegistryLoader; +import net.minecraft.registry.RegistryOps; +import net.minecraft.registry.ResourceFileNamespace; +import net.minecraft.resource.Resource; +import net.minecraft.resource.ResourceManager; +import net.minecraft.util.Identifier; +import net.minecraft.world.dimension.DimensionOptions; +import net.minecraft.world.dimension.DimensionType; + +@Mixin(RegistryLoader.class) +public class RegistryLoaderMixin { + + @Inject(method = "Lnet/minecraft/registry/RegistryLoader;loadRegistryContents(Lnet/minecraft/registry/RegistryOps$RegistryInfoLookup;Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/registry/RegistryKey;Lnet/minecraft/registry/MutableRegistry;Lcom/mojang/serialization/Decoder;Ljava/util/Map;)V", at = @At(value = "INVOKE", target = "Lcom/mojang/serialization/Decoder;parse(Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;)Lcom/mojang/serialization/DataResult;", shift = Shift.BEFORE), locals = LocalCapture.CAPTURE_FAILHARD) + private static void limlib$loadRegistryContents(RegistryOps.RegistryInfoLookup infoLookup, ResourceManager resourceManager, RegistryKey> registryKey, MutableRegistry registry, Decoder decoder, Map, Exception> readFailures, CallbackInfo ci, String string, ResourceFileNamespace resourceFileNamespace, RegistryOps registryOps, Iterator> var9, Map.Entry entry, Identifier identifier, RegistryKey registryKey2, Resource resource, Reader reader, JsonElement jsonElement) { + if (registryKey2.isOf(RegistryKeys.GENERATOR_TYPE)) { + JsonObject presetType = jsonElement.getAsJsonObject(); + JsonObject dimensions = presetType.get("dimensions").getAsJsonObject(); + LimlibWorld.LIMLIB_WORLD.getEntries().forEach((world) -> dimensions.add(world.getKey().getValue().toString(), DimensionOptions.CODEC.encodeStart(registryOps, world.getValue().getDimensionOptionsSupplier().apply(new RegistryProvider() { + + @Override + public HolderProvider get(RegistryKey> key) { + return registryOps.getHolderProvider(key).get(); + } + + })).result().get())); + } + } + + @SuppressWarnings("unchecked") + @Inject(method = "Lnet/minecraft/registry/RegistryLoader;loadRegistryContents(Lnet/minecraft/registry/RegistryOps$RegistryInfoLookup;Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/registry/RegistryKey;Lnet/minecraft/registry/MutableRegistry;Lcom/mojang/serialization/Decoder;Ljava/util/Map;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/registry/ResourceFileNamespace;findMatchingResources(Lnet/minecraft/resource/ResourceManager;)Ljava/util/Map;", shift = Shift.BEFORE)) + private static void limlib$loadRegistryContents(RegistryOps.RegistryInfoLookup infoLookup, ResourceManager resourceManager, RegistryKey> registryKey, MutableRegistry registry, Decoder decoder, Map, Exception> readFailures, CallbackInfo ci) { + QuiltLoader.getEntrypoints(RegistryLoaderBootstrap.ENTRYPOINT_KEY, RegistryLoaderBootstrap.class).forEach((bootstrap) -> bootstrap.register(infoLookup, registryKey, registry)); + if (registryKey.equals(RegistryKeys.DIMENSION_TYPE)) { + LimlibWorld.LIMLIB_WORLD.getEntries().forEach((world) -> ((MutableRegistry) registry).register(RegistryKey.of(RegistryKeys.DIMENSION_TYPE, world.getKey().getValue()), world.getValue().getDimensionTypeSupplier().get(), Lifecycle.stable())); + } + } + + @Inject(method = "Lnet/minecraft/registry/RegistryLoader;loadRegistriesIntoManager(Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/registry/DynamicRegistryManager;Ljava/util/List;)Lnet/minecraft/registry/DynamicRegistryManager$Frozen;", at = @At("TAIL")) + private static void limlib$loadRegistriesIntoManager(ResourceManager resourceManager, DynamicRegistryManager registryManager, List> decodingData, CallbackInfoReturnable ci) { + LimlibWorld.LOADED_REGISTRY.set(registryManager.freeze()); + } + +} diff --git a/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/mixin/VanillaDynamicRegistriesMixin.java b/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/mixin/VanillaDynamicRegistriesMixin.java index bdce536..f92bedb 100644 --- a/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/mixin/VanillaDynamicRegistriesMixin.java +++ b/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/mixin/VanillaDynamicRegistriesMixin.java @@ -7,7 +7,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import net.ludocrypt.limlib.registry.registration.PreRegistration; +import net.ludocrypt.limlib.registry.registration.DimensionBootstrap; import net.minecraft.registry.VanillaDynamicRegistries; @Mixin(VanillaDynamicRegistries.class) @@ -15,7 +15,7 @@ public class VanillaDynamicRegistriesMixin { @Inject(method = "", at = @At(value = "NEW", target = "net/minecraft/registry/RegistrySetBuilder", shift = Shift.BEFORE, ordinal = 0)) private static void limlib$clinit(CallbackInfo ci) { - QuiltLoader.getEntrypoints(PreRegistration.ENTRYPOINT_KEY, PreRegistration.class).forEach(PreRegistration::register); + QuiltLoader.getEntrypoints(DimensionBootstrap.ENTRYPOINT_KEY, DimensionBootstrap.class).forEach(DimensionBootstrap::register); } } diff --git a/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/mixin/WorldSaveStorageMixin.java b/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/mixin/WorldSaveStorageMixin.java index 0f72013..6718864 100644 --- a/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/mixin/WorldSaveStorageMixin.java +++ b/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/mixin/WorldSaveStorageMixin.java @@ -10,16 +10,16 @@ import com.google.common.collect.Maps; import com.mojang.datafixers.DataFixer; -import com.mojang.datafixers.util.Pair; import com.mojang.serialization.Dynamic; import net.ludocrypt.limlib.registry.registration.LimlibWorld; +import net.ludocrypt.limlib.registry.registration.LimlibWorld.RegistryProvider; import net.minecraft.nbt.NbtOps; import net.minecraft.registry.DynamicRegistryManager; +import net.minecraft.registry.HolderProvider; +import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; -import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.RegistryOps; -import net.minecraft.registry.ServerRegistryLayer; import net.minecraft.world.dimension.DimensionOptions; import net.minecraft.world.storage.WorldSaveStorage; @@ -42,9 +42,16 @@ public class WorldSaveStorageMixin { if (!dimensions.get(key.getValue().toString()).result().isPresent()) { Map, Dynamic> dimensionsMap = Maps.newHashMap(dimensions.getMapValues().result().get()); - DynamicRegistryManager registryManager = ServerRegistryLayer.createLayeredManager().getCompositeManager(); + DynamicRegistryManager registryManager = LimlibWorld.LOADED_REGISTRY.get(); - dimensionsMap.put(dimensions.createString(key.getValue().toString()), new Dynamic(dimensions.getOps(), (T) DimensionOptions.CODEC.encodeStart(RegistryOps.create(NbtOps.INSTANCE, registryManager), world.getDimensionOptionsSupplier().apply(Pair.of(registryManager.getLookup(RegistryKeys.DIMENSION_TYPE).get(), registryManager.getLookup(RegistryKeys.BIOME).get()))).result().get())); + dimensionsMap.put(dimensions.createString(key.getValue().toString()), new Dynamic(dimensions.getOps(), (T) DimensionOptions.CODEC.encodeStart(RegistryOps.create(NbtOps.INSTANCE, registryManager), world.getDimensionOptionsSupplier().apply(new RegistryProvider() { + + @Override + public HolderProvider get(RegistryKey> key) { + return registryManager.getLookup(key).get(); + } + + })).result().get())); in = in.set("dimensions", in.createMap(dimensionsMap)); } return in; diff --git a/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/registration/PreRegistration.java b/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/registration/DimensionBootstrap.java similarity index 69% rename from limlib_registry/src/main/java/net/ludocrypt/limlib/registry/registration/PreRegistration.java rename to limlib_registry/src/main/java/net/ludocrypt/limlib/registry/registration/DimensionBootstrap.java index 1de36fe..ce869b6 100644 --- a/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/registration/PreRegistration.java +++ b/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/registration/DimensionBootstrap.java @@ -1,19 +1,19 @@ package net.ludocrypt.limlib.registry.registration; /** - * A built-in registry helper. + * Bootstrap Registration for World's *

* In {@code quilt.mod.json}, the entrypoint is defined with * {@value #ENTRYPOINT_KEY} key. *

*/ -public interface PreRegistration { +public interface DimensionBootstrap { /** * Represents the key which this entrypoint is defined with, whose value is * {@value}. */ - public static String ENTRYPOINT_KEY = "limlib:pre_registration"; + public static String ENTRYPOINT_KEY = "limlib:dimension_bootstrap"; /** * Registers everything. diff --git a/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/registration/LimlibWorld.java b/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/registration/LimlibWorld.java index 5d30ed7..f96daf3 100644 --- a/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/registration/LimlibWorld.java +++ b/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/registration/LimlibWorld.java @@ -1,21 +1,19 @@ package net.ludocrypt.limlib.registry.registration; -import java.util.Map; import java.util.concurrent.atomic.AtomicReference; -import org.jetbrains.annotations.Nullable; - import com.google.common.base.Function; import com.google.common.base.Supplier; -import com.google.common.collect.Maps; -import com.mojang.datafixers.util.Pair; +import com.google.common.base.Suppliers; import net.fabricmc.fabric.api.event.registry.FabricRegistryBuilder; import net.fabricmc.fabric.api.event.registry.RegistryAttribute; +import net.minecraft.registry.DynamicRegistryManager; import net.minecraft.registry.HolderProvider; +import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; import net.minecraft.registry.SimpleRegistry; import net.minecraft.util.Identifier; -import net.minecraft.world.biome.Biome; import net.minecraft.world.dimension.DimensionOptions; import net.minecraft.world.dimension.DimensionType; @@ -27,56 +25,25 @@ public class LimlibWorld { public static final SimpleRegistry LIMLIB_WORLD = FabricRegistryBuilder.createSimple(LimlibWorld.class, new Identifier("limlib", "limlib_world")).attribute(RegistryAttribute.SYNCED).buildAndRegister(); private Supplier dimensionTypeSupplier; + private Function dimensionOptionsSupplier; - private Function, HolderProvider>, DimensionOptions> dimensionOptionsSupplier; + public static final AtomicReference LOADED_REGISTRY = new AtomicReference(); - public LimlibWorld(Supplier dimensionTypeSupplier, Function, HolderProvider>, DimensionOptions> dimensionOptionsSupplier) { - this.dimensionTypeSupplier = memoize(dimensionTypeSupplier); - this.dimensionOptionsSupplier = memoize(dimensionOptionsSupplier); + public LimlibWorld(Supplier dimensionTypeSupplier, Function dimensionOptionsSupplier) { + this.dimensionTypeSupplier = Suppliers.memoize(dimensionTypeSupplier); + this.dimensionOptionsSupplier = dimensionOptionsSupplier; } public Supplier getDimensionTypeSupplier() { return dimensionTypeSupplier; } - public Function, HolderProvider>, DimensionOptions> getDimensionOptionsSupplier() { + public Function getDimensionOptionsSupplier() { return dimensionOptionsSupplier; } - private Supplier memoize(Supplier delegate) { - return new Supplier() { - - private final AtomicReference cache = new AtomicReference(); - - @Override - public @Nullable T get() { - - if (cache.get() == null) { - cache.set(delegate.get()); - } - - return cache.get(); - } - - }; - } - - private Function memoize(Function delegate) { - return new Function() { - - private final Map cache = Maps.newHashMap(); - - @Override - public R apply(T in) { - - if (!cache.containsKey(in)) { - cache.put(in, delegate.apply(in)); - } - - return cache.get(in); - } - - }; + public static interface RegistryProvider { + public HolderProvider get(RegistryKey> key); } } diff --git a/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/registration/RegistryLoaderBootstrap.java b/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/registration/RegistryLoaderBootstrap.java new file mode 100644 index 0000000..a8afb38 --- /dev/null +++ b/limlib_registry/src/main/java/net/ludocrypt/limlib/registry/registration/RegistryLoaderBootstrap.java @@ -0,0 +1,28 @@ +package net.ludocrypt.limlib.registry.registration; + +import net.minecraft.registry.MutableRegistry; +import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryOps; + +/** + * Bootstrap Registration for non json registered things. + *

+ * In {@code quilt.mod.json}, the entrypoint is defined with + * {@value #ENTRYPOINT_KEY} key. + *

+ */ +public interface RegistryLoaderBootstrap { + + /** + * Represents the key which this entrypoint is defined with, whose value is + * {@value}. + */ + public static String ENTRYPOINT_KEY = "limlib:registry_loader_bootstrap"; + + /** + * Registers everything. + */ + void register(RegistryOps.RegistryInfoLookup infoLookup, RegistryKey> registryKey, MutableRegistry registry); + +} diff --git a/limlib_registry/src/main/resources/limlib.registry.mixins.json b/limlib_registry/src/main/resources/limlib.registry.mixins.json index 61c9fa7..bead081 100644 --- a/limlib_registry/src/main/resources/limlib.registry.mixins.json +++ b/limlib_registry/src/main/resources/limlib.registry.mixins.json @@ -5,8 +5,9 @@ "compatibilityLevel": "JAVA_17", "mixins": [ "BuiltinDimensionTypesMixin", + "DimensionOptionsC_oiwekzxoMixin", "GeneratorTypeAccessor", - "GeneratorTypesBootstrapMixin", + "RegistryLoaderMixin", "ServerPlayerEntityMixin", "VanillaDynamicRegistriesMixin", "WorldSaveStorageMixin" diff --git a/limlib_render/gradle.properties b/limlib_render/gradle.properties index 7d6f3aa..0251f7c 100644 --- a/limlib_render/gradle.properties +++ b/limlib_render/gradle.properties @@ -2,6 +2,6 @@ org.gradle.jvmargs = -Xmx1G org.gradle.parallel = false org.gradle.workers.max = 1 -version=7.3.2 +version=7.3.3 maven_group=net.ludocrypt archives_base_name=limlib-render \ No newline at end of file diff --git a/limlib_world/gradle.properties b/limlib_world/gradle.properties index 3260239..a7401f0 100644 --- a/limlib_world/gradle.properties +++ b/limlib_world/gradle.properties @@ -2,6 +2,6 @@ org.gradle.jvmargs = -Xmx1G org.gradle.parallel = false org.gradle.workers.max = 1 -version=7.3.2 +version=7.3.3 maven_group=net.ludocrypt archives_base_name=limlib-world \ No newline at end of file