Vaerys_Dawn

Tile Entity mutation

Jan 26th, 2021
571
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.                 mutation = -V
  2.  
  3.     public class IBlockMutation {
  4.         public MutationTypes type;
  5.         public RandomCollection<Pair<Block, MutationOutputData>> outputs;
  6.         public Mutation mutationData;
  7.  
  8.         public IBlockMutation(MutationTypes type, Mutation mutationData) {
  9.             this.type = type;
  10.             this.outputs = new RandomCollection<>();
  11.             this.mutationData = mutationData;
  12.         }
  13.  
  14.         public IBlockMutation addBlock(Block block, double weight, double chance, CompoundNBT nbt) {
  15.             if (weight <= 0) weight = mutationData.getDefaultWeight();
  16.             if (chance <= 0) chance = mutationData.getDefaultChance();
  17.             outputs.add(weight, Pair.of(block, new MutationOutputData(chance, weight, nbt)));
  18.             return this;
  19.         }
  20.     }
  21.  
  22.                                
  23.                 if (mutation != null) {
  24.                     Pair<Block, MutationData.MutationOutputData> output = mutation.outputs.next();
  25.                     float nextFloat = world.rand.nextFloat();
  26.                     if (output.getRight().chance >= nextFloat) {
  27.                         world.playEvent(2005, beePosDown, 0);
  28.                         world.setBlockState(beePosDown, output.getKey().getDefaultState());
  29.                         BlockState state1 = world.getBlockState(beePosDown);
  30.                         TileEntity tile = world.getTileEntity(beePosDown);
  31.                         if (tile != null) {
  32.                             tile.fromTag(block.getDefaultState(), output.getRight().nbt);
  33.                             tile.updateContainingBlockInfo();
  34.                             tile.validate();
  35.                             tile.markDirty();
  36.                         }
  37.                     }
  38.                     addCropCounter();
  39.                     return;
  40.                 }
RAW Paste Data