Advertisement
Guest User

codepaste

a guest
Sep 14th, 2021
447
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.24 KB | None | 0 0
  1.  
  2. package net.mcreator.supernatural.block;
  3.  
  4. import net.minecraftforge.registries.ObjectHolder;
  5. import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
  6. import net.minecraftforge.eventbus.api.SubscribeEvent;
  7. import net.minecraftforge.event.world.BiomeLoadingEvent;
  8. import net.minecraftforge.event.RegistryEvent;
  9. import net.minecraftforge.common.MinecraftForge;
  10.  
  11. import net.minecraft.world.gen.feature.template.RuleTest;
  12. import net.minecraft.world.gen.feature.template.IRuleTestType;
  13. import net.minecraft.world.gen.feature.OreFeatureConfig;
  14. import net.minecraft.world.gen.feature.OreFeature;
  15. import net.minecraft.world.gen.feature.Feature;
  16. import net.minecraft.world.gen.feature.ConfiguredFeature;
  17. import net.minecraft.world.gen.GenerationStage;
  18. import net.minecraft.world.gen.ChunkGenerator;
  19. import net.minecraft.world.World;
  20. import net.minecraft.world.ISeedReader;
  21. import net.minecraft.world.IBlockReader;
  22. import net.minecraft.util.registry.WorldGenRegistries;
  23. import net.minecraft.util.registry.Registry;
  24. import net.minecraft.util.math.BlockPos;
  25. import net.minecraft.util.ResourceLocation;
  26. import net.minecraft.util.RegistryKey;
  27. import net.minecraft.loot.LootContext;
  28. import net.minecraft.item.ItemStack;
  29. import net.minecraft.item.ItemGroup;
  30. import net.minecraft.item.Item;
  31. import net.minecraft.item.BlockItem;
  32. import net.minecraft.block.material.Material;
  33. import net.minecraft.block.SoundType;
  34. import net.minecraft.block.FallingBlock;
  35. import net.minecraft.block.BlockState;
  36. import net.minecraft.block.Block;
  37.  
  38. import net.mcreator.supernatural.SupernaturalModElements;
  39.  
  40. import java.util.Random;
  41. import java.util.List;
  42. import java.util.Collections;
  43.  
  44. @SupernaturalModElements.ModElement.Tag
  45. public class TilfkBlock extends SupernaturalModElements.ModElement {
  46.     @ObjectHolder("supernatural:tilfk")
  47.     public static final Block block = null;
  48.     public TilfkBlock(SupernaturalModElements instance) {
  49.         super(instance, 288);
  50.         MinecraftForge.EVENT_BUS.register(this);
  51.         FMLJavaModLoadingContext.get().getModEventBus().register(new FeatureRegisterHandler());
  52.     }
  53.  
  54.     @Override
  55.     public void initElements() {
  56.         elements.blocks.add(() -> new CustomBlock());
  57.         elements.items
  58.                 .add(() -> new BlockItem(block, new Item.Properties().group(ItemGroup.BUILDING_BLOCKS)).setRegistryName(block.getRegistryName()));
  59.     }
  60.     public static class CustomBlock extends FallingBlock {
  61.         public CustomBlock() {
  62.             super(Block.Properties.create(Material.SAND).sound(SoundType.GROUND).hardnessAndResistance(1f, 10f).setLightLevel(s -> 0));
  63.             setRegistryName("tilfk");
  64.         }
  65.  
  66.         @Override
  67.         public int getOpacity(BlockState state, IBlockReader worldIn, BlockPos pos) {
  68.             return 15;
  69.         }
  70.  
  71.         @Override
  72.         public List<ItemStack> getDrops(BlockState state, LootContext.Builder builder) {
  73.             List<ItemStack> dropsOriginal = super.getDrops(state, builder);
  74.             if (!dropsOriginal.isEmpty())
  75.                 return dropsOriginal;
  76.             return Collections.singletonList(new ItemStack(this, 1));
  77.         }
  78.     }
  79.     private static Feature<OreFeatureConfig> feature = null;
  80.     private static ConfiguredFeature<?, ?> configuredFeature = null;
  81.     private static IRuleTestType<CustomRuleTest> CUSTOM_MATCH = null;
  82.     private static class CustomRuleTest extends RuleTest {
  83.         static final CustomRuleTest INSTANCE = new CustomRuleTest();
  84.         static final com.mojang.serialization.Codec<CustomRuleTest> codec = com.mojang.serialization.Codec.unit(() -> INSTANCE);
  85.         public boolean test(BlockState blockAt, Random random) {
  86.             boolean blockCriteria = false;
  87.             if (blockAt.getBlock() == FurnamGrassBlock.block)
  88.                 blockCriteria = true;
  89.             if (blockAt.getBlock() == ScorchedStoneBlock.block)
  90.                 blockCriteria = true;
  91.             if (blockAt.getBlock() == FurnumDirtBlock.block)
  92.                 blockCriteria = true;
  93.             return blockCriteria;
  94.         }
  95.  
  96.         protected IRuleTestType<?> getType() {
  97.             return CUSTOM_MATCH;
  98.         }
  99.     }
  100.  
  101.     private static class FeatureRegisterHandler {
  102.         @SubscribeEvent
  103.         public void registerFeature(RegistryEvent.Register<Feature<?>> event) {
  104.             CUSTOM_MATCH = Registry.register(Registry.RULE_TEST, new ResourceLocation("supernatural:tilfk_match"), () -> CustomRuleTest.codec);
  105.             feature = new OreFeature(OreFeatureConfig.CODEC) {
  106.                 @Override
  107.                 public boolean generate(ISeedReader world, ChunkGenerator generator, Random rand, BlockPos pos, OreFeatureConfig config) {
  108.                     RegistryKey<World> dimensionType = world.getWorld().getDimensionKey();
  109.                     boolean dimensionCriteria = false;
  110.                     if (dimensionType == RegistryKey.getOrCreateKey(Registry.WORLD_KEY, new ResourceLocation("supernatural:volcanica")))
  111.                         dimensionCriteria = true;
  112.                     if (!dimensionCriteria)
  113.                         return false;
  114.                     return super.generate(world, generator, rand, pos, config);
  115.                 }
  116.             };
  117.             configuredFeature = feature.withConfiguration(new OreFeatureConfig(CustomRuleTest.INSTANCE, block.getDefaultState(), 25)).range(64)
  118.                     .square().func_242731_b(32);
  119.             event.getRegistry().register(feature.setRegistryName("tilfk"));
  120.             Registry.register(WorldGenRegistries.CONFIGURED_FEATURE, new ResourceLocation("supernatural:tilfk"), configuredFeature);
  121.         }
  122.     }
  123.     @SubscribeEvent
  124.     public void addFeatureToBiomes(BiomeLoadingEvent event) {
  125.         event.getGeneration().getFeatures(GenerationStage.Decoration.UNDERGROUND_ORES).add(() -> configuredFeature);
  126.     }
  127. }
  128.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement