123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- package me.km;
- import java.util.function.Supplier;
- import me.kcm.Hooks;
- import me.km.blocks.ModBlocks;
- import me.km.networking.ModPacketHandler;
- import me.km.overrides.ModPlayerList;
- import me.km.world.WorldEvents;
- import net.minecraft.block.Block;
- import net.minecraft.block.Blocks;
- import net.minecraft.server.dedicated.DedicatedServer;
- import net.minecraft.world.gen.GenerationStage;
- import net.minecraft.world.gen.feature.ConfiguredFeature;
- import net.minecraft.world.gen.feature.DecoratedFeatureConfig;
- import net.minecraft.world.gen.feature.Feature;
- import net.minecraft.world.gen.feature.OreFeatureConfig;
- import net.minecraftforge.common.MinecraftForge;
- import net.minecraftforge.common.world.BiomeGenerationSettingsBuilder;
- import net.minecraftforge.event.world.BiomeLoadingEvent;
- import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
- import net.minecraftforge.fml.event.lifecycle.FMLDedicatedServerSetupEvent;
- import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
- import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
- import net.minecraftforge.fml.common.Mod;
- import net.minecraftforge.eventbus.api.IEventBus;
- import net.minecraftforge.eventbus.api.SubscribeEvent;
- import net.minecraftforge.fml.event.server.FMLServerStartingEvent;
- import net.minecraftforge.fml.event.server.FMLServerStoppedEvent;
- @Mod.EventBusSubscriber
- @Mod("km")
- public class KajetansMod {
- public static final String MODID = "km";
- public KajetansMod() {
- ClassLoaderUtils.loadDependencies();
- IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();
- bus.addListener(this::init);
- bus.addListener(this::clientInit);
- bus.addListener(this::serverInit);
- MinecraftForge.EVENT_BUS.register(this);
- }
- private void init(FMLCommonSetupEvent e) {
- ModPacketHandler.init();
- MinecraftForge.EVENT_BUS.register(new CommonEvents());
- }
- private void clientInit(FMLClientSetupEvent e) {
- Client.init();
- }
- private void serverInit(FMLDedicatedServerSetupEvent e) {
- MinecraftForge.EVENT_BUS.register(new WorldEvents());
- Hooks.setPlayerListFunction((ds, impl, pd) -> {
- ds.setPlayerList(new ModPlayerList(ds, impl, pd));
- });
- }
- @SubscribeEvent
- public void onServerStart(FMLServerStartingEvent e) {
- if(e.getServer().isDedicatedServer()) {
- Server.onStart((DedicatedServer) e.getServer());
- }
- }
- @SubscribeEvent
- public void onServerStop(FMLServerStoppedEvent e) {
- if(e.getServer().isDedicatedServer()) {
- Server.onStop();
- }
- }
- @SubscribeEvent
- public void onBiomeLoad(BiomeLoadingEvent e) {
- if(findOreBiome(e)) {
- addFeatures(e.getGeneration());
- }
- }
- private static boolean findOreBiome(BiomeLoadingEvent e) {
- for(Supplier<ConfiguredFeature<?, ?>> a : e.getGeneration()
- .getFeatures(GenerationStage.Decoration.UNDERGROUND_ORES)) {
- ConfiguredFeature<?, ?> cf = a.get();
- if(unpack(cf)) {
- return true;
- }
- }
- return false;
- }
- private static boolean unpack(ConfiguredFeature<?, ?> cf) {
- if(cf.config instanceof DecoratedFeatureConfig) {
- return unpack(((DecoratedFeatureConfig) cf.config).feature.get());
- } else if(cf.config instanceof OreFeatureConfig) {
- OreFeatureConfig oreConfig = (OreFeatureConfig) cf.config;
- if(oreConfig.state.getBlock() == Blocks.IRON_ORE) {
- return true;
- }
- }
- return false;
- }
- private static void addOre(BiomeGenerationSettingsBuilder builder, Block ore, int maxCount,
- int spawnTries, int maxHeight) {
- builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Feature.ORE
- .configured(new OreFeatureConfig(OreFeatureConfig.FillerBlockType.NATURAL_STONE,
- ore.defaultBlockState(), maxCount))
- .range(maxHeight).squared().count(spawnTries));
- }
- private static void addFeatures(BiomeGenerationSettingsBuilder builder) {
- addOre(builder, ModBlocks.copperOre, 9, 25, 128);
- addOre(builder, ModBlocks.tinOre, 6, 12, 96);
- addOre(builder, ModBlocks.silverOre, 9, 3, 64);
- }
- }
|