fix GeneratorOptionsMixin

This commit is contained in:
dfsek
2022-03-23 21:51:42 -07:00
parent e771588647
commit 2075ed101b
@@ -17,10 +17,16 @@
package com.dfsek.terra.fabric.mixin.lifecycle.server; package com.dfsek.terra.fabric.mixin.lifecycle.server;
import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.fabric.FabricEntryPoint;
import com.dfsek.terra.fabric.PlatformImpl;
import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper;
import com.dfsek.terra.fabric.generation.TerraBiomeSource;
import net.minecraft.server.dedicated.ServerPropertiesHandler;
import net.minecraft.structure.StructureSet; import net.minecraft.structure.StructureSet;
import net.minecraft.util.registry.DynamicRegistryManager; import net.minecraft.util.registry.DynamicRegistryManager;
import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.Registry;
import net.minecraft.util.registry.SimpleRegistry;
import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.Biome;
import net.minecraft.world.dimension.DimensionOptions; import net.minecraft.world.dimension.DimensionOptions;
import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.dimension.DimensionType;
@@ -31,34 +37,30 @@ import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import java.util.Properties;
import java.util.Random; import java.util.Random;
import java.util.function.Supplier; import java.util.function.Supplier;
import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.fabric.FabricEntryPoint;
import com.dfsek.terra.fabric.PlatformImpl;
import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper;
import com.dfsek.terra.fabric.generation.TerraBiomeSource;
@Mixin(GeneratorOptions.class) @Mixin(GeneratorOptions.class)
public abstract class GeneratorOptionsMixin { public abstract class GeneratorOptionsMixin {
@Inject(method = "fromProperties(Lnet/minecraft/util/registry/DynamicRegistryManager;Ljava/util/Properties;)" + @Inject(method = "fromProperties(Lnet/minecraft/util/registry/DynamicRegistryManager;" +
"Lnet/minecraft/server/dedicated/ServerPropertiesHandler$WorldGenProperties;)" +
"Lnet/minecraft/world/gen/GeneratorOptions;", "Lnet/minecraft/world/gen/GeneratorOptions;",
at = @At("HEAD"), at = @At("HEAD"),
cancellable = true) cancellable = true)
private static void fromProperties(DynamicRegistryManager manager, Properties properties, private static void fromProperties(DynamicRegistryManager manager,
ServerPropertiesHandler.WorldGenProperties properties,
CallbackInfoReturnable<GeneratorOptions> cir) { CallbackInfoReturnable<GeneratorOptions> cir) {
if(properties.get("level-type") == null) { if(properties.levelType() == null) {
return; return;
} }
PlatformImpl main = FabricEntryPoint.getPlatform(); PlatformImpl main = FabricEntryPoint.getPlatform();
String prop = properties.get("level-type").toString().trim(); String levelType = properties.levelType();
if(prop.startsWith("Terra")) {
String seedProperty = (String) properties.get("level-seed"); if(levelType.startsWith("Terra")) {
String seedProperty = properties.levelSeed();
long seed = new Random().nextLong(); long seed = new Random().nextLong();
if(seedProperty != null) { if(seedProperty != null) {
try { try {
@@ -71,8 +73,7 @@ public abstract class GeneratorOptionsMixin {
} }
} }
String generate_structures = (String) properties.get("generate-structures"); boolean generateStructures = properties.generateStructures();
boolean generateStructures = generate_structures == null || Boolean.parseBoolean(generate_structures);
Registry<DimensionType> dimensionTypes = manager.get(Registry.DIMENSION_TYPE_KEY); Registry<DimensionType> dimensionTypes = manager.get(Registry.DIMENSION_TYPE_KEY);
Registry<Biome> biomeRegistry = manager.get(Registry.BIOME_KEY); Registry<Biome> biomeRegistry = manager.get(Registry.BIOME_KEY);
Registry<DimensionOptions> dimensionOptions = DimensionType.createDefaultDimensionOptions(manager, seed, false); Registry<DimensionOptions> dimensionOptions = DimensionType.createDefaultDimensionOptions(manager, seed, false);
@@ -82,11 +83,10 @@ public abstract class GeneratorOptionsMixin {
settingsSupplier = () -> chunkGeneratorSettingsRegistry.getOrThrow(ChunkGeneratorSettings.OVERWORLD); settingsSupplier = () -> chunkGeneratorSettingsRegistry.getOrThrow(ChunkGeneratorSettings.OVERWORLD);
Registry<StructureSet> noiseRegistry = manager.get(Registry.STRUCTURE_SET_KEY); Registry<StructureSet> noiseRegistry = manager.get(Registry.STRUCTURE_SET_KEY);
prop = prop.substring(prop.indexOf(":") + 1); String pack = levelType.substring(levelType.indexOf(":") + 1);
String finalProp = prop; ConfigPack config = main.getConfigRegistry().getByID(pack).orElseThrow(() -> new IllegalArgumentException(
ConfigPack config = main.getConfigRegistry().getByID(prop).orElseThrow(() -> new IllegalArgumentException( "No such pack " + pack));
"No such pack " + finalProp));
cir.setReturnValue( cir.setReturnValue(
new GeneratorOptions(seed, new GeneratorOptions(seed,