BCLib/src/main/java/org/betterx/bclib/BCLib.java
2022-06-06 01:00:50 +02:00

104 lines
4.3 KiB
Java

package org.betterx.bclib;
import net.minecraft.core.Registry;
import net.minecraft.data.BuiltinRegistries;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.biome.*;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.impl.biome.NetherBiomeData;
import net.fabricmc.loader.api.FabricLoader;
import org.betterx.bclib.api.WorldDataAPI;
import org.betterx.bclib.api.dataexchange.DataExchangeAPI;
import org.betterx.bclib.api.dataexchange.handler.autosync.*;
import org.betterx.bclib.api.features.blockpredicates.Types;
import org.betterx.bclib.api.features.placement.PlacementModifiers;
import org.betterx.bclib.api.surface.rules.Conditions;
import org.betterx.bclib.api.tag.TagAPI;
import org.betterx.bclib.commands.CommandRegistry;
import org.betterx.bclib.config.Configs;
import org.betterx.bclib.presets.worldgen.BCLWorldPresets;
import org.betterx.bclib.recipes.AnvilRecipe;
import org.betterx.bclib.recipes.CraftingRecipes;
import org.betterx.bclib.registry.BaseBlockEntities;
import org.betterx.bclib.registry.BaseRegistry;
import org.betterx.bclib.util.Logger;
import org.betterx.bclib.world.generator.BCLibEndBiomeSource;
import org.betterx.bclib.world.generator.BCLibNetherBiomeSource;
import org.betterx.bclib.world.generator.GeneratorOptions;
import org.betterx.bclib.world.structures.TemplatePiece;
import java.util.List;
public class BCLib implements ModInitializer {
public static final String MOD_ID = "bclib";
public static final String TOGETHER_WORLDS = "worlds_together";
public static final Logger LOGGER = new Logger(MOD_ID);
@Override
public void onInitialize() {
Types.ensureStaticInitialization();
BaseRegistry.register();
GeneratorOptions.init();
BaseBlockEntities.register();
BCLibEndBiomeSource.register();
BCLibNetherBiomeSource.register();
TagAPI.init();
CraftingRecipes.init();
WorldDataAPI.registerModCache(MOD_ID);
WorldDataAPI.registerModCache(TOGETHER_WORLDS);
DataExchangeAPI.registerMod(MOD_ID);
BCLWorldPresets.registerPresets();
AnvilRecipe.register();
Conditions.registerAll();
CommandRegistry.register();
DataExchangeAPI.registerDescriptors(List.of(
HelloClient.DESCRIPTOR,
HelloServer.DESCRIPTOR,
RequestFiles.DESCRIPTOR,
SendFiles.DESCRIPTOR,
Chunker.DESCRIPTOR
)
);
BCLibPatch.register();
TemplatePiece.ensureStaticInitialization();
PlacementModifiers.ensureStaticInitialization();
Configs.save();
if (isDevEnvironment()) {
Biome.BiomeBuilder builder = new Biome.BiomeBuilder()
.precipitation(Biome.Precipitation.NONE)
.temperature(1.0f)
.downfall(1.0f)
.mobSpawnSettings(new MobSpawnSettings.Builder().build())
.specialEffects(new BiomeSpecialEffects.Builder().fogColor(0xff00ff)
.waterColor(0xff00ff)
.waterFogColor(0xff00ff)
.skyColor(0xff00ff)
.build())
.generationSettings(new BiomeGenerationSettings.Builder().build());
Biome biome = builder.build();
ResourceLocation loc = makeID("testbiome");
biome = Registry.register(BuiltinRegistries.BIOME, loc, biome);
ResourceKey<Biome> key = BuiltinRegistries.BIOME.getResourceKey(biome).orElseThrow();
NetherBiomeData.addNetherBiome(key, Climate.parameters(-1, 1, 0, 0, 0, 0, 0));
}
}
public static boolean isDevEnvironment() {
return FabricLoader.getInstance().isDevelopmentEnvironment();
}
public static boolean isClient() {
return FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT;
}
public static ResourceLocation makeID(String path) {
return new ResourceLocation(MOD_ID, path);
}
}