Posted February 28, 20214 yr Hello! I'm currently trying to add a custom fluid, however it seems to flow extremely weirdly. The source block only flows to some sides some of the time, and flowing blocks don't produce more flowing blocks of a lower level, and instead dissipate as if there were no source block! Any help would be greatly appreciated! MoltenSyrup.java public class MoltenSyrup extends FlowingFluid { @Override public Fluid getFlowingFluid() { return ModFluids.moltenSyrupFlowing.get(); } @Override public Fluid getStillFluid() { return ModFluids.moltenSyrup.get(); } @Override public boolean canSourcesMultiply() { return true; } @Override public void beforeReplacingBlock(IWorld worldIn, BlockPos pos, BlockState state) { worldIn.playEvent(1501, pos, 0); } @Override public int getSlopeFindDistance(IWorldReader worldIn) { return 4; } @Override public int getLevelDecreasePerBlock(IWorldReader worldIn) { return 1; } @Override public Item getFilledBucket() { return ModItems.moltenSyrupBucket.get(); } @Override public boolean canDisplace(FluidState fluidState, IBlockReader blockReader, BlockPos pos, Fluid fluid, Direction direction) { return false; } @Override public int getTickRate(IWorldReader p_205569_1_) { return 60; // Moves very slow, it's syrup after all. } @Override public float getExplosionResistance() { return 100.0F; } @Override public BlockState getBlockState(FluidState state) { return ModBlocks.moltenSyrupBlock.getBlock().get().getDefaultState() .with(FlowingFluidBlock.LEVEL, Integer.valueOf(getLevelFromState(state))); } @Override public boolean isSource(FluidState state) { return true; } @Override public int getLevel(FluidState state) { return 8; } @Override public FluidAttributes createAttributes() { return net.minecraftforge.fluids.FluidAttributes.builder( new ResourceLocation("block/molten_syrup_still"), new ResourceLocation("block/molten_syrup_flow")) .translationKey("block.survival_extras_2.molten_syrup") .luminosity(4).density(3000).viscosity(12000).temperature(775) .sound(SoundEvents.ITEM_BUCKET_FILL_LAVA, SoundEvents.ITEM_BUCKET_EMPTY_LAVA) .build(this); } public static class Flowing extends MoltenSyrup { protected void fillStateContainer(StateContainer.Builder<Fluid, FluidState> builder) { super.fillStateContainer(builder); builder.add(LEVEL_1_8); } public int getLevel(FluidState state) { return state.get(LEVEL_1_8); } public boolean isSource(FluidState state) { return false; } } public static class Source extends MoltenSyrup { public int getLevel(FluidState state) { return 8; } public boolean isSource(FluidState state) { return true; } } } Full repo is at https://github.com/hammy3502/survival-extras-2 Thank you for any help!
March 1, 20214 yr Author Was able to figure it out! For those stumbling across this, you need to Override the isEquivalentTo method in your fluid class to return true if the fluidIn matches your still fluid or your flowing fluid.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.