[Feature] New WorldTypes for BetterX + Large Biomes (bclib:large
)Overworld or Amplified (bclib:amplified
) Overworld (#53)
This commit is contained in:
parent
6c6aca74b5
commit
42be3dd2c7
8 changed files with 134 additions and 6 deletions
|
@ -45,6 +45,28 @@ public class BCLEndBiomeSourceConfig implements BiomeSourceConfig<BCLibEndBiomeS
|
||||||
MINECRAFT_17.landBiomesSize,
|
MINECRAFT_17.landBiomesSize,
|
||||||
MINECRAFT_17.barrensBiomesSize
|
MINECRAFT_17.barrensBiomesSize
|
||||||
);
|
);
|
||||||
|
|
||||||
|
public static final BCLEndBiomeSourceConfig MINECRAFT_18_LARGE = new BCLEndBiomeSourceConfig(
|
||||||
|
EndBiomeMapType.HEX,
|
||||||
|
BCLib.RUNS_NULLSCAPE ? EndBiomeGeneratorType.VANILLA : EndBiomeGeneratorType.PAULEVS,
|
||||||
|
BCLib.RUNS_NULLSCAPE ? false : true,
|
||||||
|
MINECRAFT_18.innerVoidRadiusSquared,
|
||||||
|
MINECRAFT_18.centerBiomesSize,
|
||||||
|
MINECRAFT_18.voidBiomesSize * 2,
|
||||||
|
MINECRAFT_18.landBiomesSize * 4,
|
||||||
|
MINECRAFT_18.barrensBiomesSize * 2
|
||||||
|
);
|
||||||
|
|
||||||
|
public static final BCLEndBiomeSourceConfig MINECRAFT_18_AMPLIFIED = new BCLEndBiomeSourceConfig(
|
||||||
|
EndBiomeMapType.HEX,
|
||||||
|
EndBiomeGeneratorType.PAULEVS,
|
||||||
|
true,
|
||||||
|
MINECRAFT_18.innerVoidRadiusSquared,
|
||||||
|
MINECRAFT_18.centerBiomesSize,
|
||||||
|
MINECRAFT_18.voidBiomesSize,
|
||||||
|
MINECRAFT_18.landBiomesSize,
|
||||||
|
MINECRAFT_18.barrensBiomesSize
|
||||||
|
);
|
||||||
public static final BCLEndBiomeSourceConfig DEFAULT = MINECRAFT_18;
|
public static final BCLEndBiomeSourceConfig DEFAULT = MINECRAFT_18;
|
||||||
|
|
||||||
public static final Codec<BCLEndBiomeSourceConfig> CODEC = RecordCodecBuilder.create(instance -> instance
|
public static final Codec<BCLEndBiomeSourceConfig> CODEC = RecordCodecBuilder.create(instance -> instance
|
||||||
|
|
|
@ -32,6 +32,21 @@ public class BCLNetherBiomeSourceConfig implements BiomeSourceConfig<BCLibNether
|
||||||
MINECRAFT_17.biomeSizeVertical,
|
MINECRAFT_17.biomeSizeVertical,
|
||||||
MINECRAFT_17.useVerticalBiomes
|
MINECRAFT_17.useVerticalBiomes
|
||||||
);
|
);
|
||||||
|
|
||||||
|
public static final BCLNetherBiomeSourceConfig MINECRAFT_18_LARGE = new BCLNetherBiomeSourceConfig(
|
||||||
|
NetherBiomeMapType.HEX,
|
||||||
|
MINECRAFT_18.biomeSize * 4,
|
||||||
|
MINECRAFT_18.biomeSizeVertical * 2,
|
||||||
|
MINECRAFT_18.useVerticalBiomes
|
||||||
|
);
|
||||||
|
|
||||||
|
public static final BCLNetherBiomeSourceConfig MINECRAFT_18_AMPLIFIED = new BCLNetherBiomeSourceConfig(
|
||||||
|
NetherBiomeMapType.HEX,
|
||||||
|
MINECRAFT_18.biomeSize,
|
||||||
|
MINECRAFT_18.biomeSizeVertical * 2,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
|
||||||
public static final BCLNetherBiomeSourceConfig DEFAULT = MINECRAFT_18;
|
public static final BCLNetherBiomeSourceConfig DEFAULT = MINECRAFT_18;
|
||||||
|
|
||||||
public static final Codec<BCLNetherBiomeSourceConfig> CODEC = RecordCodecBuilder.create(instance -> instance
|
public static final Codec<BCLNetherBiomeSourceConfig> CODEC = RecordCodecBuilder.create(instance -> instance
|
||||||
|
|
|
@ -10,21 +10,25 @@ import org.betterx.worlds.together.levelgen.WorldGenUtil;
|
||||||
import org.betterx.worlds.together.worldPreset.TogetherWorldPreset;
|
import org.betterx.worlds.together.worldPreset.TogetherWorldPreset;
|
||||||
import org.betterx.worlds.together.worldPreset.WorldPresets;
|
import org.betterx.worlds.together.worldPreset.WorldPresets;
|
||||||
|
|
||||||
|
import net.minecraft.core.Holder;
|
||||||
import net.minecraft.resources.ResourceKey;
|
import net.minecraft.resources.ResourceKey;
|
||||||
import net.minecraft.world.level.dimension.LevelStem;
|
import net.minecraft.world.level.dimension.LevelStem;
|
||||||
|
import net.minecraft.world.level.levelgen.NoiseGeneratorSettings;
|
||||||
import net.minecraft.world.level.levelgen.presets.WorldPreset;
|
import net.minecraft.world.level.levelgen.presets.WorldPreset;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class PresetsRegistry implements WorldPresetBootstrap {
|
public class PresetsRegistry implements WorldPresetBootstrap {
|
||||||
public static ResourceKey<WorldPreset> BCL_WORLD;
|
public static ResourceKey<WorldPreset> BCL_WORLD;
|
||||||
|
public static ResourceKey<WorldPreset> BCL_WORLD_LARGE;
|
||||||
|
public static ResourceKey<WorldPreset> BCL_WORLD_AMPLIFIED;
|
||||||
public static ResourceKey<WorldPreset> BCL_WORLD_17;
|
public static ResourceKey<WorldPreset> BCL_WORLD_17;
|
||||||
|
|
||||||
public void bootstrapWorldPresets() {
|
public void bootstrapWorldPresets() {
|
||||||
BCL_WORLD =
|
BCL_WORLD =
|
||||||
WorldPresets.register(
|
WorldPresets.register(
|
||||||
BCLib.makeID("normal"),
|
BCLib.makeID("normal"),
|
||||||
(overworldStem, netherContext, endContext) ->
|
(overworldStem, netherContext, endContext, noiseSettings, noiseBasedOverworld) ->
|
||||||
buildPreset(
|
buildPreset(
|
||||||
overworldStem,
|
overworldStem,
|
||||||
netherContext,
|
netherContext,
|
||||||
|
@ -34,9 +38,45 @@ public class PresetsRegistry implements WorldPresetBootstrap {
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
|
|
||||||
|
BCL_WORLD_LARGE =
|
||||||
|
WorldPresets.register(
|
||||||
|
BCLib.makeID("large"),
|
||||||
|
(overworldStem, netherContext, endContext, noiseSettings, noiseBasedOverworld) -> {
|
||||||
|
Holder<NoiseGeneratorSettings> largeBiomeGenerator = noiseSettings
|
||||||
|
.getOrCreateHolderOrThrow(NoiseGeneratorSettings.LARGE_BIOMES);
|
||||||
|
return buildPreset(
|
||||||
|
noiseBasedOverworld.make(
|
||||||
|
overworldStem.generator().getBiomeSource(),
|
||||||
|
largeBiomeGenerator
|
||||||
|
),
|
||||||
|
netherContext, BCLNetherBiomeSourceConfig.MINECRAFT_18_LARGE,
|
||||||
|
endContext, BCLEndBiomeSourceConfig.MINECRAFT_18_LARGE
|
||||||
|
);
|
||||||
|
},
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
BCL_WORLD_AMPLIFIED =
|
||||||
|
WorldPresets.register(
|
||||||
|
BCLib.makeID("amplified"),
|
||||||
|
(overworldStem, netherContext, endContext, noiseSettings, noiseBasedOverworld) -> {
|
||||||
|
Holder<NoiseGeneratorSettings> largeBiomeGenerator = noiseSettings
|
||||||
|
.getOrCreateHolderOrThrow(NoiseGeneratorSettings.AMPLIFIED);
|
||||||
|
return buildPreset(
|
||||||
|
noiseBasedOverworld.make(
|
||||||
|
overworldStem.generator().getBiomeSource(),
|
||||||
|
largeBiomeGenerator
|
||||||
|
),
|
||||||
|
netherContext, BCLNetherBiomeSourceConfig.MINECRAFT_18_AMPLIFIED,
|
||||||
|
endContext, BCLEndBiomeSourceConfig.MINECRAFT_18_AMPLIFIED
|
||||||
|
);
|
||||||
|
},
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
BCL_WORLD_17 = WorldPresets.register(
|
BCL_WORLD_17 = WorldPresets.register(
|
||||||
BCLib.makeID("legacy_17"),
|
BCLib.makeID("legacy_17"),
|
||||||
(overworldStem, netherContext, endContext) ->
|
(overworldStem, netherContext, endContext, noiseSettings, noiseBasedOverworld) ->
|
||||||
buildPreset(
|
buildPreset(
|
||||||
overworldStem,
|
overworldStem,
|
||||||
netherContext,
|
netherContext,
|
||||||
|
|
|
@ -12,5 +12,19 @@ public class PresetsRegistryClient {
|
||||||
WorldPresetsClient.registerCustomizeUI(PresetsRegistry.BCL_WORLD, (createWorldScreen, worldCreationContext) -> {
|
WorldPresetsClient.registerCustomizeUI(PresetsRegistry.BCL_WORLD, (createWorldScreen, worldCreationContext) -> {
|
||||||
return new WorldSetupScreen(createWorldScreen, worldCreationContext);
|
return new WorldSetupScreen(createWorldScreen, worldCreationContext);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
WorldPresetsClient.registerCustomizeUI(
|
||||||
|
PresetsRegistry.BCL_WORLD_LARGE,
|
||||||
|
(createWorldScreen, worldCreationContext) -> {
|
||||||
|
return new WorldSetupScreen(createWorldScreen, worldCreationContext);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
WorldPresetsClient.registerCustomizeUI(
|
||||||
|
PresetsRegistry.BCL_WORLD_AMPLIFIED,
|
||||||
|
(createWorldScreen, worldCreationContext) -> {
|
||||||
|
return new WorldSetupScreen(createWorldScreen, worldCreationContext);
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ 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.biome.BiomeSource;
|
||||||
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.dimension.LevelStem;
|
||||||
import net.minecraft.world.level.levelgen.NoiseGeneratorSettings;
|
import net.minecraft.world.level.levelgen.NoiseGeneratorSettings;
|
||||||
|
@ -48,6 +49,16 @@ public abstract class WorldPresetsBootstrapMixin {
|
||||||
|
|
||||||
//see WorldPresets.register
|
//see WorldPresets.register
|
||||||
|
|
||||||
|
@Shadow
|
||||||
|
protected abstract LevelStem makeNoiseBasedOverworld(
|
||||||
|
BiomeSource biomeSource,
|
||||||
|
Holder<NoiseGeneratorSettings> holder
|
||||||
|
);
|
||||||
|
|
||||||
|
@Shadow
|
||||||
|
@Final
|
||||||
|
private Registry<NoiseGeneratorSettings> noiseSettings;
|
||||||
|
|
||||||
@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(
|
||||||
|
@ -65,7 +76,14 @@ public abstract class WorldPresetsBootstrapMixin {
|
||||||
this.endNoiseSettings
|
this.endNoiseSettings
|
||||||
);
|
);
|
||||||
|
|
||||||
WorldPresets.bootstrapPresets(presets, overworldStem, netherContext, endContext);
|
WorldPresets.bootstrapPresets(
|
||||||
|
presets,
|
||||||
|
overworldStem,
|
||||||
|
netherContext,
|
||||||
|
endContext,
|
||||||
|
noiseSettings,
|
||||||
|
this::makeNoiseBasedOverworld
|
||||||
|
);
|
||||||
|
|
||||||
return overworldStem;
|
return overworldStem;
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,9 @@ 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.tags.WorldPresetTags;
|
import net.minecraft.tags.WorldPresetTags;
|
||||||
|
import net.minecraft.world.level.biome.BiomeSource;
|
||||||
import net.minecraft.world.level.dimension.LevelStem;
|
import net.minecraft.world.level.dimension.LevelStem;
|
||||||
|
import net.minecraft.world.level.levelgen.NoiseGeneratorSettings;
|
||||||
import net.minecraft.world.level.levelgen.presets.WorldPreset;
|
import net.minecraft.world.level.levelgen.presets.WorldPreset;
|
||||||
|
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
|
@ -24,6 +26,10 @@ import java.util.Map;
|
||||||
import org.jetbrains.annotations.ApiStatus;
|
import org.jetbrains.annotations.ApiStatus;
|
||||||
|
|
||||||
public class WorldPresets {
|
public class WorldPresets {
|
||||||
|
@FunctionalInterface
|
||||||
|
public interface OverworldBuilder {
|
||||||
|
LevelStem make(BiomeSource biomeSource, Holder<NoiseGeneratorSettings> noiseGeneratorSettings);
|
||||||
|
}
|
||||||
|
|
||||||
public static final TagRegistry.Simple<WorldPreset> WORLD_PRESETS =
|
public static final TagRegistry.Simple<WorldPreset> WORLD_PRESETS =
|
||||||
TagManager.registerType(BuiltinRegistries.WORLD_PRESET, "tags/worldgen/world_preset");
|
TagManager.registerType(BuiltinRegistries.WORLD_PRESET, "tags/worldgen/world_preset");
|
||||||
|
@ -78,17 +84,24 @@ public class WorldPresets {
|
||||||
return key;
|
return key;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiStatus.Internal
|
||||||
public static void bootstrapPresets(
|
public static void bootstrapPresets(
|
||||||
Registry<WorldPreset> presets,
|
Registry<WorldPreset> presets,
|
||||||
LevelStem overworldStem,
|
LevelStem overworldStem,
|
||||||
WorldGenUtil.Context netherContext,
|
WorldGenUtil.Context netherContext,
|
||||||
WorldGenUtil.Context endContext
|
WorldGenUtil.Context endContext,
|
||||||
|
Registry<NoiseGeneratorSettings> noiseSettings,
|
||||||
|
OverworldBuilder noiseBasedOverworld
|
||||||
) {
|
) {
|
||||||
EntrypointUtil.getCommon(WorldPresetBootstrap.class)
|
EntrypointUtil.getCommon(WorldPresetBootstrap.class)
|
||||||
.forEach(e -> e.bootstrapWorldPresets());
|
.forEach(e -> e.bootstrapWorldPresets());
|
||||||
|
|
||||||
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,
|
||||||
|
noiseSettings, noiseBasedOverworld
|
||||||
|
);
|
||||||
BuiltinRegistries.register(presets, e.getKey(), preset);
|
BuiltinRegistries.register(presets, e.getKey(), preset);
|
||||||
}
|
}
|
||||||
BUILDERS = null;
|
BUILDERS = null;
|
||||||
|
@ -112,7 +125,9 @@ public class WorldPresets {
|
||||||
TogetherWorldPreset create(
|
TogetherWorldPreset create(
|
||||||
LevelStem overworldStem,
|
LevelStem overworldStem,
|
||||||
WorldGenUtil.Context netherContext,
|
WorldGenUtil.Context netherContext,
|
||||||
WorldGenUtil.Context endContext
|
WorldGenUtil.Context endContext,
|
||||||
|
Registry<NoiseGeneratorSettings> noiseSettings,
|
||||||
|
OverworldBuilder noiseBasedOverworld
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,6 +50,8 @@
|
||||||
"title.bclib.datafixer.error.continue": "Continue and Mark as Fixed",
|
"title.bclib.datafixer.error.continue": "Continue and Mark as Fixed",
|
||||||
"tooltip.bclib.place_on": "Lebt auf: %s",
|
"tooltip.bclib.place_on": "Lebt auf: %s",
|
||||||
"generator.bclib.normal": "BetterX",
|
"generator.bclib.normal": "BetterX",
|
||||||
|
"generator.bclib.large": "Groß & BetterX",
|
||||||
|
"generator.bclib.amplified": "Ampl. & BetterX",
|
||||||
"title.screen.bclib.worldgen.main": "Welt-Generator Eigenschaften",
|
"title.screen.bclib.worldgen.main": "Welt-Generator Eigenschaften",
|
||||||
"title.bclib.the_nether": "Nether",
|
"title.bclib.the_nether": "Nether",
|
||||||
"title.bclib.the_end": "Das Ende",
|
"title.bclib.the_end": "Das Ende",
|
||||||
|
|
|
@ -54,6 +54,8 @@
|
||||||
"title.config.bclib.client.infos.survives_on_hint": "Show 'Survives On' hint as Tooltip",
|
"title.config.bclib.client.infos.survives_on_hint": "Show 'Survives On' hint as Tooltip",
|
||||||
"tooltip.bclib.place_on": "Survives on: %s",
|
"tooltip.bclib.place_on": "Survives on: %s",
|
||||||
"generator.bclib.normal": "BetterX",
|
"generator.bclib.normal": "BetterX",
|
||||||
|
"generator.bclib.large": "Large & BetterX",
|
||||||
|
"generator.bclib.amplified": "Ampl. & BetterX",
|
||||||
"title.screen.bclib.worldgen.main": "World Generator Settings",
|
"title.screen.bclib.worldgen.main": "World Generator Settings",
|
||||||
"title.bclib.the_nether": "The Nether",
|
"title.bclib.the_nether": "The Nether",
|
||||||
"title.bclib.the_end": "The End",
|
"title.bclib.the_end": "The End",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue