mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-06-17 06:11:24 +00:00
common-ify LifecycleUtil
This commit is contained in:
@@ -11,6 +11,7 @@ import org.jetbrains.annotations.Contract;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.function.BiConsumer;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
@@ -145,6 +146,11 @@ public final class Pair<L, R> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Pair<L, R> apply(BiConsumer<L, R> consumer) {
|
||||||
|
consumer.accept(this.left, this.right);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return String.format("{%s,%s}", left, right);
|
return String.format("{%s,%s}", left, right);
|
||||||
|
|||||||
@@ -24,9 +24,14 @@ import cloud.commandframework.fabric.FabricServerCommandManager;
|
|||||||
import com.dfsek.terra.api.command.CommandSender;
|
import com.dfsek.terra.api.command.CommandSender;
|
||||||
import com.dfsek.terra.api.event.events.platform.CommandRegistrationEvent;
|
import com.dfsek.terra.api.event.events.platform.CommandRegistrationEvent;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent;
|
||||||
|
import com.dfsek.terra.fabric.util.BiomeUtil;
|
||||||
|
import com.dfsek.terra.mod.CommonPlatform;
|
||||||
|
|
||||||
import net.fabricmc.api.ModInitializer;
|
import net.fabricmc.api.ModInitializer;
|
||||||
import net.minecraft.server.command.ServerCommandSource;
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
|
import net.minecraft.util.registry.BuiltinRegistries;
|
||||||
import net.minecraft.util.registry.Registry;
|
import net.minecraft.util.registry.Registry;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@@ -49,6 +54,13 @@ public class FabricEntryPoint implements ModInitializer {
|
|||||||
Registry.register(Registry.BIOME_SOURCE, new Identifier("terra:terra"), Codecs.TERRA_BIOME_SOURCE);
|
Registry.register(Registry.BIOME_SOURCE, new Identifier("terra:terra"), Codecs.TERRA_BIOME_SOURCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void initialize() {
|
||||||
|
getPlatform().getEventManager().callEvent(
|
||||||
|
new PlatformInitializationEvent());
|
||||||
|
BiomeUtil.registerBiomes();
|
||||||
|
CommonPlatform.get().registerWorldTypes((id, preset) -> BuiltinRegistries.add(BuiltinRegistries.WORLD_PRESET, id, preset));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInitialize() {
|
public void onInitialize() {
|
||||||
logger.info("Initializing Terra Fabric mod...");
|
logger.info("Initializing Terra Fabric mod...");
|
||||||
|
|||||||
@@ -25,9 +25,18 @@ import com.dfsek.terra.fabric.util.BiomeUtil;
|
|||||||
import com.dfsek.terra.mod.CommonPlatform;
|
import com.dfsek.terra.mod.CommonPlatform;
|
||||||
import com.dfsek.terra.mod.ModPlatform;
|
import com.dfsek.terra.mod.ModPlatform;
|
||||||
|
|
||||||
|
import com.dfsek.terra.mod.generation.TerraBiomeSource;
|
||||||
|
|
||||||
|
import com.dfsek.terra.mod.util.PresetUtil;
|
||||||
|
|
||||||
import net.fabricmc.loader.api.FabricLoader;
|
import net.fabricmc.loader.api.FabricLoader;
|
||||||
import net.minecraft.MinecraftVersion;
|
import net.minecraft.MinecraftVersion;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
|
import net.minecraft.util.registry.BuiltinRegistries;
|
||||||
|
import net.minecraft.world.dimension.DimensionOptions;
|
||||||
|
import net.minecraft.world.gen.WorldPreset;
|
||||||
|
import net.minecraft.world.gen.chunk.ChunkGenerator;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@@ -35,6 +44,9 @@ import org.slf4j.LoggerFactory;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.function.BiConsumer;
|
||||||
|
|
||||||
import com.dfsek.terra.addon.EphemeralAddon;
|
import com.dfsek.terra.addon.EphemeralAddon;
|
||||||
import com.dfsek.terra.api.addon.BaseAddon;
|
import com.dfsek.terra.api.addon.BaseAddon;
|
||||||
|
|||||||
+1
-5
@@ -17,8 +17,6 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.fabric.mixin.lifecycle.client;
|
package com.dfsek.terra.fabric.mixin.lifecycle.client;
|
||||||
|
|
||||||
import com.dfsek.terra.fabric.util.LifecycleUtil;
|
|
||||||
|
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.RunArgs;
|
import net.minecraft.client.RunArgs;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
@@ -26,9 +24,7 @@ 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.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent;
|
|
||||||
import com.dfsek.terra.fabric.FabricEntryPoint;
|
import com.dfsek.terra.fabric.FabricEntryPoint;
|
||||||
import com.dfsek.terra.fabric.util.BiomeUtil;
|
|
||||||
|
|
||||||
|
|
||||||
@Mixin(MinecraftClient.class)
|
@Mixin(MinecraftClient.class)
|
||||||
@@ -40,6 +36,6 @@ public class MinecraftClientMixin {
|
|||||||
// sorta arbitrary position, after mod init, before window opens
|
// sorta arbitrary position, after mod init, before window opens
|
||||||
shift = At.Shift.BEFORE))
|
shift = At.Shift.BEFORE))
|
||||||
public void injectConstructor(RunArgs args, CallbackInfo callbackInfo) {
|
public void injectConstructor(RunArgs args, CallbackInfo callbackInfo) {
|
||||||
LifecycleUtil.initialize();
|
FabricEntryPoint.initialize();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-5
@@ -17,16 +17,12 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.fabric.mixin.lifecycle.server;
|
package com.dfsek.terra.fabric.mixin.lifecycle.server;
|
||||||
|
|
||||||
import com.dfsek.terra.fabric.util.BiomeUtil;
|
|
||||||
import com.dfsek.terra.fabric.util.LifecycleUtil;
|
|
||||||
|
|
||||||
import net.minecraft.server.Main;
|
import net.minecraft.server.Main;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
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.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent;
|
|
||||||
import com.dfsek.terra.fabric.FabricEntryPoint;
|
import com.dfsek.terra.fabric.FabricEntryPoint;
|
||||||
|
|
||||||
|
|
||||||
@@ -39,6 +35,6 @@ public class ServerMainMixin {
|
|||||||
// after registry manager creation
|
// after registry manager creation
|
||||||
)
|
)
|
||||||
private static void injectConstructor(String[] args, CallbackInfo ci) {
|
private static void injectConstructor(String[] args, CallbackInfo ci) {
|
||||||
LifecycleUtil.initialize();
|
FabricEntryPoint.initialize();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ package com.dfsek.terra.fabric.util;
|
|||||||
|
|
||||||
import com.dfsek.terra.mod.util.MinecraftUtil;
|
import com.dfsek.terra.mod.util.MinecraftUtil;
|
||||||
|
|
||||||
|
import com.dfsek.terra.mod.util.PresetUtil;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
import net.minecraft.tag.TagKey;
|
import net.minecraft.tag.TagKey;
|
||||||
import net.minecraft.tag.WorldPresetTags;
|
import net.minecraft.tag.WorldPresetTags;
|
||||||
@@ -38,7 +40,7 @@ public final class TagUtil {
|
|||||||
logger.info("Doing preset tag garbage....");
|
logger.info("Doing preset tag garbage....");
|
||||||
Map<TagKey<WorldPreset>, List<RegistryEntry<WorldPreset>>> collect = tagsToMutableMap(registry);
|
Map<TagKey<WorldPreset>, List<RegistryEntry<WorldPreset>>> collect = tagsToMutableMap(registry);
|
||||||
|
|
||||||
LifecycleUtil
|
PresetUtil
|
||||||
.getPresets()
|
.getPresets()
|
||||||
.forEach(id -> MinecraftUtil
|
.forEach(id -> MinecraftUtil
|
||||||
.getEntry(registry, id)
|
.getEntry(registry, id)
|
||||||
|
|||||||
@@ -17,8 +17,12 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.forge;
|
package com.dfsek.terra.forge;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent;
|
||||||
|
import com.dfsek.terra.forge.util.BiomeUtil;
|
||||||
|
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.util.registry.Registry;
|
import net.minecraft.util.registry.Registry;
|
||||||
|
import net.minecraft.world.biome.Biome;
|
||||||
import net.minecraftforge.eventbus.api.EventPriority;
|
import net.minecraftforge.eventbus.api.EventPriority;
|
||||||
import net.minecraftforge.eventbus.api.IEventBus;
|
import net.minecraftforge.eventbus.api.IEventBus;
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
@@ -28,12 +32,12 @@ import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus;
|
|||||||
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||||
import net.minecraftforge.registries.ForgeRegistries.Keys;
|
import net.minecraftforge.registries.ForgeRegistries.Keys;
|
||||||
import net.minecraftforge.registries.RegisterEvent;
|
import net.minecraftforge.registries.RegisterEvent;
|
||||||
|
import net.minecraftforge.registries.RegisterEvent.RegisterHelper;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.dfsek.terra.forge.AwfulForgeHacks.RegistrySanityCheck;
|
import com.dfsek.terra.forge.AwfulForgeHacks.RegistrySanityCheck;
|
||||||
import com.dfsek.terra.forge.AwfulForgeHacks.RegistryStep;
|
import com.dfsek.terra.forge.AwfulForgeHacks.RegistryStep;
|
||||||
import com.dfsek.terra.forge.util.LifecycleUtil;
|
|
||||||
import com.dfsek.terra.mod.data.Codecs;
|
import com.dfsek.terra.mod.data.Codecs;
|
||||||
|
|
||||||
|
|
||||||
@@ -62,11 +66,17 @@ public class ForgeEntryPoint {
|
|||||||
modEventBus.register(this);
|
modEventBus.register(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void initialize(RegisterHelper<Biome> helper) {
|
||||||
|
getPlatform().getEventManager().callEvent(
|
||||||
|
new PlatformInitializationEvent());
|
||||||
|
BiomeUtil.registerBiomes(helper);
|
||||||
|
}
|
||||||
|
|
||||||
@SubscribeEvent(priority = EventPriority.LOWEST)
|
@SubscribeEvent(priority = EventPriority.LOWEST)
|
||||||
public void registerBiomes(RegisterEvent event) {
|
public void registerBiomes(RegisterEvent event) {
|
||||||
event.register(Keys.BLOCKS, helper -> sanityCheck.progress(RegistryStep.BLOCK, () -> logger.debug("Block registration detected.")));
|
event.register(Keys.BLOCKS, helper -> sanityCheck.progress(RegistryStep.BLOCK, () -> logger.debug("Block registration detected.")));
|
||||||
event.register(Keys.BIOMES, helper -> sanityCheck.progress(RegistryStep.BIOME, () -> LifecycleUtil.initialize(helper)));
|
event.register(Keys.BIOMES, helper -> sanityCheck.progress(RegistryStep.BIOME, () -> initialize(helper)));
|
||||||
event.register(Registry.WORLD_PRESET_KEY, helper -> sanityCheck.progress(RegistryStep.WORLD_TYPE, () -> LifecycleUtil.registerWorldTypes(helper)));
|
event.register(Registry.WORLD_PRESET_KEY, helper -> sanityCheck.progress(RegistryStep.WORLD_TYPE, () -> TERRA_PLUGIN.registerWorldTypes(helper::register)));
|
||||||
|
|
||||||
|
|
||||||
event.register(Registry.CHUNK_GENERATOR_KEY, helper -> helper.register(new Identifier("terra:terra"), Codecs.MINECRAFT_CHUNK_GENERATOR_WRAPPER));
|
event.register(Registry.CHUNK_GENERATOR_KEY, helper -> helper.register(new Identifier("terra:terra"), Codecs.MINECRAFT_CHUNK_GENERATOR_WRAPPER));
|
||||||
|
|||||||
@@ -20,8 +20,13 @@ package com.dfsek.terra.forge;
|
|||||||
import ca.solostudios.strata.Versions;
|
import ca.solostudios.strata.Versions;
|
||||||
import ca.solostudios.strata.parser.tokenizer.ParseException;
|
import ca.solostudios.strata.parser.tokenizer.ParseException;
|
||||||
import ca.solostudios.strata.version.Version;
|
import ca.solostudios.strata.version.Version;
|
||||||
|
|
||||||
|
import com.dfsek.terra.mod.util.PresetUtil;
|
||||||
|
|
||||||
import net.minecraft.MinecraftVersion;
|
import net.minecraft.MinecraftVersion;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
|
import net.minecraft.world.gen.WorldPreset;
|
||||||
import net.minecraftforge.fml.loading.FMLLoader;
|
import net.minecraftforge.fml.loading.FMLLoader;
|
||||||
import net.minecraftforge.server.ServerLifecycleHooks;
|
import net.minecraftforge.server.ServerLifecycleHooks;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@@ -31,6 +36,7 @@ import org.slf4j.LoggerFactory;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.function.BiConsumer;
|
||||||
|
|
||||||
import com.dfsek.terra.addon.EphemeralAddon;
|
import com.dfsek.terra.addon.EphemeralAddon;
|
||||||
import com.dfsek.terra.api.addon.BaseAddon;
|
import com.dfsek.terra.api.addon.BaseAddon;
|
||||||
|
|||||||
@@ -1,102 +0,0 @@
|
|||||||
package com.dfsek.terra.forge.util;
|
|
||||||
|
|
||||||
import net.minecraft.structure.StructureSet;
|
|
||||||
import net.minecraft.util.Identifier;
|
|
||||||
import net.minecraft.util.math.noise.DoublePerlinNoiseSampler.NoiseParameters;
|
|
||||||
import net.minecraft.util.registry.BuiltinRegistries;
|
|
||||||
import net.minecraft.util.registry.Registry;
|
|
||||||
import net.minecraft.util.registry.RegistryEntry;
|
|
||||||
import net.minecraft.world.biome.Biome;
|
|
||||||
import net.minecraft.world.biome.source.MultiNoiseBiomeSource;
|
|
||||||
import net.minecraft.world.biome.source.TheEndBiomeSource;
|
|
||||||
import net.minecraft.world.dimension.DimensionOptions;
|
|
||||||
import net.minecraft.world.dimension.DimensionType;
|
|
||||||
import net.minecraft.world.dimension.DimensionTypes;
|
|
||||||
import net.minecraft.world.gen.WorldPreset;
|
|
||||||
import net.minecraft.world.gen.chunk.ChunkGenerator;
|
|
||||||
import net.minecraft.world.gen.chunk.ChunkGeneratorSettings;
|
|
||||||
import net.minecraft.world.gen.chunk.NoiseChunkGenerator;
|
|
||||||
import net.minecraftforge.registries.RegisterEvent.RegisterHelper;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent;
|
|
||||||
import com.dfsek.terra.forge.ForgeEntryPoint;
|
|
||||||
import com.dfsek.terra.mod.generation.MinecraftChunkGeneratorWrapper;
|
|
||||||
import com.dfsek.terra.mod.generation.TerraBiomeSource;
|
|
||||||
|
|
||||||
|
|
||||||
public class LifecycleUtil {
|
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(LifecycleUtil.class);
|
|
||||||
|
|
||||||
private static final List<Identifier> PRESETS = new ArrayList<>();
|
|
||||||
public static void initialize(RegisterHelper<Biome> helper) {
|
|
||||||
ForgeEntryPoint.getPlatform().getEventManager().callEvent(
|
|
||||||
new PlatformInitializationEvent());
|
|
||||||
BiomeUtil.registerBiomes(helper);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void registerWorldTypes(RegisterHelper<WorldPreset> helper) {
|
|
||||||
LOGGER.info("Registering Terra world types...");
|
|
||||||
|
|
||||||
Registry<DimensionType> dimensionTypeRegistry = BuiltinRegistries.DIMENSION_TYPE;
|
|
||||||
Registry<ChunkGeneratorSettings> chunkGeneratorSettingsRegistry = BuiltinRegistries.CHUNK_GENERATOR_SETTINGS;
|
|
||||||
Registry<StructureSet> structureSetRegistry = BuiltinRegistries.STRUCTURE_SET;
|
|
||||||
Registry<NoiseParameters> noiseParametersRegistry = BuiltinRegistries.NOISE_PARAMETERS;
|
|
||||||
Registry<Biome> biomeRegistry = BuiltinRegistries.BIOME;
|
|
||||||
|
|
||||||
RegistryEntry<DimensionType> theNetherDimensionType = dimensionTypeRegistry.getOrCreateEntry(DimensionTypes.THE_NETHER);
|
|
||||||
RegistryEntry<ChunkGeneratorSettings>
|
|
||||||
netherChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getOrCreateEntry(ChunkGeneratorSettings.NETHER);
|
|
||||||
DimensionOptions netherDimensionOptions = new DimensionOptions(theNetherDimensionType,
|
|
||||||
new NoiseChunkGenerator(structureSetRegistry,
|
|
||||||
noiseParametersRegistry,
|
|
||||||
MultiNoiseBiomeSource.Preset.NETHER.getBiomeSource(
|
|
||||||
biomeRegistry),
|
|
||||||
netherChunkGeneratorSettings));
|
|
||||||
RegistryEntry<DimensionType> theEndDimensionType = dimensionTypeRegistry.getOrCreateEntry(DimensionTypes.THE_END);
|
|
||||||
RegistryEntry<ChunkGeneratorSettings> endChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getOrCreateEntry(
|
|
||||||
ChunkGeneratorSettings.END);
|
|
||||||
DimensionOptions endDimensionOptions = new DimensionOptions(theEndDimensionType,
|
|
||||||
new NoiseChunkGenerator(structureSetRegistry, noiseParametersRegistry,
|
|
||||||
new TheEndBiomeSource(biomeRegistry),
|
|
||||||
endChunkGeneratorSettings));
|
|
||||||
|
|
||||||
RegistryEntry<DimensionType> overworldDimensionType = dimensionTypeRegistry.getOrCreateEntry(DimensionTypes.OVERWORLD);
|
|
||||||
|
|
||||||
RegistryEntry<ChunkGeneratorSettings> overworld = chunkGeneratorSettingsRegistry.getOrCreateEntry(ChunkGeneratorSettings.OVERWORLD);
|
|
||||||
ForgeEntryPoint
|
|
||||||
.getPlatform()
|
|
||||||
.getRawConfigRegistry()
|
|
||||||
.forEach((id, pack) -> {
|
|
||||||
Identifier generatorID = Identifier.of("terra", pack.getID().toLowerCase(Locale.ROOT) + "/" + pack.getNamespace().toLowerCase(
|
|
||||||
Locale.ROOT));
|
|
||||||
|
|
||||||
PRESETS.add(generatorID);
|
|
||||||
|
|
||||||
TerraBiomeSource biomeSource = new TerraBiomeSource(biomeRegistry, pack);
|
|
||||||
ChunkGenerator generator = new MinecraftChunkGeneratorWrapper(structureSetRegistry, biomeSource, pack, overworld);
|
|
||||||
|
|
||||||
DimensionOptions dimensionOptions = new DimensionOptions(overworldDimensionType, generator);
|
|
||||||
WorldPreset preset = new WorldPreset(
|
|
||||||
Map.of(
|
|
||||||
DimensionOptions.OVERWORLD, dimensionOptions,
|
|
||||||
DimensionOptions.NETHER, netherDimensionOptions,
|
|
||||||
DimensionOptions.END, endDimensionOptions
|
|
||||||
)
|
|
||||||
);
|
|
||||||
helper.register(generatorID, preset);
|
|
||||||
LOGGER.info("Registered world type \"{}\"", generatorID);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<Identifier> getPresets() {
|
|
||||||
return PRESETS;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -2,6 +2,8 @@ package com.dfsek.terra.forge.util;
|
|||||||
|
|
||||||
import com.dfsek.terra.mod.util.MinecraftUtil;
|
import com.dfsek.terra.mod.util.MinecraftUtil;
|
||||||
|
|
||||||
|
import com.dfsek.terra.mod.util.PresetUtil;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
import net.minecraft.tag.TagKey;
|
import net.minecraft.tag.TagKey;
|
||||||
import net.minecraft.tag.WorldPresetTags;
|
import net.minecraft.tag.WorldPresetTags;
|
||||||
@@ -38,7 +40,7 @@ public final class TagUtil {
|
|||||||
logger.info("Doing preset tag garbage....");
|
logger.info("Doing preset tag garbage....");
|
||||||
Map<TagKey<WorldPreset>, List<RegistryEntry<WorldPreset>>> collect = tagsToMutableMap(registry);
|
Map<TagKey<WorldPreset>, List<RegistryEntry<WorldPreset>>> collect = tagsToMutableMap(registry);
|
||||||
|
|
||||||
LifecycleUtil
|
PresetUtil
|
||||||
.getPresets()
|
.getPresets()
|
||||||
.forEach(id -> MinecraftUtil
|
.forEach(id -> MinecraftUtil
|
||||||
.getEntry(registry, id)
|
.getEntry(registry, id)
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ import com.dfsek.terra.api.world.biome.PlatformBiome;
|
|||||||
|
|
||||||
import com.dfsek.terra.mod.config.ProtoPlatformBiome;
|
import com.dfsek.terra.mod.config.ProtoPlatformBiome;
|
||||||
|
|
||||||
|
import com.dfsek.terra.mod.util.PresetUtil;
|
||||||
|
|
||||||
import net.minecraft.command.CommandSource;
|
import net.minecraft.command.CommandSource;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
@@ -19,14 +21,22 @@ import net.minecraft.util.registry.BuiltinRegistries;
|
|||||||
import net.minecraft.world.biome.Biome;
|
import net.minecraft.world.biome.Biome;
|
||||||
import net.minecraft.world.biome.Biome.Precipitation;
|
import net.minecraft.world.biome.Biome.Precipitation;
|
||||||
import net.minecraft.world.biome.BiomeEffects.GrassColorModifier;
|
import net.minecraft.world.biome.BiomeEffects.GrassColorModifier;
|
||||||
|
import net.minecraft.world.gen.WorldPreset;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
import java.util.function.BiConsumer;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
|
||||||
public abstract class ModPlatform extends AbstractPlatform {
|
public abstract class ModPlatform extends AbstractPlatform {
|
||||||
public abstract MinecraftServer getServer();
|
public abstract MinecraftServer getServer();
|
||||||
|
|
||||||
|
public void registerWorldTypes(BiConsumer<Identifier, WorldPreset> registerFunction) {
|
||||||
|
getRawConfigRegistry()
|
||||||
|
.forEach(pack -> PresetUtil.createDefault(pack).apply(registerFunction));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register(TypeRegistry registry) {
|
public void register(TypeRegistry registry) {
|
||||||
super.register(registry);
|
super.register(registry);
|
||||||
|
|||||||
+23
-34
@@ -1,7 +1,8 @@
|
|||||||
package com.dfsek.terra.fabric.util;
|
package com.dfsek.terra.mod.util;
|
||||||
|
|
||||||
import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent;
|
import com.dfsek.terra.api.config.ConfigPack;
|
||||||
import com.dfsek.terra.fabric.FabricEntryPoint;
|
|
||||||
|
import com.dfsek.terra.api.util.generic.pair.Pair;
|
||||||
import com.dfsek.terra.mod.generation.MinecraftChunkGeneratorWrapper;
|
import com.dfsek.terra.mod.generation.MinecraftChunkGeneratorWrapper;
|
||||||
import com.dfsek.terra.mod.generation.TerraBiomeSource;
|
import com.dfsek.terra.mod.generation.TerraBiomeSource;
|
||||||
|
|
||||||
@@ -30,18 +31,11 @@ import java.util.Locale;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
public class LifecycleUtil {
|
public class PresetUtil {
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(LifecycleUtil.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(PresetUtil.class);
|
||||||
|
|
||||||
private static final List<Identifier> PRESETS = new ArrayList<>();
|
private static final List<Identifier> PRESETS = new ArrayList<>();
|
||||||
public static void initialize() {
|
|
||||||
FabricEntryPoint.getPlatform().getEventManager().callEvent(
|
|
||||||
new PlatformInitializationEvent());
|
|
||||||
BiomeUtil.registerBiomes();
|
|
||||||
|
|
||||||
|
|
||||||
LOGGER.info("Registering Terra world types...");
|
|
||||||
|
|
||||||
|
public static Pair<Identifier, WorldPreset> createDefault(ConfigPack pack) {
|
||||||
Registry<DimensionType> dimensionTypeRegistry = BuiltinRegistries.DIMENSION_TYPE;
|
Registry<DimensionType> dimensionTypeRegistry = BuiltinRegistries.DIMENSION_TYPE;
|
||||||
Registry<ChunkGeneratorSettings> chunkGeneratorSettingsRegistry = BuiltinRegistries.CHUNK_GENERATOR_SETTINGS;
|
Registry<ChunkGeneratorSettings> chunkGeneratorSettingsRegistry = BuiltinRegistries.CHUNK_GENERATOR_SETTINGS;
|
||||||
Registry<StructureSet> structureSetRegistry = BuiltinRegistries.STRUCTURE_SET;
|
Registry<StructureSet> structureSetRegistry = BuiltinRegistries.STRUCTURE_SET;
|
||||||
@@ -68,30 +62,25 @@ public class LifecycleUtil {
|
|||||||
RegistryEntry<DimensionType> overworldDimensionType = dimensionTypeRegistry.getOrCreateEntry(DimensionTypes.OVERWORLD);
|
RegistryEntry<DimensionType> overworldDimensionType = dimensionTypeRegistry.getOrCreateEntry(DimensionTypes.OVERWORLD);
|
||||||
|
|
||||||
RegistryEntry<ChunkGeneratorSettings> overworld = chunkGeneratorSettingsRegistry.getOrCreateEntry(ChunkGeneratorSettings.OVERWORLD);
|
RegistryEntry<ChunkGeneratorSettings> overworld = chunkGeneratorSettingsRegistry.getOrCreateEntry(ChunkGeneratorSettings.OVERWORLD);
|
||||||
FabricEntryPoint
|
|
||||||
.getPlatform()
|
|
||||||
.getRawConfigRegistry()
|
|
||||||
.forEach((id, pack) -> {
|
|
||||||
Identifier generatorID = Identifier.of("terra", pack.getID().toLowerCase(Locale.ROOT) + "/" + pack.getNamespace().toLowerCase(
|
|
||||||
Locale.ROOT));
|
|
||||||
|
|
||||||
PRESETS.add(generatorID);
|
Identifier generatorID = Identifier.of("terra", pack.getID().toLowerCase(Locale.ROOT) + "/" + pack.getNamespace().toLowerCase(
|
||||||
|
Locale.ROOT));
|
||||||
|
|
||||||
TerraBiomeSource biomeSource = new TerraBiomeSource(biomeRegistry, pack);
|
PRESETS.add(generatorID);
|
||||||
ChunkGenerator generator = new MinecraftChunkGeneratorWrapper(structureSetRegistry, biomeSource, pack, overworld);
|
|
||||||
|
|
||||||
DimensionOptions dimensionOptions = new DimensionOptions(overworldDimensionType, generator);
|
TerraBiomeSource biomeSource = new TerraBiomeSource(biomeRegistry, pack);
|
||||||
WorldPreset preset = new WorldPreset(
|
ChunkGenerator generator = new MinecraftChunkGeneratorWrapper(structureSetRegistry, biomeSource, pack, overworld);
|
||||||
Map.of(
|
|
||||||
DimensionOptions.OVERWORLD, dimensionOptions,
|
DimensionOptions dimensionOptions = new DimensionOptions(overworldDimensionType, generator);
|
||||||
DimensionOptions.NETHER, netherDimensionOptions,
|
WorldPreset preset = new WorldPreset(
|
||||||
DimensionOptions.END, endDimensionOptions
|
Map.of(
|
||||||
)
|
DimensionOptions.OVERWORLD, dimensionOptions,
|
||||||
);
|
DimensionOptions.NETHER, netherDimensionOptions,
|
||||||
BuiltinRegistries.add(BuiltinRegistries.WORLD_PRESET, generatorID, preset);
|
DimensionOptions.END, endDimensionOptions
|
||||||
LOGGER.info("Registered world type \"{}\"", generatorID);
|
)
|
||||||
}
|
);
|
||||||
);
|
LOGGER.info("Created world type \"{}\"", generatorID);
|
||||||
|
return Pair.of(generatorID, preset);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Identifier> getPresets() {
|
public static List<Identifier> getPresets() {
|
||||||
Reference in New Issue
Block a user