Fixed Registry handling
This commit is contained in:
parent
73687e3401
commit
95ea99e44d
13 changed files with 289 additions and 75 deletions
23
bclib.gradle
23
bclib.gradle
|
@ -26,6 +26,29 @@ repositories {
|
||||||
|
|
||||||
loom {
|
loom {
|
||||||
accessWidenerPath = file("src/main/resources/bclib.accesswidener")
|
accessWidenerPath = file("src/main/resources/bclib.accesswidener")
|
||||||
|
runs {
|
||||||
|
// This adds a new gradle task that runs the datagen API: "gradlew runDatagenClient"
|
||||||
|
datagenClient {
|
||||||
|
inherit client
|
||||||
|
name "Data Generation"
|
||||||
|
vmArg "-Dfabric-api.datagen"
|
||||||
|
vmArg "-Dfabric-api.datagen.output-dir=${file("src/main/generated")}"
|
||||||
|
vmArg "-Dfabric-api.datagen.strict-validation"
|
||||||
|
|
||||||
|
runDir "build/datagen"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the datagenned files into the jar.
|
||||||
|
sourceSets {
|
||||||
|
main {
|
||||||
|
resources {
|
||||||
|
srcDirs += [
|
||||||
|
'src/main/generated'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|
|
@ -10,6 +10,7 @@ import net.minecraft.core.Holder;
|
||||||
import net.minecraft.core.MappedRegistry;
|
import net.minecraft.core.MappedRegistry;
|
||||||
import net.minecraft.core.Registry;
|
import net.minecraft.core.Registry;
|
||||||
import net.minecraft.core.RegistryAccess;
|
import net.minecraft.core.RegistryAccess;
|
||||||
|
import net.minecraft.data.BuiltinRegistries;
|
||||||
import net.minecraft.resources.ResourceKey;
|
import net.minecraft.resources.ResourceKey;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.util.KeyDispatchDataCodec;
|
import net.minecraft.util.KeyDispatchDataCodec;
|
||||||
|
@ -87,40 +88,37 @@ public class BCLBiomeRegistry {
|
||||||
|
|
||||||
@ApiStatus.Internal
|
@ApiStatus.Internal
|
||||||
public static Holder<BCLBiome> bootstrap(Registry<BCLBiome> registry) {
|
public static Holder<BCLBiome> bootstrap(Registry<BCLBiome> registry) {
|
||||||
//TODO:1.19.3 Registry is frozen at this point
|
BuiltinRegistries.register(registry, BiomeAPI.SMALL_END_ISLANDS.getBCLBiomeKey(), BiomeAPI.SMALL_END_ISLANDS);
|
||||||
// BuiltinRegistries.register(registry, BiomeAPI.SMALL_END_ISLANDS.getBCLBiomeKey(), BiomeAPI.SMALL_END_ISLANDS);
|
BuiltinRegistries.register(registry, BiomeAPI.END_BARRENS.getBCLBiomeKey(), BiomeAPI.END_BARRENS);
|
||||||
// BuiltinRegistries.register(registry, BiomeAPI.END_BARRENS.getBCLBiomeKey(), BiomeAPI.END_BARRENS);
|
BuiltinRegistries.register(registry, BiomeAPI.END_HIGHLANDS.getBCLBiomeKey(), BiomeAPI.END_HIGHLANDS);
|
||||||
// BuiltinRegistries.register(registry, BiomeAPI.END_HIGHLANDS.getBCLBiomeKey(), BiomeAPI.END_HIGHLANDS);
|
BuiltinRegistries.register(registry, BiomeAPI.END_MIDLANDS.getBCLBiomeKey(), BiomeAPI.END_MIDLANDS);
|
||||||
// BuiltinRegistries.register(registry, BiomeAPI.END_MIDLANDS.getBCLBiomeKey(), BiomeAPI.END_MIDLANDS);
|
BuiltinRegistries.register(registry, BiomeAPI.THE_END.getBCLBiomeKey(), BiomeAPI.THE_END);
|
||||||
// BuiltinRegistries.register(registry, BiomeAPI.THE_END.getBCLBiomeKey(), BiomeAPI.THE_END);
|
BuiltinRegistries.register(
|
||||||
// BuiltinRegistries.register(
|
registry,
|
||||||
// registry,
|
BiomeAPI.BASALT_DELTAS_BIOME.getBCLBiomeKey(),
|
||||||
// BiomeAPI.BASALT_DELTAS_BIOME.getBCLBiomeKey(),
|
BiomeAPI.BASALT_DELTAS_BIOME
|
||||||
// BiomeAPI.BASALT_DELTAS_BIOME
|
);
|
||||||
// );
|
BuiltinRegistries.register(
|
||||||
// BuiltinRegistries.register(
|
registry,
|
||||||
// registry,
|
BiomeAPI.SOUL_SAND_VALLEY_BIOME.getBCLBiomeKey(),
|
||||||
// BiomeAPI.SOUL_SAND_VALLEY_BIOME.getBCLBiomeKey(),
|
BiomeAPI.SOUL_SAND_VALLEY_BIOME
|
||||||
// BiomeAPI.SOUL_SAND_VALLEY_BIOME
|
);
|
||||||
// );
|
BuiltinRegistries.register(
|
||||||
// BuiltinRegistries.register(
|
registry,
|
||||||
// registry,
|
BiomeAPI.WARPED_FOREST_BIOME.getBCLBiomeKey(),
|
||||||
// BiomeAPI.WARPED_FOREST_BIOME.getBCLBiomeKey(),
|
BiomeAPI.WARPED_FOREST_BIOME
|
||||||
// BiomeAPI.WARPED_FOREST_BIOME
|
);
|
||||||
// );
|
BuiltinRegistries.register(
|
||||||
// BuiltinRegistries.register(
|
registry,
|
||||||
// registry,
|
BiomeAPI.CRIMSON_FOREST_BIOME.getBCLBiomeKey(),
|
||||||
// BiomeAPI.CRIMSON_FOREST_BIOME.getBCLBiomeKey(),
|
BiomeAPI.CRIMSON_FOREST_BIOME
|
||||||
// BiomeAPI.CRIMSON_FOREST_BIOME
|
);
|
||||||
// );
|
BuiltinRegistries.register(
|
||||||
// BuiltinRegistries.register(
|
registry,
|
||||||
// registry,
|
BiomeAPI.NETHER_WASTES_BIOME.getBCLBiomeKey(),
|
||||||
// BiomeAPI.NETHER_WASTES_BIOME.getBCLBiomeKey(),
|
BiomeAPI.NETHER_WASTES_BIOME
|
||||||
// BiomeAPI.NETHER_WASTES_BIOME
|
);
|
||||||
// );
|
return BuiltinRegistries.register(registry, EMPTY_BIOME.getBCLBiomeKey(), EMPTY_BIOME);
|
||||||
// return BuiltinRegistries.register(registry, EMPTY_BIOME.getBCLBiomeKey(), EMPTY_BIOME);
|
|
||||||
|
|
||||||
return Holder.direct(EMPTY_BIOME);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static BCLBiome get(ResourceLocation loc) {
|
public static BCLBiome get(ResourceLocation loc) {
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
package org.betterx.bclib.mixin.common;
|
package org.betterx.bclib.mixin.common;
|
||||||
|
|
||||||
|
import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeRegistry;
|
||||||
|
|
||||||
import com.mojang.serialization.Lifecycle;
|
import com.mojang.serialization.Lifecycle;
|
||||||
|
import net.minecraft.core.MappedRegistry;
|
||||||
import net.minecraft.core.Registry;
|
import net.minecraft.core.Registry;
|
||||||
import net.minecraft.core.WritableRegistry;
|
import net.minecraft.core.WritableRegistry;
|
||||||
import net.minecraft.data.BuiltinRegistries;
|
import net.minecraft.data.BuiltinRegistries;
|
||||||
|
@ -27,12 +30,11 @@ public abstract class BuiltinRegistriesMixin {
|
||||||
//this needs to be added BEFORE the WORLD_PRESET-Registry. Otherwise decoding will fail!
|
//this needs to be added BEFORE the WORLD_PRESET-Registry. Otherwise decoding will fail!
|
||||||
@Inject(method = "<clinit>", at = @At(value = "INVOKE", target = "Lnet/minecraft/data/BuiltinRegistries;registerSimple(Lnet/minecraft/resources/ResourceKey;Lnet/minecraft/data/BuiltinRegistries$RegistryBootstrap;)Lnet/minecraft/core/Registry;", ordinal = 0))
|
@Inject(method = "<clinit>", at = @At(value = "INVOKE", target = "Lnet/minecraft/data/BuiltinRegistries;registerSimple(Lnet/minecraft/resources/ResourceKey;Lnet/minecraft/data/BuiltinRegistries$RegistryBootstrap;)Lnet/minecraft/core/Registry;", ordinal = 0))
|
||||||
private static void bcl_registerBuiltin(CallbackInfo ci) {
|
private static void bcl_registerBuiltin(CallbackInfo ci) {
|
||||||
//TODO: 1.19.3 reenable
|
BCLBiomeRegistry.BUILTIN_BCL_BIOMES = internalRegister(
|
||||||
// BCLBiomeRegistry.BUILTIN_BCL_BIOMES = internalRegister(
|
BCLBiomeRegistry.BCL_BIOMES_REGISTRY,
|
||||||
// BCLBiomeRegistry.BCL_BIOMES_REGISTRY,
|
(MappedRegistry) BCLBiomeRegistry.BUILTIN_BCL_BIOMES,
|
||||||
// (MappedRegistry) BCLBiomeRegistry.BUILTIN_BCL_BIOMES,
|
BCLBiomeRegistry::bootstrap,
|
||||||
// BCLBiomeRegistry::bootstrap,
|
Lifecycle.stable()
|
||||||
// Lifecycle.stable()
|
);
|
||||||
// );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,16 @@
|
||||||
package org.betterx.bclib.registry;
|
package org.betterx.bclib.registry;
|
||||||
|
|
||||||
|
import org.betterx.bclib.client.gui.screens.WorldSetupScreen;
|
||||||
|
import org.betterx.worlds.together.worldPreset.client.WorldPresetsClient;
|
||||||
|
|
||||||
import net.fabricmc.api.EnvType;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.Environment;
|
import net.fabricmc.api.Environment;
|
||||||
|
|
||||||
@Environment(EnvType.CLIENT)
|
@Environment(EnvType.CLIENT)
|
||||||
public class PresetsRegistryClient {
|
public class PresetsRegistryClient {
|
||||||
public static void onLoad() {
|
public static void onLoad() {
|
||||||
//TODO:1.19.3 Disabled for now
|
WorldPresetsClient.registerCustomizeUI(PresetsRegistry.BCL_WORLD, (createWorldScreen, worldCreationContext) -> {
|
||||||
// WorldPresetsClient.registerCustomizeUI(PresetsRegistry.BCL_WORLD, (createWorldScreen, worldCreationContext) -> {
|
return new WorldSetupScreen(createWorldScreen, worldCreationContext);
|
||||||
// return new WorldSetupScreen(createWorldScreen, worldCreationContext);
|
});
|
||||||
// });
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,121 @@
|
||||||
|
package org.betterx.worlds.together;
|
||||||
|
|
||||||
|
import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiome;
|
||||||
|
import org.betterx.bclib.api.v2.levelgen.biomes.BCLBiomeRegistry;
|
||||||
|
import org.betterx.worlds.together.surfaceRules.AssignedSurfaceRule;
|
||||||
|
import org.betterx.worlds.together.surfaceRules.SurfaceRuleRegistry;
|
||||||
|
|
||||||
|
import com.mojang.serialization.DynamicOps;
|
||||||
|
import com.mojang.serialization.Encoder;
|
||||||
|
import com.mojang.serialization.JsonOps;
|
||||||
|
import net.minecraft.core.Registry;
|
||||||
|
import net.minecraft.core.RegistryAccess;
|
||||||
|
import net.minecraft.data.BuiltinRegistries;
|
||||||
|
import net.minecraft.data.CachedOutput;
|
||||||
|
import net.minecraft.data.DataProvider;
|
||||||
|
import net.minecraft.data.PackOutput;
|
||||||
|
import net.minecraft.resources.RegistryDataLoader;
|
||||||
|
import net.minecraft.resources.RegistryOps;
|
||||||
|
import net.minecraft.resources.ResourceKey;
|
||||||
|
|
||||||
|
import net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint;
|
||||||
|
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator;
|
||||||
|
import net.fabricmc.fabric.api.datagen.v1.provider.FabricBuiltinRegistriesProvider;
|
||||||
|
|
||||||
|
import com.google.gson.JsonElement;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public class WorldsTogetherDatagen implements DataGeneratorEntrypoint {
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) {
|
||||||
|
fabricDataGenerator.addProvider(FabricBuiltinRegistriesProvider.forCurrentMod()
|
||||||
|
.apply(fabricDataGenerator));
|
||||||
|
fabricDataGenerator.addProvider(CustomRegistriesDataProvider::new);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class CustomRegistriesDataProvider implements DataProvider {
|
||||||
|
public static final List<RegistryDataLoader.RegistryData<?>> REGISTRIES = List.of(
|
||||||
|
new RegistryDataLoader.RegistryData<>(BCLBiomeRegistry.BCL_BIOMES_REGISTRY, BCLBiome.CODEC),
|
||||||
|
new RegistryDataLoader.RegistryData<>(
|
||||||
|
SurfaceRuleRegistry.SURFACE_RULES_REGISTRY,
|
||||||
|
AssignedSurfaceRule.CODEC
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
private final PackOutput output;
|
||||||
|
|
||||||
|
public CustomRegistriesDataProvider(FabricDataGenerator generator) {
|
||||||
|
this.output = generator.getVanillaPackOutput();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run(CachedOutput cachedOutput) {
|
||||||
|
RegistryAccess.Frozen registryAccess = BuiltinRegistries.createAccess();
|
||||||
|
RegistryOps<JsonElement> dynamicOps = RegistryOps.create(JsonOps.INSTANCE, registryAccess);
|
||||||
|
REGISTRIES.forEach(registryData -> this.dumpRegistryCap(
|
||||||
|
cachedOutput,
|
||||||
|
registryAccess,
|
||||||
|
dynamicOps,
|
||||||
|
(RegistryDataLoader.RegistryData) registryData
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
private <T> void dumpRegistryCap(
|
||||||
|
CachedOutput cachedOutput,
|
||||||
|
RegistryAccess registryAccess,
|
||||||
|
DynamicOps<JsonElement> dynamicOps,
|
||||||
|
RegistryDataLoader.RegistryData<T> registryData
|
||||||
|
) {
|
||||||
|
ResourceKey<? extends Registry<T>> resourceKey = registryData.key();
|
||||||
|
Registry<T> registry = registryAccess.registryOrThrow(resourceKey);
|
||||||
|
PackOutput.PathProvider pathProvider = this.output.createPathProvider(
|
||||||
|
PackOutput.Target.DATA_PACK,
|
||||||
|
resourceKey.location().getPath()
|
||||||
|
);
|
||||||
|
for (Map.Entry<ResourceKey<T>, T> entry : registry.entrySet()) {
|
||||||
|
dumpValue(
|
||||||
|
pathProvider.json(entry.getKey().location()),
|
||||||
|
cachedOutput,
|
||||||
|
dynamicOps,
|
||||||
|
registryData.elementCodec(),
|
||||||
|
entry.getValue()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static <E> void dumpValue(
|
||||||
|
Path path,
|
||||||
|
CachedOutput cachedOutput,
|
||||||
|
DynamicOps<JsonElement> dynamicOps,
|
||||||
|
Encoder<E> encoder,
|
||||||
|
E object
|
||||||
|
) {
|
||||||
|
try {
|
||||||
|
Optional<JsonElement> optional = encoder.encodeStart(dynamicOps, object)
|
||||||
|
.resultOrPartial(string -> WorldsTogether.LOGGER.error(
|
||||||
|
"Couldn't serialize element {}: {}",
|
||||||
|
path,
|
||||||
|
string
|
||||||
|
));
|
||||||
|
if (optional.isPresent()) {
|
||||||
|
DataProvider.saveStable(cachedOutput, optional.get(), path);
|
||||||
|
}
|
||||||
|
} catch (IOException iOException) {
|
||||||
|
WorldsTogether.LOGGER.error("Couldn't save element {}", path, iOException);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "BCL Registries";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
package org.betterx.worlds.together.mixin.common;
|
||||||
|
|
||||||
|
import net.minecraft.data.Main;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
|
||||||
|
@Mixin(Main.class)
|
||||||
|
public class MainDataMixin {
|
||||||
|
// @Inject(method = "createStandardGenerator", at = @At("RETURN"))
|
||||||
|
// private static void wt_createStandardGenerator(
|
||||||
|
// Path path,
|
||||||
|
// Collection<Path> collection,
|
||||||
|
// boolean isClient,
|
||||||
|
// boolean isServer,
|
||||||
|
// boolean isDev,
|
||||||
|
// boolean reports,
|
||||||
|
// boolean validate,
|
||||||
|
// WorldVersion worldVersion,
|
||||||
|
// boolean alwaysGenerate,
|
||||||
|
// CallbackInfoReturnable<DataGenerator> cir
|
||||||
|
// ) {
|
||||||
|
// DataGenerator dataGenerator = cir.getReturnValue();
|
||||||
|
// dataGenerator.addProvider(isServer, new SurfaceRulesDatapackGenerator(dataGenerator.getVanillaPackOutput()));
|
||||||
|
// cir.setReturnValue(dataGenerator);
|
||||||
|
// }
|
||||||
|
}
|
|
@ -1,12 +1,38 @@
|
||||||
package org.betterx.worlds.together.mixin.common;
|
package org.betterx.worlds.together.mixin.common;
|
||||||
|
|
||||||
import net.minecraft.core.RegistryAccess;
|
import org.betterx.worlds.together.surfaceRules.AssignedSurfaceRule;
|
||||||
|
import org.betterx.worlds.together.surfaceRules.SurfaceRuleRegistry;
|
||||||
|
|
||||||
|
import net.minecraft.resources.RegistryDataLoader;
|
||||||
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Mutable;
|
||||||
|
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
@Mixin(RegistryAccess.class)
|
import java.util.ArrayList;
|
||||||
public interface RegistryAccessMixin {
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mixin(RegistryDataLoader.class)
|
||||||
|
public abstract class RegistryAccessMixin {
|
||||||
|
@Accessor("WORLDGEN_REGISTRIES")
|
||||||
|
@Mutable
|
||||||
|
static void wt_set_WORLDGEN_REGISTRIES(List<RegistryDataLoader.RegistryData<?>> list) {
|
||||||
|
//SHADOWED
|
||||||
|
}
|
||||||
|
|
||||||
|
@Inject(method = "<clinit>", at = @At("TAIL"))
|
||||||
|
private static void wt_init(CallbackInfo ci) {
|
||||||
|
List<RegistryDataLoader.RegistryData<?>> enhanced = new ArrayList(RegistryDataLoader.WORLDGEN_REGISTRIES.size() + 1);
|
||||||
|
enhanced.addAll(RegistryDataLoader.WORLDGEN_REGISTRIES);
|
||||||
|
enhanced.add(new RegistryDataLoader.RegistryData<>(
|
||||||
|
SurfaceRuleRegistry.SURFACE_RULES_REGISTRY,
|
||||||
|
AssignedSurfaceRule.CODEC
|
||||||
|
));
|
||||||
|
wt_set_WORLDGEN_REGISTRIES(enhanced);
|
||||||
|
}
|
||||||
//TODO: 1.19.3 This will probably be a new kind of DataProvider.
|
//TODO: 1.19.3 This will probably be a new kind of DataProvider.
|
||||||
// @ModifyArg(method = "<clinit>", at = @At(value = "INVOKE", target = "Lnet/minecraft/Util;make(Ljava/util/function/Supplier;)Ljava/lang/Object;"))
|
// @ModifyArg(method = "<clinit>", at = @At(value = "INVOKE", target = "Lnet/minecraft/Util;make(Ljava/util/function/Supplier;)Ljava/lang/Object;"))
|
||||||
// private static Supplier<ImmutableMap<ResourceKey<Registry<?>>, RegistryAccess.RegistryData<?>>> together_addRegistry(
|
// private static Supplier<ImmutableMap<ResourceKey<Registry<?>>, RegistryAccess.RegistryData<?>>> together_addRegistry(
|
||||||
|
|
|
@ -1,9 +1,13 @@
|
||||||
package org.betterx.worlds.together.mixin.common;
|
package org.betterx.worlds.together.mixin.common;
|
||||||
|
|
||||||
|
import org.betterx.worlds.together.levelgen.WorldGenUtil;
|
||||||
|
import org.betterx.worlds.together.worldPreset.WorldPresets;
|
||||||
|
|
||||||
import net.minecraft.core.Holder;
|
import net.minecraft.core.Holder;
|
||||||
import net.minecraft.core.Registry;
|
import net.minecraft.core.Registry;
|
||||||
import net.minecraft.world.level.biome.Biome;
|
import net.minecraft.world.level.biome.Biome;
|
||||||
import net.minecraft.world.level.dimension.DimensionType;
|
import net.minecraft.world.level.dimension.DimensionType;
|
||||||
|
import net.minecraft.world.level.dimension.LevelStem;
|
||||||
import net.minecraft.world.level.levelgen.NoiseGeneratorSettings;
|
import net.minecraft.world.level.levelgen.NoiseGeneratorSettings;
|
||||||
import net.minecraft.world.level.levelgen.presets.WorldPreset;
|
import net.minecraft.world.level.levelgen.presets.WorldPreset;
|
||||||
import net.minecraft.world.level.levelgen.structure.StructureSet;
|
import net.minecraft.world.level.levelgen.structure.StructureSet;
|
||||||
|
@ -12,6 +16,8 @@ import net.minecraft.world.level.levelgen.synth.NormalNoise;
|
||||||
import org.spongepowered.asm.mixin.Final;
|
import org.spongepowered.asm.mixin.Final;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.ModifyArg;
|
||||||
|
|
||||||
@Mixin(net.minecraft.world.level.levelgen.presets.WorldPresets.Bootstrap.class)
|
@Mixin(net.minecraft.world.level.levelgen.presets.WorldPresets.Bootstrap.class)
|
||||||
public abstract class WorldPresetsBootstrapMixin {
|
public abstract class WorldPresetsBootstrapMixin {
|
||||||
|
@ -43,26 +49,26 @@ public abstract class WorldPresetsBootstrapMixin {
|
||||||
//see WorldPresets.register
|
//see WorldPresets.register
|
||||||
|
|
||||||
//TODO: 1.19.3
|
//TODO: 1.19.3
|
||||||
// @ModifyArg(method = "run", at = @At(value = "INVOKE", ordinal = 0, target = "Lnet/minecraft/world/level/levelgen/presets/WorldPresets$Bootstrap;registerCustomOverworldPreset(Lnet/minecraft/resources/ResourceKey;Lnet/minecraft/world/level/dimension/LevelStem;)Lnet/minecraft/core/Holder;"))
|
@ModifyArg(method = "run", at = @At(value = "INVOKE", ordinal = 0, target = "Lnet/minecraft/world/level/levelgen/presets/WorldPresets$Bootstrap;registerCustomOverworldPreset(Lnet/minecraft/resources/ResourceKey;Lnet/minecraft/world/level/dimension/LevelStem;)Lnet/minecraft/core/Holder;"))
|
||||||
// private LevelStem bcl_getOverworldStem(LevelStem overworldStem) {
|
private LevelStem bcl_getOverworldStem(LevelStem overworldStem) {
|
||||||
// WorldGenUtil.Context netherContext = new WorldGenUtil.Context(
|
WorldGenUtil.Context netherContext = new WorldGenUtil.Context(
|
||||||
// this.biomes,
|
this.biomes,
|
||||||
// this.netherDimensionType,
|
this.netherDimensionType,
|
||||||
// this.structureSets,
|
this.structureSets,
|
||||||
// this.noises,
|
this.noises,
|
||||||
// this.netherNoiseSettings
|
this.netherNoiseSettings
|
||||||
// );
|
);
|
||||||
// WorldGenUtil.Context endContext = new WorldGenUtil.Context(
|
WorldGenUtil.Context endContext = new WorldGenUtil.Context(
|
||||||
// this.biomes,
|
this.biomes,
|
||||||
// this.endDimensionType,
|
this.endDimensionType,
|
||||||
// this.structureSets,
|
this.structureSets,
|
||||||
// this.noises,
|
this.noises,
|
||||||
// this.endNoiseSettings
|
this.endNoiseSettings
|
||||||
// );
|
);
|
||||||
//
|
|
||||||
// WorldPresets.bootstrapPresets(presets, overworldStem, netherContext, endContext);
|
WorldPresets.bootstrapPresets(presets, overworldStem, netherContext, endContext);
|
||||||
//
|
|
||||||
// return overworldStem;
|
return overworldStem;
|
||||||
// }
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,6 +56,14 @@ public final class Logger {
|
||||||
LOGGER.error(modPref + message, obj, ex);
|
LOGGER.error(modPref + message, obj, ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void error(String message, Object o1, Object o2, Exception ex) {
|
||||||
|
LOGGER.error(modPref + message, o1, o2, ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void error(String message, Object o1, Object o2) {
|
||||||
|
LOGGER.error(modPref + message, o1, o2);
|
||||||
|
}
|
||||||
|
|
||||||
public void error(String message, Exception ex) {
|
public void error(String message, Exception ex) {
|
||||||
LOGGER.error(modPref + message, ex);
|
LOGGER.error(modPref + message, ex);
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,6 @@ import net.minecraft.client.gui.screens.worldselection.WorldGenSettingsComponent
|
||||||
import net.minecraft.core.Holder;
|
import net.minecraft.core.Holder;
|
||||||
import net.minecraft.core.Registry;
|
import net.minecraft.core.Registry;
|
||||||
import net.minecraft.core.RegistryAccess;
|
import net.minecraft.core.RegistryAccess;
|
||||||
import net.minecraft.data.BuiltinRegistries;
|
|
||||||
import net.minecraft.nbt.Tag;
|
import net.minecraft.nbt.Tag;
|
||||||
import net.minecraft.resources.RegistryOps;
|
import net.minecraft.resources.RegistryOps;
|
||||||
import net.minecraft.resources.ResourceKey;
|
import net.minecraft.resources.ResourceKey;
|
||||||
|
@ -44,7 +43,8 @@ public class WorldBootstrap {
|
||||||
|
|
||||||
public static RegistryAccess getLastRegistryAccessOrElseBuiltin() {
|
public static RegistryAccess getLastRegistryAccessOrElseBuiltin() {
|
||||||
//TODO: 1.19.3 ther no longer is a general builtin ACCESS
|
//TODO: 1.19.3 ther no longer is a general builtin ACCESS
|
||||||
if (LAST_REGISTRY_ACCESS == null) return BuiltinRegistries.createAccess();
|
// if (LAST_REGISTRY_ACCESS == null)
|
||||||
|
// return BuiltinRegistries.;
|
||||||
return LAST_REGISTRY_ACCESS;
|
return LAST_REGISTRY_ACCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,8 +31,7 @@ public class WorldPresets {
|
||||||
private static ResourceKey<WorldPreset> DEFAULT = net.minecraft.world.level.levelgen.presets.WorldPresets.NORMAL;
|
private static ResourceKey<WorldPreset> DEFAULT = net.minecraft.world.level.levelgen.presets.WorldPresets.NORMAL;
|
||||||
|
|
||||||
public static Holder<WorldPreset> get(RegistryAccess access, ResourceKey<WorldPreset> key) {
|
public static Holder<WorldPreset> get(RegistryAccess access, ResourceKey<WorldPreset> key) {
|
||||||
//TODO: 1.19.3 there is no longer a builtin registry acccess
|
return access
|
||||||
return ((access != null) ? access : BuiltinRegistries.createAccess())
|
|
||||||
.registryOrThrow(Registry.WORLD_PRESET_REGISTRY)
|
.registryOrThrow(Registry.WORLD_PRESET_REGISTRY)
|
||||||
.getHolderOrThrow(key);
|
.getHolderOrThrow(key);
|
||||||
}
|
}
|
||||||
|
@ -90,8 +89,7 @@ public class WorldPresets {
|
||||||
|
|
||||||
for (Map.Entry<ResourceKey<WorldPreset>, PresetBuilder> e : BUILDERS.entrySet()) {
|
for (Map.Entry<ResourceKey<WorldPreset>, PresetBuilder> e : BUILDERS.entrySet()) {
|
||||||
TogetherWorldPreset preset = e.getValue().create(overworldStem, netherContext, endContext);
|
TogetherWorldPreset preset = e.getValue().create(overworldStem, netherContext, endContext);
|
||||||
//TODO: 1.19.3 already frozen
|
BuiltinRegistries.register(presets, e.getKey(), preset);
|
||||||
//BuiltinRegistries.register(presets, e.getKey(), preset);
|
|
||||||
}
|
}
|
||||||
BUILDERS = null;
|
BUILDERS = null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,9 @@
|
||||||
],
|
],
|
||||||
"emi": [
|
"emi": [
|
||||||
"org.betterx.bclib.integration.emi.EMIPlugin"
|
"org.betterx.bclib.integration.emi.EMIPlugin"
|
||||||
|
],
|
||||||
|
"fabric-datagen": [
|
||||||
|
"org.betterx.worlds.together.WorldsTogetherDatagen"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"accessWidener": "bclib.accesswidener",
|
"accessWidener": "bclib.accesswidener",
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
"BuiltinRegistriesMixin",
|
"BuiltinRegistriesMixin",
|
||||||
"DedicatedServerPropertiesMixin",
|
"DedicatedServerPropertiesMixin",
|
||||||
"DiggerItemAccessor",
|
"DiggerItemAccessor",
|
||||||
|
"MainDataMixin",
|
||||||
"MainMixin",
|
"MainMixin",
|
||||||
"MinecraftServerMixin",
|
"MinecraftServerMixin",
|
||||||
"MinecraftServerMixinLate",
|
"MinecraftServerMixinLate",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue