Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.mcreator.supernatural.block;
- import net.minecraftforge.registries.ObjectHolder;
- import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
- import net.minecraftforge.eventbus.api.SubscribeEvent;
- import net.minecraftforge.event.world.BiomeLoadingEvent;
- import net.minecraftforge.event.RegistryEvent;
- import net.minecraftforge.common.MinecraftForge;
- import net.minecraft.world.gen.feature.template.RuleTest;
- import net.minecraft.world.gen.feature.template.IRuleTestType;
- import net.minecraft.world.gen.feature.OreFeatureConfig;
- import net.minecraft.world.gen.feature.OreFeature;
- import net.minecraft.world.gen.feature.Feature;
- import net.minecraft.world.gen.feature.ConfiguredFeature;
- import net.minecraft.world.gen.GenerationStage;
- import net.minecraft.world.gen.ChunkGenerator;
- import net.minecraft.world.World;
- import net.minecraft.world.ISeedReader;
- import net.minecraft.world.IBlockReader;
- import net.minecraft.util.registry.WorldGenRegistries;
- import net.minecraft.util.registry.Registry;
- import net.minecraft.util.math.BlockPos;
- import net.minecraft.util.ResourceLocation;
- import net.minecraft.util.RegistryKey;
- import net.minecraft.loot.LootContext;
- import net.minecraft.item.ItemStack;
- import net.minecraft.item.ItemGroup;
- import net.minecraft.item.Item;
- import net.minecraft.item.BlockItem;
- import net.minecraft.block.material.Material;
- import net.minecraft.block.SoundType;
- import net.minecraft.block.FallingBlock;
- import net.minecraft.block.BlockState;
- import net.minecraft.block.Block;
- import net.mcreator.supernatural.SupernaturalModElements;
- import java.util.Random;
- import java.util.List;
- import java.util.Collections;
- @SupernaturalModElements.ModElement.Tag
- public class TilfkBlock extends SupernaturalModElements.ModElement {
- @ObjectHolder("supernatural:tilfk")
- public static final Block block = null;
- public TilfkBlock(SupernaturalModElements instance) {
- super(instance, 288);
- MinecraftForge.EVENT_BUS.register(this);
- FMLJavaModLoadingContext.get().getModEventBus().register(new FeatureRegisterHandler());
- }
- @Override
- public void initElements() {
- elements.blocks.add(() -> new CustomBlock());
- elements.items
- .add(() -> new BlockItem(block, new Item.Properties().group(ItemGroup.BUILDING_BLOCKS)).setRegistryName(block.getRegistryName()));
- }
- public static class CustomBlock extends FallingBlock {
- public CustomBlock() {
- super(Block.Properties.create(Material.SAND).sound(SoundType.GROUND).hardnessAndResistance(1f, 10f).setLightLevel(s -> 0));
- setRegistryName("tilfk");
- }
- @Override
- public int getOpacity(BlockState state, IBlockReader worldIn, BlockPos pos) {
- return 15;
- }
- @Override
- public List<ItemStack> getDrops(BlockState state, LootContext.Builder builder) {
- List<ItemStack> dropsOriginal = super.getDrops(state, builder);
- if (!dropsOriginal.isEmpty())
- return dropsOriginal;
- return Collections.singletonList(new ItemStack(this, 1));
- }
- }
- private static Feature<OreFeatureConfig> feature = null;
- private static ConfiguredFeature<?, ?> configuredFeature = null;
- private static IRuleTestType<CustomRuleTest> CUSTOM_MATCH = null;
- private static class CustomRuleTest extends RuleTest {
- static final CustomRuleTest INSTANCE = new CustomRuleTest();
- static final com.mojang.serialization.Codec<CustomRuleTest> codec = com.mojang.serialization.Codec.unit(() -> INSTANCE);
- public boolean test(BlockState blockAt, Random random) {
- boolean blockCriteria = false;
- if (blockAt.getBlock() == FurnamGrassBlock.block)
- blockCriteria = true;
- if (blockAt.getBlock() == ScorchedStoneBlock.block)
- blockCriteria = true;
- if (blockAt.getBlock() == FurnumDirtBlock.block)
- blockCriteria = true;
- return blockCriteria;
- }
- protected IRuleTestType<?> getType() {
- return CUSTOM_MATCH;
- }
- }
- private static class FeatureRegisterHandler {
- @SubscribeEvent
- public void registerFeature(RegistryEvent.Register<Feature<?>> event) {
- CUSTOM_MATCH = Registry.register(Registry.RULE_TEST, new ResourceLocation("supernatural:tilfk_match"), () -> CustomRuleTest.codec);
- feature = new OreFeature(OreFeatureConfig.CODEC) {
- @Override
- public boolean generate(ISeedReader world, ChunkGenerator generator, Random rand, BlockPos pos, OreFeatureConfig config) {
- RegistryKey<World> dimensionType = world.getWorld().getDimensionKey();
- boolean dimensionCriteria = false;
- if (dimensionType == RegistryKey.getOrCreateKey(Registry.WORLD_KEY, new ResourceLocation("supernatural:volcanica")))
- dimensionCriteria = true;
- if (!dimensionCriteria)
- return false;
- return super.generate(world, generator, rand, pos, config);
- }
- };
- configuredFeature = feature.withConfiguration(new OreFeatureConfig(CustomRuleTest.INSTANCE, block.getDefaultState(), 25)).range(64)
- .square().func_242731_b(32);
- event.getRegistry().register(feature.setRegistryName("tilfk"));
- Registry.register(WorldGenRegistries.CONFIGURED_FEATURE, new ResourceLocation("supernatural:tilfk"), configuredFeature);
- }
- }
- @SubscribeEvent
- public void addFeatureToBiomes(BiomeLoadingEvent event) {
- event.getGeneration().getFeatures(GenerationStage.Decoration.UNDERGROUND_ORES).add(() -> configuredFeature);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement