Inspired by 2020's April Fools' 20w14infinite Snapshot, this mod brings endless randomly generated dimensions into Minecraft.
1package net.lerariemann.infinity;
2
3import net.lerariemann.infinity.access.MinecraftServerAccess;
4import net.lerariemann.infinity.dimensions.RandomText;
5import net.lerariemann.infinity.registry.core.*;
6import net.lerariemann.infinity.registry.var.*;
7
8import net.lerariemann.infinity.util.PlatformMethods;
9import net.lerariemann.infinity.util.core.RandomProvider;
10import net.lerariemann.infinity.util.config.ConfigManager;
11import net.minecraft.server.MinecraftServer;
12import net.minecraft.util.WorldSavePath;
13import org.slf4j.Logger;
14import org.slf4j.LoggerFactory;
15
16import java.nio.file.Path;
17import java.util.Random;
18
19public class InfinityMod {
20 public static final String MOD_ID = "infinity";
21 public static final Logger LOGGER = LoggerFactory.getLogger("Infinite Dimensions");
22 public static Path configPath = PlatformMethods.getConfigPath();
23 public static Path utilPath = configPath.resolve(".util");
24 public static Path invocationLock = configPath.resolve("modular/invocation.lock");
25 public static Path amendmentPath = configPath.resolve("amendments.json");
26
27 public static Path rootConfigPathInJar;
28 public static RandomProvider provider;
29 public static Random random = new Random(); //do not use this in dimgen, only in emergent block behaviour
30
31 public static void updateProvider(MinecraftServer server) {
32 RandomProvider p = new RandomProvider(server.getSavePath(WorldSavePath.DATAPACKS).resolve(MOD_ID));
33 p.kickGhostsOut(server.getRegistryManager());
34 provider = p;
35 if (!((MinecraftServerAccess)server).infinity$needsInvocation()) ModMaterialRules.RandomBlockMaterialRule.setProvider(p);
36 }
37
38 public static void init() {
39 rootConfigPathInJar = PlatformMethods.getRootConfigPath();
40 ConfigManager.updateInvocationUnlock();
41 ConfigManager.unpackDefaultConfigs();
42 ModStatusEffects.registerModEffects();
43 ModItemFunctions.registerItemFunctions();
44 ModEntities.registerEntities();
45 ModBlocks.registerModBlocks();
46 ModItems.registerModItems();
47 ModPayloads.registerC2SPacketsReceivers();
48 ModBlockEntities.registerBlockEntities();
49 ModPoi.registerPoi();
50 ModCommands.registerCommands();
51 ModDensityFunctionTypes.registerFunctions();
52 ModMaterialConditions.registerConditions();
53 ModMaterialRules.registerRules();
54 ModPlacementModifiers.registerModifiers();
55 ModStructureTypes.registerStructures();
56 ModSounds.registerSounds();
57 ModFeatures.registerFeatures();
58 ModStats.registerStats();
59 ModCriteria.registerCriteria();
60 RandomText.walkPaths();
61 provider = new RandomProvider();
62 }
63}