mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-06-17 14:21:08 +00:00
fix GeneratorOptionsMixin
This commit is contained in:
+20
-20
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user