Skip to content

Instantly share code, notes, and snippets.

@HexBugOrion
Created May 14, 2020 20:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save HexBugOrion/b533ad1aae2370ebb0454a2dfd2c1fb4 to your computer and use it in GitHub Desktop.
Save HexBugOrion/b533ad1aae2370ebb0454a2dfd2c1fb4 to your computer and use it in GitHub Desktop.
package com.oriondev.baryon_biomes;
import com.oriondev.baryon_biomes.lists.BiomeInit;
import com.oriondev.baryon_biomes.lists.BlockInit;
import net.minecraft.block.Blocks;
import net.minecraft.item.BlockItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
import net.minecraft.world.biome.Biome;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.event.server.FMLServerStartingEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.IForgeRegistry;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@Mod("baryon_biomes")
@Mod.EventBusSubscriber(modid = BaryonBiomes.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
public class BaryonBiomes
{
public static BaryonBiomes instance;
public static final String MOD_ID = "baryon_biomes";
public static final Logger LOGGER = LogManager.getLogger();
public BaryonBiomes()
{
instance = this;
final IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
modEventBus.addListener(this::Setup);
modEventBus.addListener(this::ClientSetup);
BlockInit.BLOCKS.register(modEventBus);
BiomeInit.BIOMES.register(modEventBus);
MinecraftForge.EVENT_BUS.register(this);
}
@SubscribeEvent
public static void onRegisterItems(final RegistryEvent.Register<Item> event)
{
final IForgeRegistry<Item> registry = event.getRegistry();
BlockInit.BLOCKS.getEntries().stream().map(RegistryObject::get).forEach(block -> {
final Item.Properties properties = new Item.Properties().group(BaryonBiomesGroup.instance);
final BlockItem blockItem = new BlockItem(block, properties);
blockItem.setRegistryName(block.getRegistryName());
registry.register(blockItem);
});
}
@SubscribeEvent
public static void onRegisterBiomes(final RegistryEvent.Register<Biome> event)
{
BiomeInit.registerBiomes();
}
private void Setup ( final FMLCommonSetupEvent event)
{
}
private void ClientSetup ( final FMLClientSetupEvent event)
{
}
public void onServerStarting (FMLServerStartingEvent event)
{
}
public static class BaryonBiomesGroup extends ItemGroup{
public static final BaryonBiomesGroup instance = new BaryonBiomesGroup(ItemGroup.GROUPS.length, "baryon_biomes_group");
private BaryonBiomesGroup(int index, String label)
{
super(index, label);
}
@Override
public ItemStack createIcon() {
return new ItemStack(Blocks.SPRUCE_SAPLING);
}
}
}
package com.oriondev.baryon_biomes.lists;
import com.oriondev.baryon_biomes.BaryonBiomes;
import com.oriondev.baryon_biomes.world.biomes.PineForest;
import net.minecraft.block.Blocks;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig;
import net.minecraftforge.common.BiomeDictionary;
import net.minecraftforge.common.BiomeManager;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
public class BiomeInit {
public static final DeferredRegister<Biome> BIOMES = new DeferredRegister<>(ForgeRegistries.BIOMES, BaryonBiomes.MOD_ID);
public static final RegistryObject<Biome> PINE_FOREST = BIOMES.register("pine_forest", ()-> new PineForest(new Biome.Builder().precipitation(Biome.RainType.RAIN).temperature(0.25f).waterColor(16724639).waterFogColor(16724639).surfaceBuilder(SurfaceBuilder.DEFAULT, new SurfaceBuilderConfig(Blocks.GRASS_BLOCK.getDefaultState(), Blocks.DIRT.getDefaultState(), Blocks.DIRT.getDefaultState())).category(Biome.Category.TAIGA).downfall(0.1f).depth(0.6f).parent(null)));
public static void registerBiomes()
{
registerBiome(PINE_FOREST.get(), BiomeDictionary.Type.CONIFEROUS, BiomeDictionary.Type.FOREST, BiomeDictionary.Type.COLD);
}
private static void registerBiome(Biome biome, BiomeDictionary.Type... types)
{
BiomeDictionary.addTypes(biome,types);
BiomeManager.addSpawnBiome(biome);
}
}
package com.oriondev.baryon_biomes.lists;
import com.oriondev.baryon_biomes.BaryonBiomes;
import com.oriondev.baryon_biomes.world.biomes.PineForest;
import net.minecraft.block.Blocks;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig;
import net.minecraftforge.common.BiomeDictionary;
import net.minecraftforge.common.BiomeManager;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
public class BiomeInit {
public static final DeferredRegister<Biome> BIOMES = new DeferredRegister<>(ForgeRegistries.BIOMES, BaryonBiomes.MOD_ID);
public static final RegistryObject<Biome> PINE_FOREST = BIOMES.register("pine_forest", ()-> new PineForest(new Biome.Builder().precipitation(Biome.RainType.RAIN).temperature(0.25f).waterColor(16724639).waterFogColor(16724639).surfaceBuilder(SurfaceBuilder.DEFAULT, new SurfaceBuilderConfig(Blocks.GRASS_BLOCK.getDefaultState(), Blocks.DIRT.getDefaultState(), Blocks.DIRT.getDefaultState())).category(Biome.Category.TAIGA).downfall(0.1f).depth(0.6f).parent(null)));
public static void registerBiomes()
{
registerBiome(PINE_FOREST.get(), BiomeDictionary.Type.CONIFEROUS, BiomeDictionary.Type.FOREST, BiomeDictionary.Type.COLD);
}
private static void registerBiome(Biome biome, BiomeDictionary.Type... types)
{
BiomeDictionary.addTypes(biome,types);
BiomeManager.addSpawnBiome(biome);
}
}
package com.oriondev.baryon_biomes.world.biomes;
import com.oriondev.baryon_biomes.world.feature.PineTree;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.biome.DefaultBiomeFeatures;
import net.minecraft.world.gen.GenerationStage;
import net.minecraft.world.gen.carver.WorldCarver;
import net.minecraft.world.gen.feature.Feature;
import net.minecraft.world.gen.feature.ProbabilityConfig;
import net.minecraft.world.gen.placement.AtSurfaceWithExtraConfig;
import net.minecraft.world.gen.placement.Placement;
public class PineForest extends Biome {
public PineForest(Builder biomeBuilder)
{
super(biomeBuilder);
this.addSpawn(EntityClassification.CREATURE, new SpawnListEntry(EntityType.SHEEP, 10, 4, 5));
this.addSpawn(EntityClassification.CREATURE, new SpawnListEntry(EntityType.WOLF, 5, 4, 5));
this.addSpawn(EntityClassification.CREATURE, new SpawnListEntry(EntityType.FOX, 5, 4, 5));
this.addCarver(GenerationStage.Carving.AIR, Biome.createCarver(WorldCarver.CAVE, new ProbabilityConfig(0.14285715f)));
DefaultBiomeFeatures.addBerryBushes(this);
DefaultBiomeFeatures.addDefaultFlowers(this);
DefaultBiomeFeatures.addGrass(this);
DefaultBiomeFeatures.addTaigaLargeFerns(this);
this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Feature.NORMAL_TREE.withConfiguration(PineTree.PINE_TREE_CONFIG).withPlacement(Placement.COUNT_EXTRA_HEIGHTMAP.configure(new AtSurfaceWithExtraConfig(7, 0.1f, 1))));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment