Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // in ColorHandler
- public static void onBlockColors(ColorHandlerEvent.Block event) {
- BlockColors colors = event.getBlockColors();
- BEE_REGISTRY.getBees().forEach(((s, customBeeData) -> {
- if (customBeeData.hasHoneycomb() && customBeeData.getColorData().hasHoneycombColor() && !customBeeData.hasCustomDrop()) {
- registerBlocks(colors, HoneycombBlock::getBlockColor, customBeeData.getCombBlockRegistryObject().get());
- }
- }));
- BEE_REGISTRY.getHoneyBottles().forEach((h, honeyData) -> {
- registerBlocks(colors, CustomHoneyBlock::getBlockColor, honeyData.getHoneyBlockRegistryObject().get());
- registerBlocks(colors, CustomHoneyFluidBlock::getBlockColor, honeyData.getHoneyFluidBlockRegistryObject().get());
- });
- }
- private static void registerBlocks(BlockColors handler, IBlockColor blockColor, Block... blocks) {
- try {
- handler.register(blockColor, blocks);
- } catch (NullPointerException ex) {
- LOGGER.error("BlockColor Registration Failed", ex);
- }
- }
- // in CustomHoneyFluidBlock
- public static int getBlockColor(BlockState state, @Nullable IBlockReader world, @Nullable BlockPos pos, int tintIndex) {
- CustomHoneyFluidBlock honeycombBlock = ((CustomHoneyFluidBlock) state.getBlock());
- return honeycombBlock.honeyData.isRainbow() ? RainbowColor.getRGB() : honeycombBlock.getHoneyColor();
- }
- @Override
- public void animateTick(@Nonnull BlockState stateIn, @Nonnull World world, @Nonnull BlockPos pos, @Nonnull Random rand) {
- if (honeyData.isRainbow())
- world.notifyBlockUpdate(pos, stateIn, stateIn, 2);
- super.animateTick(stateIn, world, pos, rand);
- }
- // in Regisrty Handler
- private static Map<String, RegistryObject<FlowingFluid>> stillFluids = new HashMap<>();
- private static Map<String, RegistryObject<FlowingFluid>> flowingFluids = new HashMap<>();
- private static Map<String, RegistryObject<Item>> honeyBuckets = new HashMap<>();
- private static Map<String, RegistryObject<FlowingFluidBlock>> fluidBlocks = new HashMap<>();
- private static void registerHoneyBottle(String name, HoneyBottleData honeyData) {
- final RegistryObject<Block> customHoneyBlock = ModBlocks.BLOCKS.register(name + "_honey_block", () -> new CustomHoneyBlock(honeyData));
- final RegistryObject<Item> customHoneyBottle = ModItems.ITEMS.register(name + "_honey_bottle", () -> new CustomHoneyBottleItem(honeyData.getProperties(), honeyData));
- final RegistryObject<Item> customHoneyBlockItem = ModItems.ITEMS.register(name + "_honey_block", () -> new BlockItem(customHoneyBlock.get(), new Item.Properties().group(ItemGroupResourcefulBees.RESOURCEFUL_BEES)));
- stillFluids.put(name, ModFluids.FLUIDS.register(name + "_honey", () -> new ForgeFlowingFluid.Source(makeProperties(name, honeyData))));
- flowingFluids.put(name, ModFluids.FLUIDS.register(name + "_honey_flowing", () -> new ForgeFlowingFluid.Flowing(makeProperties(name, honeyData))));
- honeyBuckets.put(name, ModItems.ITEMS.register(name + "_honey_fluid_bucket", () -> new CustomHoneyBucketItem(stillFluids.get(name), new Item.Properties().group(ItemGroupResourcefulBees.RESOURCEFUL_BEES).containerItem(Items.BUCKET).maxStackSize(1), honeyData)));
- fluidBlocks.put(name, ModBlocks.BLOCKS.register(name + "_honey_fluid_block", () -> new CustomHoneyFluidBlock(stillFluids.get(name), Block.Properties.create(Material.WATER).doesNotBlockMovement().hardnessAndResistance(100.0F).noDrops(), honeyData)));
- honeyData.setHoneyBottleRegistryObject(customHoneyBottle);
- honeyData.setHoneyBlockRegistryObject(customHoneyBlock);
- honeyData.setHoneyBlockItemRegistryObject(customHoneyBlockItem);
- honeyData.setHoneyStillFluidRegistryObject(stillFluids.get(name));
- honeyData.setHoneyFlowingFluidRegistryObject(stillFluids.get(name));
- honeyData.setHoneyBucketItemRegistryObject(honeyBuckets.get(name));
- honeyData.setHoneyFluidBlockRegistryObject(fluidBlocks.get(name));
- }
- private static ForgeFlowingFluid.Properties makeProperties(String name, HoneyBottleData honeyData) {
- FluidAttributes.Builder builder;
- builder = FluidAttributes.builder(ModFluids.CUSTOM_FLUID_STILL, ModFluids.CUSTOM_FLUID_FLOWING);
- builder.overlay(ModFluids.CUSTOM_FLUID_OVERLAY);
- // builder.color(honeyData.getHoneyColorInt());
- builder.sound(SoundEvents.ITEM_BUCKET_FILL, SoundEvents.ITEM_BUCKET_EMPTY);
- builder.density(1300);
- builder.temperature(300);
- builder.viscosity(1800);
- return new ForgeFlowingFluid.Properties(stillFluids.get(name), flowingFluids.get(name), builder)
- .bucket(honeyBuckets.get(name))
- .block(fluidBlocks.get(name))
- .tickRate(20);
- }
Advertisement
Add Comment
Please, Sign In to add comment