Skyriiis

FluidClass

May 14th, 2020
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.80 KB | None | 0 0
  1. package de.blutmondgilde.blutmondrpg.fluids;
  2.  
  3. import de.blutmondgilde.blutmondrpg.blocks.BlockList;
  4. import de.blutmondgilde.blutmondrpg.items.ItemList;
  5. import de.blutmondgilde.blutmondrpg.util.Ref;
  6. import net.minecraft.fluid.Fluid;
  7. import net.minecraft.fluid.IFluidState;
  8. import net.minecraft.item.Rarity;
  9. import net.minecraft.state.StateContainer;
  10. import net.minecraft.util.ResourceLocation;
  11. import net.minecraft.util.SoundEvents;
  12. import net.minecraftforge.fluids.FluidAttributes;
  13. import net.minecraftforge.fluids.ForgeFlowingFluid;
  14.  
  15. import java.util.function.Supplier;
  16.  
  17. public abstract class FluidCrystallizer extends ForgeFlowingFluid {
  18.     protected FluidCrystallizer() {
  19.         this(
  20.                 FluidList.CRYSTALLIZER,
  21.                 FluidList.CRYSTALLIZER_FLOWING,
  22.                 FluidAttributes.builder(
  23.                         new ResourceLocation(Ref.MOD_ID, "blocks/crystallizer_still"),
  24.                         new ResourceLocation(Ref.MOD_ID, "blocks/crystallizer_flow")
  25.                 )
  26.                         .sound(SoundEvents.ITEM_BUCKET_FILL, SoundEvents.ITEM_BUCKET_EMPTY)
  27.                         .density(1001)
  28.                         .viscosity(300)
  29.                         .temperature(40)
  30.                         .rarity(Rarity.EPIC)
  31.         );
  32.     }
  33.  
  34.     protected FluidCrystallizer(final Supplier<? extends Fluid> still, final Supplier<? extends Fluid> flowing, final FluidAttributes.Builder attributes) {
  35.         super(new ForgeFlowingFluid.Properties(still, flowing, attributes)
  36.                 .bucket(ItemList.CRYSTALLIZER_BUCKET)
  37.                 .block(BlockList.CRYSTALLIZER_FLUID)
  38.                 .tickRate(4)
  39.                 .explosionResistance(100.0F)
  40.                 .levelDecreasePerBlock(1)
  41.                 .slopeFindDistance(4)
  42.         );
  43.     }
  44.  
  45.  
  46.     @Override
  47.     public boolean isEquivalentTo(Fluid fluidIn) {
  48.         return fluidIn == FluidList.CRYSTALLIZER.get() || fluidIn == FluidList.CRYSTALLIZER_FLOWING.get();
  49.     }
  50.  
  51.     public static class Source extends FluidCrystallizer {
  52.         @Override
  53.         public boolean isSource(IFluidState state) {
  54.             return true;
  55.         }
  56.  
  57.         @Override
  58.         public int getLevel(IFluidState p_207192_1_) {
  59.             return 8;
  60.         }
  61.     }
  62.  
  63.     public static class Flowing extends FluidCrystallizer {
  64.  
  65.         @Override
  66.         public boolean isSource(IFluidState state) {
  67.             return false;
  68.         }
  69.  
  70.         @Override
  71.         public int getLevel(IFluidState fluidState) {
  72.             return fluidState.get(FluidCrystallizer.LEVEL_1_8);
  73.         }
  74.  
  75.         @Override
  76.         protected void fillStateContainer(StateContainer.Builder<Fluid, IFluidState> builder) {
  77.             super.fillStateContainer(builder);
  78.             builder.add(LEVEL_1_8);
  79.         }
  80.     }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment