mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-06-18 23:01:03 +00:00
1.19.4 fabric
This commit is contained in:
@@ -5,8 +5,8 @@ import com.dfsek.tectonic.api.depth.DepthTracker;
|
|||||||
import com.dfsek.tectonic.api.exception.LoadException;
|
import com.dfsek.tectonic.api.exception.LoadException;
|
||||||
import net.minecraft.entity.EntityType;
|
import net.minecraft.entity.EntityType;
|
||||||
import net.minecraft.entity.SpawnGroup;
|
import net.minecraft.entity.SpawnGroup;
|
||||||
import net.minecraft.registry.DynamicRegistryManager;
|
|
||||||
import net.minecraft.registry.Registry;
|
import net.minecraft.registry.Registry;
|
||||||
|
import net.minecraft.registry.RegistryKey;
|
||||||
import net.minecraft.registry.RegistryKeys;
|
import net.minecraft.registry.RegistryKeys;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraft.sound.BiomeAdditionsSound;
|
import net.minecraft.sound.BiomeAdditionsSound;
|
||||||
@@ -22,6 +22,7 @@ import net.minecraft.world.biome.BiomeEffects.GrassColorModifier;
|
|||||||
import net.minecraft.world.biome.BiomeParticleConfig;
|
import net.minecraft.world.biome.BiomeParticleConfig;
|
||||||
import net.minecraft.world.biome.SpawnSettings;
|
import net.minecraft.world.biome.SpawnSettings;
|
||||||
import net.minecraft.world.biome.SpawnSettings.SpawnEntry;
|
import net.minecraft.world.biome.SpawnSettings.SpawnEntry;
|
||||||
|
import net.minecraft.world.biome.source.MultiNoiseBiomeSourceParameterList;
|
||||||
import net.minecraft.world.dimension.DimensionType;
|
import net.minecraft.world.dimension.DimensionType;
|
||||||
import net.minecraft.world.gen.WorldPreset;
|
import net.minecraft.world.gen.WorldPreset;
|
||||||
import net.minecraft.world.gen.chunk.ChunkGeneratorSettings;
|
import net.minecraft.world.gen.chunk.ChunkGeneratorSettings;
|
||||||
@@ -113,6 +114,7 @@ public abstract class ModPlatform extends AbstractPlatform {
|
|||||||
public abstract Registry<DimensionType> dimensionTypeRegistry();
|
public abstract Registry<DimensionType> dimensionTypeRegistry();
|
||||||
public abstract Registry<Biome> biomeRegistry();
|
public abstract Registry<Biome> biomeRegistry();
|
||||||
public abstract Registry<ChunkGeneratorSettings> chunkGeneratorSettingsRegistry();
|
public abstract Registry<ChunkGeneratorSettings> chunkGeneratorSettingsRegistry();
|
||||||
|
public abstract Registry<MultiNoiseBiomeSourceParameterList> multiNoiseBiomeSourceParameterListRegistry();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull WorldHandle getWorldHandle() {
|
public @NotNull WorldHandle getWorldHandle() {
|
||||||
|
|||||||
-23
@@ -1,23 +0,0 @@
|
|||||||
package com.dfsek.terra.mod.mixin.lifecycle;
|
|
||||||
|
|
||||||
import com.dfsek.terra.mod.mixin_ifaces.FloraFeatureHolder;
|
|
||||||
import com.dfsek.terra.mod.mixin_ifaces.RegistrarInstance;
|
|
||||||
|
|
||||||
import net.minecraft.registry.Registerable;
|
|
||||||
import net.minecraft.world.gen.WorldPreset;
|
|
||||||
import net.minecraft.world.gen.WorldPresets;
|
|
||||||
import org.spongepowered.asm.mixin.Implements;
|
|
||||||
import org.spongepowered.asm.mixin.Interface;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
|
|
||||||
|
|
||||||
@Mixin(WorldPresets.Registrar.class)
|
|
||||||
public class WorldPresetsRegistrarMixin {
|
|
||||||
@Inject(at = @At("RETURN"), method = "<init>")
|
|
||||||
public void injectConstructor(Registerable<WorldPreset> presetRegisterable, CallbackInfo ci) {
|
|
||||||
RegistrarInstance.INSTANCE = (WorldPresets.Registrar) (Object) this;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -46,25 +46,45 @@ public class PresetUtil {
|
|||||||
public static Pair<Identifier, WorldPreset> createDefault(ConfigPack pack, ModPlatform platform) {
|
public static Pair<Identifier, WorldPreset> createDefault(ConfigPack pack, ModPlatform platform) {
|
||||||
Registry<DimensionType> dimensionTypeRegistry = platform.dimensionTypeRegistry();
|
Registry<DimensionType> dimensionTypeRegistry = platform.dimensionTypeRegistry();
|
||||||
Registry<ChunkGeneratorSettings> chunkGeneratorSettingsRegistry = platform.chunkGeneratorSettingsRegistry();
|
Registry<ChunkGeneratorSettings> chunkGeneratorSettingsRegistry = platform.chunkGeneratorSettingsRegistry();
|
||||||
|
Registry<MultiNoiseBiomeSourceParameterList> multiNoiseBiomeSourceParameterLists =
|
||||||
|
platform.multiNoiseBiomeSourceParameterListRegistry();
|
||||||
|
|
||||||
|
|
||||||
RegistryEntry<DimensionType> overworldDimensionType = dimensionTypeRegistry.getEntry(DimensionTypes.OVERWORLD).orElseThrow();
|
RegistryEntry<DimensionType> overworldDimensionType = dimensionTypeRegistry.getEntry(DimensionTypes.OVERWORLD).orElseThrow();
|
||||||
RegistryEntry<ChunkGeneratorSettings> overworld = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.OVERWORLD)
|
RegistryEntry<ChunkGeneratorSettings> overworld = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.OVERWORLD)
|
||||||
.orElseThrow();
|
.orElseThrow();
|
||||||
|
|
||||||
|
|
||||||
Identifier generatorID = Identifier.of("terra", pack.getID().toLowerCase(Locale.ROOT) + "/" + pack.getNamespace().toLowerCase(
|
Identifier generatorID = Identifier.of("terra", pack.getID().toLowerCase(Locale.ROOT) + "/" + pack.getNamespace().toLowerCase(
|
||||||
Locale.ROOT));
|
Locale.ROOT));
|
||||||
|
|
||||||
PRESETS.add(generatorID);
|
PRESETS.add(generatorID);
|
||||||
|
|
||||||
|
RegistryEntry<DimensionType> registryEntry = dimensionTypeRegistry.getEntry(DimensionTypes.THE_NETHER).orElseThrow();
|
||||||
|
RegistryEntry.Reference<MultiNoiseBiomeSourceParameterList> reference = multiNoiseBiomeSourceParameterLists.getEntry(MultiNoiseBiomeSourceParameterLists.NETHER).orElseThrow();
|
||||||
|
RegistryEntry<ChunkGeneratorSettings> registryEntry2 = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.NETHER).orElseThrow();
|
||||||
|
|
||||||
|
RegistryEntry<DimensionType> registryEntry3 = dimensionTypeRegistry.getEntry(DimensionTypes.THE_END).orElseThrow();
|
||||||
|
RegistryEntry<ChunkGeneratorSettings> registryEntry4 = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.END).orElseThrow();
|
||||||
|
|
||||||
TerraBiomeSource biomeSource = new TerraBiomeSource(pack);
|
TerraBiomeSource biomeSource = new TerraBiomeSource(pack);
|
||||||
ChunkGenerator generator = new MinecraftChunkGeneratorWrapper(biomeSource, pack, overworld);
|
ChunkGenerator generator = new MinecraftChunkGeneratorWrapper(biomeSource, pack, overworld);
|
||||||
|
|
||||||
DimensionOptions dimensionOptions = new DimensionOptions(overworldDimensionType, generator);
|
DimensionOptions dimensionOptions = new DimensionOptions(overworldDimensionType, generator);
|
||||||
WorldPreset preset = ((WorldPresetsRegistrarAccessor) RegistrarInstance.INSTANCE).callCreatePreset(dimensionOptions);
|
DimensionOptions netherDimensionOptions = new DimensionOptions(registryEntry, new NoiseChunkGenerator(MultiNoiseBiomeSource.create(reference), registryEntry2));
|
||||||
|
DimensionOptions endDimensionOptions = new DimensionOptions(registryEntry3, new NoiseChunkGenerator(TheEndBiomeSource.createVanilla(platform.biomeRegistry().getReadOnlyWrapper()), registryEntry4));
|
||||||
|
|
||||||
|
WorldPreset preset = createPreset(dimensionOptions, netherDimensionOptions, endDimensionOptions);
|
||||||
LOGGER.info("Created world type \"{}\"", generatorID);
|
LOGGER.info("Created world type \"{}\"", generatorID);
|
||||||
return Pair.of(generatorID, preset);
|
return Pair.of(generatorID, preset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static WorldPreset createPreset(DimensionOptions dimensionOptions, DimensionOptions netherDimensionOptions, DimensionOptions endDimensionOptions) {
|
||||||
|
return new WorldPreset(
|
||||||
|
Map.of(DimensionOptions.OVERWORLD, dimensionOptions, DimensionOptions.NETHER, netherDimensionOptions, DimensionOptions.END, endDimensionOptions)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public static List<Identifier> getPresets() {
|
public static List<Identifier> getPresets() {
|
||||||
return PRESETS;
|
return PRESETS;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,8 +37,7 @@
|
|||||||
"implementations.terra.inventory.meta.ItemStackMetaMixin",
|
"implementations.terra.inventory.meta.ItemStackMetaMixin",
|
||||||
"implementations.terra.world.ChunkRegionMixin",
|
"implementations.terra.world.ChunkRegionMixin",
|
||||||
"implementations.terra.world.ServerWorldMixin",
|
"implementations.terra.world.ServerWorldMixin",
|
||||||
"lifecycle.DataPackContentsMixin",
|
"lifecycle.DataPackContentsMixin"
|
||||||
"lifecycle.WorldPresetsRegistrarMixin"
|
|
||||||
],
|
],
|
||||||
"client": [
|
"client": [
|
||||||
],
|
],
|
||||||
|
|||||||
+10
-3
@@ -3,10 +3,10 @@ package com.dfsek.terra.lifecycle;
|
|||||||
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 net.minecraft.MinecraftVersion;
|
import net.minecraft.MinecraftVersion;
|
||||||
import net.minecraft.registry.DynamicRegistryManager;
|
|
||||||
import net.minecraft.registry.Registry;
|
import net.minecraft.registry.Registry;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraft.world.biome.Biome;
|
import net.minecraft.world.biome.Biome;
|
||||||
|
import net.minecraft.world.biome.source.MultiNoiseBiomeSourceParameterList;
|
||||||
import net.minecraft.world.dimension.DimensionType;
|
import net.minecraft.world.dimension.DimensionType;
|
||||||
import net.minecraft.world.gen.chunk.ChunkGeneratorSettings;
|
import net.minecraft.world.gen.chunk.ChunkGeneratorSettings;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@@ -15,7 +15,6 @@ import org.slf4j.LoggerFactory;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
|
||||||
import com.dfsek.terra.addon.EphemeralAddon;
|
import com.dfsek.terra.addon.EphemeralAddon;
|
||||||
@@ -32,6 +31,7 @@ public abstract class LifecyclePlatform extends ModPlatform {
|
|||||||
private static final AtomicReference<Registry<Biome>> BIOMES = new AtomicReference<>();
|
private static final AtomicReference<Registry<Biome>> BIOMES = new AtomicReference<>();
|
||||||
private static final AtomicReference<Registry<DimensionType>> DIMENSIONS = new AtomicReference<>();
|
private static final AtomicReference<Registry<DimensionType>> DIMENSIONS = new AtomicReference<>();
|
||||||
private static final AtomicReference<Registry<ChunkGeneratorSettings>> SETTINGS = new AtomicReference<>();
|
private static final AtomicReference<Registry<ChunkGeneratorSettings>> SETTINGS = new AtomicReference<>();
|
||||||
|
private static final AtomicReference<Registry<MultiNoiseBiomeSourceParameterList>> NOISE = new AtomicReference<>();
|
||||||
|
|
||||||
public LifecyclePlatform() {
|
public LifecyclePlatform() {
|
||||||
CommonPlatform.initialize(this);
|
CommonPlatform.initialize(this);
|
||||||
@@ -73,10 +73,12 @@ public abstract class LifecyclePlatform extends ModPlatform {
|
|||||||
|
|
||||||
public static void setRegistries(Registry<Biome> biomeRegistry,
|
public static void setRegistries(Registry<Biome> biomeRegistry,
|
||||||
Registry<DimensionType> dimensionTypeRegistry,
|
Registry<DimensionType> dimensionTypeRegistry,
|
||||||
Registry<ChunkGeneratorSettings> chunkGeneratorSettingsRegistry) {
|
Registry<ChunkGeneratorSettings> chunkGeneratorSettingsRegistry,
|
||||||
|
Registry<MultiNoiseBiomeSourceParameterList> multiNoiseBiomeSourceParameterListRegistry) {
|
||||||
BIOMES.set(biomeRegistry);
|
BIOMES.set(biomeRegistry);
|
||||||
DIMENSIONS.set(dimensionTypeRegistry);
|
DIMENSIONS.set(dimensionTypeRegistry);
|
||||||
SETTINGS.set(chunkGeneratorSettingsRegistry);
|
SETTINGS.set(chunkGeneratorSettingsRegistry);
|
||||||
|
NOISE.set(multiNoiseBiomeSourceParameterListRegistry);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -116,5 +118,10 @@ public abstract class LifecyclePlatform extends ModPlatform {
|
|||||||
return SETTINGS.get();
|
return SETTINGS.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Registry<MultiNoiseBiomeSourceParameterList> multiNoiseBiomeSourceParameterListRegistry() {
|
||||||
|
return NOISE.get();
|
||||||
|
}
|
||||||
|
|
||||||
protected abstract Collection<BaseAddon> getPlatformMods();
|
protected abstract Collection<BaseAddon> getPlatformMods();
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-8
@@ -1,33 +1,29 @@
|
|||||||
package com.dfsek.terra.lifecycle.mixin.lifecycle;
|
package com.dfsek.terra.lifecycle.mixin.lifecycle;
|
||||||
|
|
||||||
import com.dfsek.terra.lifecycle.LifecyclePlatform;
|
|
||||||
|
|
||||||
import com.dfsek.terra.lifecycle.util.RegistryHack;
|
|
||||||
|
|
||||||
import com.mojang.datafixers.util.Pair;
|
import com.mojang.datafixers.util.Pair;
|
||||||
import net.minecraft.registry.MutableRegistry;
|
import net.minecraft.registry.MutableRegistry;
|
||||||
import net.minecraft.registry.Registry;
|
import net.minecraft.registry.Registry;
|
||||||
import net.minecraft.registry.RegistryKey;
|
import net.minecraft.registry.RegistryKey;
|
||||||
import net.minecraft.registry.RegistryKeys;
|
import net.minecraft.registry.RegistryKeys;
|
||||||
import net.minecraft.registry.RegistryLoader;
|
import net.minecraft.registry.RegistryLoader;
|
||||||
import net.minecraft.world.biome.Biome;
|
import net.minecraft.world.biome.source.MultiNoiseBiomeSourceParameterList;
|
||||||
import net.minecraft.world.dimension.DimensionType;
|
import net.minecraft.world.dimension.DimensionType;
|
||||||
import net.minecraft.world.gen.WorldPreset;
|
import net.minecraft.world.gen.WorldPreset;
|
||||||
import net.minecraft.world.gen.chunk.ChunkGeneratorSettings;
|
import net.minecraft.world.gen.chunk.ChunkGeneratorSettings;
|
||||||
import org.checkerframework.checker.units.qual.C;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
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.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
import com.dfsek.terra.lifecycle.LifecyclePlatform;
|
||||||
import com.dfsek.terra.lifecycle.util.LifecycleUtil;
|
import com.dfsek.terra.lifecycle.util.LifecycleUtil;
|
||||||
|
import com.dfsek.terra.lifecycle.util.RegistryHack;
|
||||||
|
|
||||||
|
|
||||||
@Mixin(RegistryLoader.class)
|
@Mixin(RegistryLoader.class)
|
||||||
@@ -56,8 +52,9 @@ public class RegistryLoaderMixin {
|
|||||||
MutableRegistry<WorldPreset> worldPresets = extractRegistry(instance, RegistryKeys.WORLD_PRESET).orElseThrow();
|
MutableRegistry<WorldPreset> worldPresets = extractRegistry(instance, RegistryKeys.WORLD_PRESET).orElseThrow();
|
||||||
MutableRegistry<ChunkGeneratorSettings> chunkGeneratorSettings = extractRegistry(instance,
|
MutableRegistry<ChunkGeneratorSettings> chunkGeneratorSettings = extractRegistry(instance,
|
||||||
RegistryKeys.CHUNK_GENERATOR_SETTINGS).orElseThrow();
|
RegistryKeys.CHUNK_GENERATOR_SETTINGS).orElseThrow();
|
||||||
|
MutableRegistry<MultiNoiseBiomeSourceParameterList> multiNoiseBiomeSourceParameterLists = extractRegistry(instance, RegistryKeys.MULTI_NOISE_BIOME_SOURCE_PARAMETER_LIST).orElseThrow();
|
||||||
|
|
||||||
LifecyclePlatform.setRegistries(biomes, dimensionTypes, chunkGeneratorSettings);
|
LifecyclePlatform.setRegistries(biomes, dimensionTypes, chunkGeneratorSettings, multiNoiseBiomeSourceParameterLists);
|
||||||
LifecycleUtil.initialize(biomes, worldPresets);
|
LifecycleUtil.initialize(biomes, worldPresets);
|
||||||
});
|
});
|
||||||
instance.forEach(consumer);
|
instance.forEach(consumer);
|
||||||
|
|||||||
+6
-7
@@ -1,18 +1,15 @@
|
|||||||
package com.dfsek.terra.lifecycle.util;
|
package com.dfsek.terra.lifecycle.util;
|
||||||
|
|
||||||
import com.dfsek.terra.lifecycle.LifecyclePlatform;
|
|
||||||
|
|
||||||
import net.minecraft.registry.DynamicRegistryManager;
|
|
||||||
import net.minecraft.registry.MutableRegistry;
|
import net.minecraft.registry.MutableRegistry;
|
||||||
import net.minecraft.registry.Registry;
|
import net.minecraft.registry.Registry;
|
||||||
|
import net.minecraft.registry.RegistryKey;
|
||||||
import net.minecraft.registry.RegistryKeys;
|
import net.minecraft.registry.RegistryKeys;
|
||||||
|
import net.minecraft.world.biome.Biome;
|
||||||
|
import net.minecraft.world.gen.WorldPreset;
|
||||||
|
|
||||||
import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent;
|
import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent;
|
||||||
import com.dfsek.terra.mod.CommonPlatform;
|
import com.dfsek.terra.mod.CommonPlatform;
|
||||||
|
|
||||||
import net.minecraft.world.biome.Biome;
|
|
||||||
import net.minecraft.world.gen.WorldPreset;
|
|
||||||
|
|
||||||
|
|
||||||
public final class LifecycleUtil {
|
public final class LifecycleUtil {
|
||||||
private LifecycleUtil() {
|
private LifecycleUtil() {
|
||||||
@@ -21,7 +18,9 @@ public final class LifecycleUtil {
|
|||||||
|
|
||||||
public static void initialize(MutableRegistry<Biome> biomeMutableRegistry, MutableRegistry<WorldPreset> worldPresetMutableRegistry) {
|
public static void initialize(MutableRegistry<Biome> biomeMutableRegistry, MutableRegistry<WorldPreset> worldPresetMutableRegistry) {
|
||||||
CommonPlatform.get().getEventManager().callEvent(new PlatformInitializationEvent());
|
CommonPlatform.get().getEventManager().callEvent(new PlatformInitializationEvent());
|
||||||
|
|
||||||
BiomeUtil.registerBiomes(biomeMutableRegistry);
|
BiomeUtil.registerBiomes(biomeMutableRegistry);
|
||||||
CommonPlatform.get().registerWorldTypes((id, preset) -> Registry.register(worldPresetMutableRegistry, id, preset));
|
CommonPlatform.get().registerWorldTypes((id, preset) -> Registry.register(worldPresetMutableRegistry, RegistryKey.of(RegistryKeys.WORLD_PRESET, id), preset));
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user