Skip to content

Commit

Permalink
rename a few plant block classes(#555) (#567)
Browse files Browse the repository at this point in the history
* renamed a few plant block classes so short_grass is not a FernBlock and AbstractPlantBlock is more specific

* getStemHeadPos -> getTop

* drop invalid mappings

* renamed AbstractPlantPartBlock and subclasses to be more consistent and differentiate between stem and body

---------

Co-authored-by: supersaiyansubtlety <[email protected]>
  • Loading branch information
pyrox0 and supersaiyansubtlety authored Mar 20, 2024
1 parent 00dc8a6 commit f89d28f
Show file tree
Hide file tree
Showing 13 changed files with 26 additions and 26 deletions.
13 changes: 5 additions & 8 deletions mappings/net/minecraft/block/AbstractPlantBlock.mapping
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
CLASS net/minecraft/unmapped/C_ymdmcjuw net/minecraft/block/AbstractPlantBlock
METHOD m_evmdilba copyState (Lnet/minecraft/unmapped/C_txtbiemp;Lnet/minecraft/unmapped/C_txtbiemp;)Lnet/minecraft/unmapped/C_txtbiemp;
ARG 1 from
ARG 2 to
METHOD m_pxnibpqz getStemHeadPos (Lnet/minecraft/unmapped/C_peaveboq;Lnet/minecraft/unmapped/C_hynzadkk;Lnet/minecraft/unmapped/C_mmxmpdoq;)Ljava/util/Optional;
ARG 1 world
ARG 2 pos
ARG 3 block
CLASS net/minecraft/unmapped/C_bgdokvym net/minecraft/block/AbstractPlantBlock
METHOD m_hjbkfomn canPlantOnTop (Lnet/minecraft/unmapped/C_txtbiemp;Lnet/minecraft/unmapped/C_peaveboq;Lnet/minecraft/unmapped/C_hynzadkk;)Z
ARG 1 floor
ARG 2 world
ARG 3 pos
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
CLASS net/minecraft/unmapped/C_tjjbvqha net/minecraft/block/CaveVinesHeadBlock
CLASS net/minecraft/unmapped/C_tjjbvqha net/minecraft/block/CaveVinesStemBlock
FIELD f_bizyzzct GROW_CHANCE F
FIELD f_xyccjset CODEC Lcom/mojang/serialization/MapCodec;
4 changes: 0 additions & 4 deletions mappings/net/minecraft/block/FernBlock.mapping

This file was deleted.

8 changes: 8 additions & 0 deletions mappings/net/minecraft/block/GrowingPlantBodyBlock.mapping
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
CLASS net/minecraft/unmapped/C_ymdmcjuw net/minecraft/block/GrowingPlantBodyBlock
METHOD m_evmdilba copyState (Lnet/minecraft/unmapped/C_txtbiemp;Lnet/minecraft/unmapped/C_txtbiemp;)Lnet/minecraft/unmapped/C_txtbiemp;
ARG 1 from
ARG 2 to
METHOD m_pxnibpqz getTop (Lnet/minecraft/unmapped/C_peaveboq;Lnet/minecraft/unmapped/C_hynzadkk;Lnet/minecraft/unmapped/C_mmxmpdoq;)Ljava/util/Optional;
ARG 1 world
ARG 2 pos
ARG 3 block
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
CLASS net/minecraft/unmapped/C_nplyatkk net/minecraft/block/AbstractPlantPartBlock
CLASS net/minecraft/unmapped/C_nplyatkk net/minecraft/block/GrowingPlantPartBlock
FIELD f_apoyndpe growthDirection Lnet/minecraft/unmapped/C_xpuuihxf;
FIELD f_ofvlmmit outlineShape Lnet/minecraft/unmapped/C_zscvhwbd;
FIELD f_tihjwtms tickWater Z
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
CLASS net/minecraft/unmapped/C_blxdfgoo net/minecraft/block/AbstractPlantStemBlock
CLASS net/minecraft/unmapped/C_blxdfgoo net/minecraft/block/GrowingPlantStemBlock
FIELD f_drqdtktb MAX_AGE I
FIELD f_kvrvqbax growthChance D
FIELD f_mhlybdzv AGE Lnet/minecraft/unmapped/C_vltzvhxi;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
CLASS net/minecraft/unmapped/C_jroajikn net/minecraft/block/KelpPlantBlock
CLASS net/minecraft/unmapped/C_jroajikn net/minecraft/block/KelpBodyBlock
FIELD f_fttubtes CODEC Lcom/mojang/serialization/MapCodec;
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
CLASS net/minecraft/unmapped/C_wsemxjau net/minecraft/block/KelpBlock
CLASS net/minecraft/unmapped/C_wsemxjau net/minecraft/block/KelpStemBlock
FIELD f_ercsvgna SHAPE Lnet/minecraft/unmapped/C_zscvhwbd;
FIELD f_tqarfqdq CODEC Lcom/mojang/serialization/MapCodec;
FIELD f_zmzjfiqm GROWTH_CHANCE D
9 changes: 4 additions & 5 deletions mappings/net/minecraft/block/PlantBlock.mapping
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
CLASS net/minecraft/unmapped/C_bgdokvym net/minecraft/block/PlantBlock
METHOD m_hjbkfomn canPlantOnTop (Lnet/minecraft/unmapped/C_txtbiemp;Lnet/minecraft/unmapped/C_peaveboq;Lnet/minecraft/unmapped/C_hynzadkk;)Z
ARG 1 floor
ARG 2 world
ARG 3 pos
CLASS net/minecraft/unmapped/C_bvcepqzm net/minecraft/block/PlantBlock
FIELD f_qyuqzcwy SHAPE_OFFSET F
FIELD f_timqrnkw CODEC Lcom/mojang/serialization/MapCodec;
FIELD f_wzftyblo SHAPE Lnet/minecraft/unmapped/C_zscvhwbd;
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
CLASS net/minecraft/unmapped/C_ufumenmv net/minecraft/block/TwistingVinesPlantBlock
CLASS net/minecraft/unmapped/C_ufumenmv net/minecraft/block/TwistingVinesBodyBlock
FIELD f_sqtfgxip CODEC Lcom/mojang/serialization/MapCodec;
FIELD f_twhvhcnj SHAPE Lnet/minecraft/unmapped/C_zscvhwbd;
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
CLASS net/minecraft/unmapped/C_qhmdojum net/minecraft/block/TwistingVinesBlock
CLASS net/minecraft/unmapped/C_qhmdojum net/minecraft/block/TwistingVinesStemBlock
FIELD f_fuyatvtt SHAPE Lnet/minecraft/unmapped/C_zscvhwbd;
FIELD f_prxdnchy CODEC Lcom/mojang/serialization/MapCodec;
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
CLASS net/minecraft/unmapped/C_rzwldhpd net/minecraft/block/WeepingVinesPlantBlock
CLASS net/minecraft/unmapped/C_rzwldhpd net/minecraft/block/WeepingVinesBodyBlock
FIELD f_jmhjsffw SHAPE Lnet/minecraft/unmapped/C_zscvhwbd;
FIELD f_kaigugzq CODEC Lcom/mojang/serialization/MapCodec;
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
CLASS net/minecraft/unmapped/C_zovnlieh net/minecraft/block/WeepingVinesBlock
CLASS net/minecraft/unmapped/C_zovnlieh net/minecraft/block/WeepingVinesStemBlock
FIELD f_gieteumd SHAPE Lnet/minecraft/unmapped/C_zscvhwbd;
FIELD f_gyzjfoti CODEC Lcom/mojang/serialization/MapCodec;

1 comment on commit f89d28f

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With commit f89d28f, 28 file(s) were updated with 112 line(s) added and 159 removed compared to the latest Quilt Mappings version.

View the diff here:
diff -bur namedTargetSrc/net/minecraft/block/AbstractPlantBlock.java namedSrc/net/minecraft/block/AbstractPlantBlock.java
--- namedTargetSrc/net/minecraft/block/AbstractPlantBlock.java	2024-03-20 17:58:47.846882832 +0000
+++ namedSrc/net/minecraft/block/AbstractPlantBlock.java	2024-03-20 17:57:39.509603052 +0000
@@ -1,32 +1,25 @@
 package net.minecraft.block;
 
 import com.mojang.serialization.MapCodec;
-import java.util.Optional;
-import net.minecraft.fluid.Fluids;
-import net.minecraft.item.ItemPlacementContext;
-import net.minecraft.item.ItemStack;
-import net.minecraft.server.world.ServerWorld;
+import net.minecraft.entity.ai.pathing.NavigationType;
+import net.minecraft.registry.tag.BlockTags;
 import net.minecraft.util.math.BlockPos;
 import net.minecraft.util.math.Direction;
-import net.minecraft.util.random.RandomGenerator;
-import net.minecraft.util.shape.VoxelShape;
-import net.minecraft.world.BlockLocating;
 import net.minecraft.world.BlockView;
-import net.minecraft.world.World;
 import net.minecraft.world.WorldAccess;
 import net.minecraft.world.WorldView;
 
 /**
- * @mapping {@literal hashed net/minecraft/unmapped/C_ymdmcjuw}
+ * @mapping {@literal hashed net/minecraft/unmapped/C_bgdokvym}
  * @mapping {@literal named net/minecraft/block/AbstractPlantBlock}
  */
-public abstract class AbstractPlantBlock extends AbstractPlantPartBlock implements Fertilizable {
+public abstract class AbstractPlantBlock extends Block {
    /**
-    * @mapping {@literal hashed <init> Lnet/minecraft/unmapped/C_ymdmcjuw;<init>(Lnet/minecraft/unmapped/C_triydqro$C_xnkxsdfy;Lnet/minecraft/unmapped/C_xpuuihxf;Lnet/minecraft/unmapped/C_zscvhwbd;Z)V}
-    * @mapping {@literal named <init> Lnet/minecraft/block/AbstractPlantBlock;<init>(Lnet/minecraft/block/AbstractBlock$Settings;Lnet/minecraft/util/math/Direction;Lnet/minecraft/util/shape/VoxelShape;Z)V}
+    * @mapping {@literal hashed <init> Lnet/minecraft/unmapped/C_bgdokvym;<init>(Lnet/minecraft/unmapped/C_triydqro$C_xnkxsdfy;)V}
+    * @mapping {@literal named <init> Lnet/minecraft/block/AbstractPlantBlock;<init>(Lnet/minecraft/block/AbstractBlock$Settings;)V}
     */
-   protected AbstractPlantBlock(AbstractBlock.Settings settings, Direction direction, VoxelShape arg3, boolean bl) {
-      super(settings, direction, arg3, bl);
+   protected AbstractPlantBlock(AbstractBlock.Settings settings) {
+      super(settings);
    }
 
    /**
@@ -36,11 +29,11 @@
    protected abstract MapCodec<? extends AbstractPlantBlock> getCodec();
 
    /**
-    * @mapping {@literal hashed m_evmdilba Lnet/minecraft/unmapped/C_ymdmcjuw;m_evmdilba(Lnet/minecraft/unmapped/C_txtbiemp;Lnet/minecraft/unmapped/C_txtbiemp;)Lnet/minecraft/unmapped/C_txtbiemp;}
-    * @mapping {@literal named copyState Lnet/minecraft/block/AbstractPlantBlock;copyState(Lnet/minecraft/block/BlockState;Lnet/minecraft/block/BlockState;)Lnet/minecraft/block/BlockState;}
+    * @mapping {@literal hashed m_hjbkfomn Lnet/minecraft/unmapped/C_bgdokvym;m_hjbkfomn(Lnet/minecraft/unmapped/C_txtbiemp;Lnet/minecraft/unmapped/C_peaveboq;Lnet/minecraft/unmapped/C_hynzadkk;)Z}
+    * @mapping {@literal named canPlantOnTop Lnet/minecraft/block/AbstractPlantBlock;canPlantOnTop(Lnet/minecraft/block/BlockState;Lnet/minecraft/world/BlockView;Lnet/minecraft/util/math/BlockPos;)Z}
     */
-   protected BlockState copyState(BlockState from, BlockState to) {
-      return to;
+   protected boolean canPlantOnTop(BlockState floor, BlockView world, BlockPos pos) {
+      return floor.isIn(BlockTags.DIRT) || floor.isOf(Blocks.FARMLAND);
    }
 
    /**
@@ -50,81 +43,34 @@
    protected BlockState getStateForNeighborUpdate(
       BlockState state, Direction direction, BlockState neighborState, WorldAccess world, BlockPos pos, BlockPos neighborPos
    ) {
-      if (direction == this.growthDirection.getOpposite() && !state.canPlaceAt(world, pos)) {
-         world.scheduleBlockTick(pos, this, 1);
-      }
-
-      AbstractPlantStemBlock lv = this.getStem();
-      if (direction == this.growthDirection && !neighborState.isOf(this) && !neighborState.isOf(lv)) {
-         return this.copyState(state, lv.getRandomGrowthState(world));
-      } else {
-         if (this.tickWater) {
-            world.scheduleFluidTick(pos, Fluids.WATER, Fluids.WATER.getTickRate(world));
-         }
-
-         return super.getStateForNeighborUpdate(state, direction, neighborState, world, pos, neighborPos);
-      }
+      return !state.canPlaceAt(world, pos)
+         ? Blocks.AIR.getDefaultState()
+         : super.getStateForNeighborUpdate(state, direction, neighborState, world, pos, neighborPos);
    }
 
    /**
     * Mapping not found
     */
    @Override
-   public ItemStack getPickStack(WorldView world, BlockPos pos, BlockState state) {
-      return new ItemStack(this.getStem());
+   protected boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) {
+      BlockPos lv = pos.down();
+      return this.canPlantOnTop(world.getBlockState(lv), world, lv);
    }
 
    /**
     * Mapping not found
     */
    @Override
-   public boolean isFertilizable(WorldView world, BlockPos pos, BlockState state) {
-      Optional<BlockPos> optional = this.getStemHeadPos(world, pos, state.getBlock());
-      return optional.isPresent() && this.getStem().chooseStemState(world.getBlockState(((BlockPos)optional.get()).offset(this.growthDirection)));
+   protected boolean isTransparent(BlockState state, BlockView world, BlockPos pos) {
+      return state.getFluidState().isEmpty();
    }
 
    /**
-    * Mapping not found
-    */
-   @Override
-   public boolean canFertilize(World world, RandomGenerator random, BlockPos pos, BlockState state) {
-      return true;
-   }
-
-   /**
-    * Mapping not found
-    */
-   @Override
-   public void fertilize(ServerWorld world, RandomGenerator random, BlockPos pos, BlockState state) {
-      Optional<BlockPos> optional = this.getStemHeadPos(world, pos, state.getBlock());
-      if (optional.isPresent()) {
-         BlockState lv = world.getBlockState((BlockPos)optional.get());
-         ((AbstractPlantStemBlock)lv.getBlock()).fertilize(world, random, (BlockPos)optional.get(), lv);
-      }
-   }
-
-   /**
-    * @mapping {@literal hashed m_pxnibpqz Lnet/minecraft/unmapped/C_ymdmcjuw;m_pxnibpqz(Lnet/minecraft/unmapped/C_peaveboq;Lnet/minecraft/unmapped/C_hynzadkk;Lnet/minecraft/unmapped/C_mmxmpdoq;)Ljava/util/Optional;}
-    * @mapping {@literal named getStemHeadPos Lnet/minecraft/block/AbstractPlantBlock;getStemHeadPos(Lnet/minecraft/world/BlockView;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/Block;)Ljava/util/Optional;}
-    */
-   private Optional<BlockPos> getStemHeadPos(BlockView world, BlockPos pos, Block block) {
-      return BlockLocating.findColumnEnd(world, pos, block, this.growthDirection, this.getStem());
-   }
-
-   /**
-    * Mapping not found
-    */
-   @Override
-   protected boolean canReplace(BlockState state, ItemPlacementContext context) {
-      boolean bl = super.canReplace(state, context);
-      return bl && context.getStack().isOf(this.getStem().asItem()) ? false : bl;
-   }
-
-   /**
-    * Mapping not found
+    * @mapping {@literal hashed m_rwctfady Lnet/minecraft/unmapped/C_bgdokvym;m_rwctfady(Lnet/minecraft/unmapped/C_txtbiemp;Lnet/minecraft/unmapped/C_kjwlgpfr;)Z}
+    * @mapping {@literal named m_rwctfady Lnet/minecraft/block/AbstractPlantBlock;m_rwctfady(Lnet/minecraft/block/BlockState;Lnet/minecraft/entity/ai/pathing/NavigationType;)Z}
     */
    @Override
-   protected Block getPlant() {
-      return this;
+   protected boolean m_rwctfady(BlockState state, NavigationType arg2) {
+      return arg2 == NavigationType.AIR && !this.collidable ? true : super.m_rwctfady(state, arg2);
    }
 }
Only in namedTargetSrc/net/minecraft/block: AbstractPlantPartBlock.java
Only in namedTargetSrc/net/minecraft/block: AbstractPlantStemBlock.java
diff -bur namedTargetSrc/net/minecraft/block/AttachedStemBlock.java namedSrc/net/minecraft/block/AttachedStemBlock.java
--- namedTargetSrc/net/minecraft/block/AttachedStemBlock.java	2024-03-20 17:58:48.062886750 +0000
+++ namedSrc/net/minecraft/block/AttachedStemBlock.java	2024-03-20 17:57:39.517603211 +0000
@@ -26,7 +26,7 @@
  * @mapping {@literal hashed net/minecraft/unmapped/C_khgfyxfg}
  * @mapping {@literal named net/minecraft/block/AttachedStemBlock}
  */
-public class AttachedStemBlock extends PlantBlock {
+public class AttachedStemBlock extends AbstractPlantBlock {
    /**
     * @mapping {@literal hashed f_lcjxatqe Lnet/minecraft/unmapped/C_khgfyxfg;f_lcjxatqe:Lcom/mojang/serialization/MapCodec;}
     * @mapping {@literal named CODEC Lnet/minecraft/block/AttachedStemBlock;CODEC:Lcom/mojang/serialization/MapCodec;}
diff -bur namedTargetSrc/net/minecraft/block/AzaleaBlock.java namedSrc/net/minecraft/block/AzaleaBlock.java
--- namedTargetSrc/net/minecraft/block/AzaleaBlock.java	2024-03-20 17:58:48.034886242 +0000
+++ namedSrc/net/minecraft/block/AzaleaBlock.java	2024-03-20 17:57:39.485602575 +0000
@@ -14,7 +14,7 @@
  * @mapping {@literal hashed net/minecraft/unmapped/C_snzosjdh}
  * @mapping {@literal named net/minecraft/block/AzaleaBlock}
  */
-public class AzaleaBlock extends PlantBlock implements Fertilizable {
+public class AzaleaBlock extends AbstractPlantBlock implements Fertilizable {
    /**
     * @mapping {@literal hashed f_mymswsiw Lnet/minecraft/unmapped/C_snzosjdh;f_mymswsiw:Lcom/mojang/serialization/MapCodec;}
     * @mapping {@literal named CODEC Lnet/minecraft/block/AzaleaBlock;CODEC:Lcom/mojang/serialization/MapCodec;}
diff -bur namedTargetSrc/net/minecraft/block/Blocks.java namedSrc/net/minecraft/block/Blocks.java
--- namedTargetSrc/net/minecraft/block/Blocks.java	2024-03-20 17:58:47.918884138 +0000
+++ namedSrc/net/minecraft/block/Blocks.java	2024-03-20 17:57:39.361600106 +0000
@@ -1306,7 +1306,7 @@
     */
    public static final Block SHORT_GRASS = register(
       "short_grass",
-      new FernBlock(
+      new PlantBlock(
          AbstractBlock.Settings.create()
             .mapColor(MapColor.PLANT)
             .replaceable()
@@ -1324,7 +1324,7 @@
     */
    public static final Block FERN = register(
       "fern",
-      new FernBlock(
+      new PlantBlock(
          AbstractBlock.Settings.create()
             .mapColor(MapColor.PLANT)
             .replaceable()
@@ -7868,7 +7868,7 @@
     */
    public static final Block KELP = register(
       "kelp",
-      new KelpBlock(
+      new KelpStemBlock(
          AbstractBlock.Settings.create()
             .mapColor(MapColor.WATER)
             .noCollision()
@@ -7884,7 +7884,7 @@
     */
    public static final Block KELP_PLANT = register(
       "kelp_plant",
-      new KelpPlantBlock(
+      new KelpBodyBlock(
          AbstractBlock.Settings.create()
             .mapColor(MapColor.WATER)
             .noCollision()
@@ -9255,7 +9255,7 @@
     */
    public static final Block WEEPING_VINES = register(
       "weeping_vines",
-      new WeepingVinesBlock(
+      new WeepingVinesStemBlock(
          AbstractBlock.Settings.create()
             .mapColor(MapColor.NETHER)
             .ticksRandomly()
@@ -9271,7 +9271,7 @@
     */
    public static final Block WEEPING_VINES_PLANT = register(
       "weeping_vines_plant",
-      new WeepingVinesPlantBlock(
+      new WeepingVinesBodyBlock(
          AbstractBlock.Settings.create()
             .mapColor(MapColor.NETHER)
             .noCollision()
@@ -9286,7 +9286,7 @@
     */
    public static final Block TWISTING_VINES = register(
       "twisting_vines",
-      new TwistingVinesBlock(
+      new TwistingVinesStemBlock(
          AbstractBlock.Settings.create()
             .mapColor(MapColor.CYAN)
             .ticksRandomly()
@@ -9302,7 +9302,7 @@
     */
    public static final Block TWISTING_VINES_PLANT = register(
       "twisting_vines_plant",
-      new TwistingVinesPlantBlock(
+      new TwistingVinesBodyBlock(
          AbstractBlock.Settings.create()
             .mapColor(MapColor.CYAN)
             .noCollision()
@@ -11024,7 +11024,7 @@
     */
    public static final Block CAVE_VINES = register(
       "cave_vines",
-      new CaveVinesHeadBlock(
+      new CaveVinesStemBlock(
          AbstractBlock.Settings.create()
             .mapColor(MapColor.PLANT)
             .ticksRandomly()
diff -bur namedTargetSrc/net/minecraft/block/BlockTypes.java namedSrc/net/minecraft/block/BlockTypes.java
--- namedTargetSrc/net/minecraft/block/BlockTypes.java	2024-03-20 17:58:48.006885734 +0000
+++ namedSrc/net/minecraft/block/BlockTypes.java	2024-03-20 17:57:39.457602017 +0000
@@ -77,7 +77,7 @@
       Registry.register(registry, "cartography_table", CartographyTableBlock.CODEC);
       Registry.register(registry, "carved_pumpkin", EquippableCarvedPumpkinBlock.CODEC);
       Registry.register(registry, "cauldron", CauldronBlock.CODEC);
-      Registry.register(registry, "cave_vines", CaveVinesHeadBlock.CODEC);
+      Registry.register(registry, "cave_vines", CaveVinesStemBlock.CODEC);
       Registry.register(registry, "cave_vines_plant", CaveVinesBodyBlock.CODEC);
       Registry.register(registry, "ceiling_hanging_sign", CeilingHangingSignBlock.CODEC);
       Registry.register(registry, "chain", ChainBlock.CODEC);
@@ -148,8 +148,8 @@
       Registry.register(registry, "jack_o_lantern", CarvedPumpkinBlock.CODEC);
       Registry.register(registry, "jigsaw", JigsawBlock.CODEC);
       Registry.register(registry, "jukebox", JukeboxBlock.CODEC);
-      Registry.register(registry, "kelp", KelpBlock.CODEC);
-      Registry.register(registry, "kelp_plant", KelpPlantBlock.CODEC);
+      Registry.register(registry, "kelp", KelpStemBlock.CODEC);
+      Registry.register(registry, "kelp_plant", KelpBodyBlock.CODEC);
       Registry.register(registry, "ladder", LadderBlock.CODEC);
       Registry.register(registry, "lantern", LanternBlock.CODEC);
       Registry.register(registry, "lava_cauldron", LavaCauldronBlock.CODEC);
@@ -237,7 +237,7 @@
       Registry.register(registry, "sugar_cane", SugarCaneBlock.CODEC);
       Registry.register(registry, "sweet_berry_bush", SweetBerryBushBlock.CODEC);
       Registry.register(registry, "tall_flower", TallFlowerBlock.CODEC);
-      Registry.register(registry, "tall_grass", FernBlock.CODEC);
+      Registry.register(registry, "tall_grass", PlantBlock.CODEC);
       Registry.register(registry, "tall_seagrass", TallSeagrassBlock.CODEC);
       Registry.register(registry, "target", TargetBlock.CODEC);
       Registry.register(registry, "tinted_glass", TintedGlassBlock.CODEC);
@@ -251,8 +251,8 @@
       Registry.register(registry, "trip_wire_hook", TripwireHookBlock.CODEC);
       Registry.register(registry, "tripwire", TripwireBlock.CODEC);
       Registry.register(registry, "turtle_egg", TurtleEggBlock.CODEC);
-      Registry.register(registry, "twisting_vines_plant", TwistingVinesPlantBlock.CODEC);
-      Registry.register(registry, "twisting_vines", TwistingVinesBlock.CODEC);
+      Registry.register(registry, "twisting_vines_plant", TwistingVinesBodyBlock.CODEC);
+      Registry.register(registry, "twisting_vines", TwistingVinesStemBlock.CODEC);
       Registry.register(registry, "vault", VaultBlock.CODEC);
       Registry.register(registry, "vine", VineBlock.CODEC);
       Registry.register(registry, "wall_banner", WallBannerBlock.CODEC);
@@ -271,8 +271,8 @@
       Registry.register(registry, "weathering_copper_stair", OxidizableStairsBlock.CODEC);
       Registry.register(registry, "weathering_copper_trap_door", CopperTrapdoorBlock.CODEC);
       Registry.register(registry, "web", CobwebBlock.CODEC);
-      Registry.register(registry, "weeping_vines_plant", WeepingVinesPlantBlock.CODEC);
-      Registry.register(registry, "weeping_vines", WeepingVinesBlock.CODEC);
+      Registry.register(registry, "weeping_vines_plant", WeepingVinesBodyBlock.CODEC);
+      Registry.register(registry, "weeping_vines", WeepingVinesStemBlock.CODEC);
       Registry.register(registry, "weighted_pressure_plate", WeightedPressurePlateBlock.CODEC);
       Registry.register(registry, "wet_sponge", WetSpongeBlock.CODEC);
       Registry.register(registry, "wither_rose", WitherRoseBlock.CODEC);
diff -bur namedTargetSrc/net/minecraft/block/CaveVinesBodyBlock.java namedSrc/net/minecraft/block/CaveVinesBodyBlock.java
--- namedTargetSrc/net/minecraft/block/CaveVinesBodyBlock.java	2024-03-20 17:58:48.054886605 +0000
+++ namedSrc/net/minecraft/block/CaveVinesBodyBlock.java	2024-03-20 17:57:39.505602972 +0000
@@ -18,7 +18,7 @@
  * @mapping {@literal hashed net/minecraft/unmapped/C_nondkjda}
  * @mapping {@literal named net/minecraft/block/CaveVinesBodyBlock}
  */
-public class CaveVinesBodyBlock extends AbstractPlantBlock implements Fertilizable, CaveVines {
+public class CaveVinesBodyBlock extends GrowingPlantBodyBlock implements Fertilizable, CaveVines {
    /**
     * @mapping {@literal hashed f_xnhjauzn Lnet/minecraft/unmapped/C_nondkjda;f_xnhjauzn:Lcom/mojang/serialization/MapCodec;}
     * @mapping {@literal named CODEC Lnet/minecraft/block/CaveVinesBodyBlock;CODEC:Lcom/mojang/serialization/MapCodec;}
@@ -46,8 +46,8 @@
     * Mapping not found
     */
    @Override
-   protected AbstractPlantStemBlock getStem() {
-      return (AbstractPlantStemBlock)Blocks.CAVE_VINES;
+   protected GrowingPlantStemBlock getStem() {
+      return (GrowingPlantStemBlock)Blocks.CAVE_VINES;
    }
 
    /**
Only in namedTargetSrc/net/minecraft/block: CaveVinesHeadBlock.java
Only in namedSrc/net/minecraft/block: CaveVinesStemBlock.java
diff -bur namedTargetSrc/net/minecraft/block/CropBlock.java namedSrc/net/minecraft/block/CropBlock.java
--- namedTargetSrc/net/minecraft/block/CropBlock.java	2024-03-20 17:58:47.834882614 +0000
+++ namedSrc/net/minecraft/block/CropBlock.java	2024-03-20 17:57:39.245597798 +0000
@@ -23,7 +23,7 @@
  * @mapping {@literal hashed net/minecraft/unmapped/C_rhzoiqkd}
  * @mapping {@literal named net/minecraft/block/CropBlock}
  */
-public class CropBlock extends PlantBlock implements Fertilizable {
+public class CropBlock extends AbstractPlantBlock implements Fertilizable {
    /**
     * @mapping {@literal hashed f_mwwdlpaw Lnet/minecraft/unmapped/C_rhzoiqkd;f_mwwdlpaw:Lcom/mojang/serialization/MapCodec;}
     * @mapping {@literal named CODEC Lnet/minecraft/block/CropBlock;CODEC:Lcom/mojang/serialization/MapCodec;}
diff -bur namedTargetSrc/net/minecraft/block/DeadBushBlock.java namedSrc/net/minecraft/block/DeadBushBlock.java
--- namedTargetSrc/net/minecraft/block/DeadBushBlock.java	2024-03-20 17:58:48.066886823 +0000
+++ namedSrc/net/minecraft/block/DeadBushBlock.java	2024-03-20 17:57:39.517603211 +0000
@@ -10,7 +10,7 @@
  * @mapping {@literal hashed net/minecraft/unmapped/C_ifokhfls}
  * @mapping {@literal named net/minecraft/block/DeadBushBlock}
  */
-public class DeadBushBlock extends PlantBlock {
+public class DeadBushBlock extends AbstractPlantBlock {
    /**
     * @mapping {@literal hashed f_hjqbsabw Lnet/minecraft/unmapped/C_ifokhfls;f_hjqbsabw:Lcom/mojang/serialization/MapCodec;}
     * @mapping {@literal named CODEC Lnet/minecraft/block/DeadBushBlock;CODEC:Lcom/mojang/serialization/MapCodec;}
Only in namedTargetSrc/net/minecraft/block: FernBlock.java
diff -bur namedTargetSrc/net/minecraft/block/FlowerBlock.java namedSrc/net/minecraft/block/FlowerBlock.java
--- namedTargetSrc/net/minecraft/block/FlowerBlock.java	2024-03-20 17:58:48.046886460 +0000
+++ namedSrc/net/minecraft/block/FlowerBlock.java	2024-03-20 17:57:39.501602893 +0000
@@ -17,7 +17,7 @@
  * @mapping {@literal hashed net/minecraft/unmapped/C_zhojkkij}
  * @mapping {@literal named net/minecraft/block/FlowerBlock}
  */
-public class FlowerBlock extends PlantBlock implements SuspiciousStewEffectContainer {
+public class FlowerBlock extends AbstractPlantBlock implements SuspiciousStewEffectContainer {
    /**
     * @mapping {@literal hashed f_itvocsaf Lnet/minecraft/unmapped/C_zhojkkij;f_itvocsaf:Lcom/mojang/serialization/MapCodec;}
     * @mapping {@literal named SUSPICIOUS_STEW_CODEC Lnet/minecraft/block/FlowerBlock;SUSPICIOUS_STEW_CODEC:Lcom/mojang/serialization/MapCodec;}
diff -bur namedTargetSrc/net/minecraft/block/FungusBlock.java namedSrc/net/minecraft/block/FungusBlock.java
--- namedTargetSrc/net/minecraft/block/FungusBlock.java	2024-03-20 17:58:48.066886823 +0000
+++ namedSrc/net/minecraft/block/FungusBlock.java	2024-03-20 17:57:39.521603291 +0000
@@ -21,7 +21,7 @@
  * @mapping {@literal hashed net/minecraft/unmapped/C_naobsnoy}
  * @mapping {@literal named net/minecraft/block/FungusBlock}
  */
-public class FungusBlock extends PlantBlock implements Fertilizable {
+public class FungusBlock extends AbstractPlantBlock implements Fertilizable {
    /**
     * @mapping {@literal hashed f_edwbfowq Lnet/minecraft/unmapped/C_naobsnoy;f_edwbfowq:Lcom/mojang/serialization/MapCodec;}
     * @mapping {@literal named CODEC Lnet/minecraft/block/FungusBlock;CODEC:Lcom/mojang/serialization/MapCodec;}
Only in namedSrc/net/minecraft/block: GrowingPlantBodyBlock.java
Only in namedSrc/net/minecraft/block: GrowingPlantPartBlock.java
Only in namedSrc/net/minecraft/block: GrowingPlantStemBlock.java
Only in namedTargetSrc/net/minecraft/block: KelpBlock.java
Only in namedSrc/net/minecraft/block: KelpBodyBlock.java
Only in namedTargetSrc/net/minecraft/block: KelpPlantBlock.java
Only in namedSrc/net/minecraft/block: KelpStemBlock.java
diff -bur namedTargetSrc/net/minecraft/block/LilyPadBlock.java namedSrc/net/minecraft/block/LilyPadBlock.java
--- namedTargetSrc/net/minecraft/block/LilyPadBlock.java	2024-03-20 17:58:47.998885589 +0000
+++ namedSrc/net/minecraft/block/LilyPadBlock.java	2024-03-20 17:57:39.449601858 +0000
@@ -15,7 +15,7 @@
  * @mapping {@literal hashed net/minecraft/unmapped/C_scakpyla}
  * @mapping {@literal named net/minecraft/block/LilyPadBlock}
  */
-public class LilyPadBlock extends PlantBlock {
+public class LilyPadBlock extends AbstractPlantBlock {
    /**
     * @mapping {@literal hashed f_yffmmnzf Lnet/minecraft/unmapped/C_scakpyla;f_yffmmnzf:Lcom/mojang/serialization/MapCodec;}
     * @mapping {@literal named CODEC Lnet/minecraft/block/LilyPadBlock;CODEC:Lcom/mojang/serialization/MapCodec;}
diff -bur namedTargetSrc/net/minecraft/block/MushroomPlantBlock.java namedSrc/net/minecraft/block/MushroomPlantBlock.java
--- namedTargetSrc/net/minecraft/block/MushroomPlantBlock.java	2024-03-20 17:58:47.950884719 +0000
+++ namedSrc/net/minecraft/block/MushroomPlantBlock.java	2024-03-20 17:57:39.401600903 +0000
@@ -20,7 +20,7 @@
  * @mapping {@literal hashed net/minecraft/unmapped/C_iesiegeg}
  * @mapping {@literal named net/minecraft/block/MushroomPlantBlock}
  */
-public class MushroomPlantBlock extends PlantBlock implements Fertilizable {
+public class MushroomPlantBlock extends AbstractPlantBlock implements Fertilizable {
    /**
     * @mapping {@literal hashed f_zkjlwdqb Lnet/minecraft/unmapped/C_iesiegeg;f_zkjlwdqb:Lcom/mojang/serialization/MapCodec;}
     * @mapping {@literal named CODEC Lnet/minecraft/block/MushroomPlantBlock;CODEC:Lcom/mojang/serialization/MapCodec;}
diff -bur namedTargetSrc/net/minecraft/block/NetherWartBlock.java namedSrc/net/minecraft/block/NetherWartBlock.java
--- namedTargetSrc/net/minecraft/block/NetherWartBlock.java	2024-03-20 17:58:48.022886024 +0000
+++ namedSrc/net/minecraft/block/NetherWartBlock.java	2024-03-20 17:57:39.477602415 +0000
@@ -17,7 +17,7 @@
  * @mapping {@literal hashed net/minecraft/unmapped/C_xwlxakin}
  * @mapping {@literal named net/minecraft/block/NetherWartBlock}
  */
-public class NetherWartBlock extends PlantBlock {
+public class NetherWartBlock extends AbstractPlantBlock {
    /**
     * @mapping {@literal hashed f_wmdhcpor Lnet/minecraft/unmapped/C_xwlxakin;f_wmdhcpor:Lcom/mojang/serialization/MapCodec;}
     * @mapping {@literal named CODEC Lnet/minecraft/block/NetherWartBlock;CODEC:Lcom/mojang/serialization/MapCodec;}
diff -bur namedTargetSrc/net/minecraft/block/PinkPetalsBlock.java namedSrc/net/minecraft/block/PinkPetalsBlock.java
--- namedTargetSrc/net/minecraft/block/PinkPetalsBlock.java	2024-03-20 17:58:47.914884065 +0000
+++ namedSrc/net/minecraft/block/PinkPetalsBlock.java	2024-03-20 17:57:39.361600106 +0000
@@ -25,7 +25,7 @@
  * @mapping {@literal hashed net/minecraft/unmapped/C_onsqqphm}
  * @mapping {@literal named net/minecraft/block/PinkPetalsBlock}
  */
-public class PinkPetalsBlock extends PlantBlock implements Fertilizable {
+public class PinkPetalsBlock extends AbstractPlantBlock implements Fertilizable {
    /**
     * @mapping {@literal hashed f_ntmfpxfc Lnet/minecraft/unmapped/C_onsqqphm;f_ntmfpxfc:Lcom/mojang/serialization/MapCodec;}
     * @mapping {@literal named CODEC Lnet/minecraft/block/PinkPetalsBlock;CODEC:Lcom/mojang/serialization/MapCodec;}
diff -bur namedTargetSrc/net/minecraft/block/PlantBlock.java namedSrc/net/minecraft/block/PlantBlock.java
--- namedTargetSrc/net/minecraft/block/PlantBlock.java	2024-03-20 17:58:48.054886605 +0000
+++ namedSrc/net/minecraft/block/PlantBlock.java	2024-03-20 17:57:39.253597957 +0000
@@ -1,76 +1,83 @@
 package net.minecraft.block;
 
 import com.mojang.serialization.MapCodec;
-import net.minecraft.entity.ai.pathing.NavigationType;
-import net.minecraft.registry.tag.BlockTags;
+import net.minecraft.server.world.ServerWorld;
 import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.math.Direction;
+import net.minecraft.util.random.RandomGenerator;
+import net.minecraft.util.shape.VoxelShape;
 import net.minecraft.world.BlockView;
-import net.minecraft.world.WorldAccess;
+import net.minecraft.world.World;
 import net.minecraft.world.WorldView;
 
 /**
- * @mapping {@literal hashed net/minecraft/unmapped/C_bgdokvym}
+ * @mapping {@literal hashed net/minecraft/unmapped/C_bvcepqzm}
  * @mapping {@literal named net/minecraft/block/PlantBlock}
  */
-public abstract class PlantBlock extends Block {
+public class PlantBlock extends AbstractPlantBlock implements Fertilizable {
    /**
-    * @mapping {@literal hashed <init> Lnet/minecraft/unmapped/C_bgdokvym;<init>(Lnet/minecraft/unmapped/C_triydqro$C_xnkxsdfy;)V}
-    * @mapping {@literal named <init> Lnet/minecraft/block/PlantBlock;<init>(Lnet/minecraft/block/AbstractBlock$Settings;)V}
+    * @mapping {@literal hashed f_timqrnkw Lnet/minecraft/unmapped/C_bvcepqzm;f_timqrnkw:Lcom/mojang/serialization/MapCodec;}
+    * @mapping {@literal named CODEC Lnet/minecraft/block/PlantBlock;CODEC:Lcom/mojang/serialization/MapCodec;}
     */
-   protected PlantBlock(AbstractBlock.Settings settings) {
-      super(settings);
-   }
+   public static final MapCodec<PlantBlock> CODEC = createCodec(PlantBlock::new);
+   /**
+    * @mapping {@literal hashed f_qyuqzcwy Lnet/minecraft/unmapped/C_bvcepqzm;f_qyuqzcwy:F}
+    * @mapping {@literal named SHAPE_OFFSET Lnet/minecraft/block/PlantBlock;SHAPE_OFFSET:F}
+    */
+   protected static final float SHAPE_OFFSET = 6.0F;
+   /**
+    * @mapping {@literal hashed f_wzftyblo Lnet/minecraft/unmapped/C_bvcepqzm;f_wzftyblo:Lnet/minecraft/unmapped/C_zscvhwbd;}
+    * @mapping {@literal named SHAPE Lnet/minecraft/block/PlantBlock;SHAPE:Lnet/minecraft/util/shape/VoxelShape;}
+    */
+   protected static final VoxelShape SHAPE = Block.createCuboidShape(2.0, 0.0, 2.0, 14.0, 13.0, 14.0);
 
    /**
     * Mapping not found
     */
    @Override
-   protected abstract MapCodec<? extends PlantBlock> getCodec();
+   public MapCodec<PlantBlock> getCodec() {
+      return CODEC;
+   }
 
    /**
-    * @mapping {@literal hashed m_hjbkfomn Lnet/minecraft/unmapped/C_bgdokvym;m_hjbkfomn(Lnet/minecraft/unmapped/C_txtbiemp;Lnet/minecraft/unmapped/C_peaveboq;Lnet/minecraft/unmapped/C_hynzadkk;)Z}
-    * @mapping {@literal named canPlantOnTop Lnet/minecraft/block/PlantBlock;canPlantOnTop(Lnet/minecraft/block/BlockState;Lnet/minecraft/world/BlockView;Lnet/minecraft/util/math/BlockPos;)Z}
+    * @mapping {@literal hashed <init> Lnet/minecraft/unmapped/C_bvcepqzm;<init>(Lnet/minecraft/unmapped/C_triydqro$C_xnkxsdfy;)V}
+    * @mapping {@literal named <init> Lnet/minecraft/block/PlantBlock;<init>(Lnet/minecraft/block/AbstractBlock$Settings;)V}
     */
-   protected boolean canPlantOnTop(BlockState floor, BlockView world, BlockPos pos) {
-      return floor.isIn(BlockTags.DIRT) || floor.isOf(Blocks.FARMLAND);
+   protected PlantBlock(AbstractBlock.Settings settings) {
+      super(settings);
    }
 
    /**
     * Mapping not found
     */
    @Override
-   protected BlockState getStateForNeighborUpdate(
-      BlockState state, Direction direction, BlockState neighborState, WorldAccess world, BlockPos pos, BlockPos neighborPos
-   ) {
-      return !state.canPlaceAt(world, pos)
-         ? Blocks.AIR.getDefaultState()
-         : super.getStateForNeighborUpdate(state, direction, neighborState, world, pos, neighborPos);
+   protected VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) {
+      return SHAPE;
    }
 
    /**
     * Mapping not found
     */
    @Override
-   protected boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) {
-      BlockPos lv = pos.down();
-      return this.canPlantOnTop(world.getBlockState(lv), world, lv);
+   public boolean isFertilizable(WorldView world, BlockPos pos, BlockState state) {
+      return true;
    }
 
    /**
     * Mapping not found
     */
    @Override
-   protected boolean isTransparent(BlockState state, BlockView world, BlockPos pos) {
-      return state.getFluidState().isEmpty();
+   public boolean canFertilize(World world, RandomGenerator random, BlockPos pos, BlockState state) {
+      return true;
    }
 
    /**
-    * @mapping {@literal hashed m_rwctfady Lnet/minecraft/unmapped/C_bgdokvym;m_rwctfady(Lnet/minecraft/unmapped/C_txtbiemp;Lnet/minecraft/unmapped/C_kjwlgpfr;)Z}
-    * @mapping {@literal named m_rwctfady Lnet/minecraft/block/PlantBlock;m_rwctfady(Lnet/minecraft/block/BlockState;Lnet/minecraft/entity/ai/pathing/NavigationType;)Z}
+    * Mapping not found
     */
    @Override
-   protected boolean m_rwctfady(BlockState state, NavigationType arg2) {
-      return arg2 == NavigationType.AIR && !this.collidable ? true : super.m_rwctfady(state, arg2);
+   public void fertilize(ServerWorld world, RandomGenerator random, BlockPos pos, BlockState state) {
+      TallPlantBlock lv = (TallPlantBlock)(state.isOf(Blocks.FERN) ? Blocks.LARGE_FERN : Blocks.TALL_GRASS);
+      if (lv.getDefaultState().canPlaceAt(world, pos) && world.isAir(pos.up())) {
+         TallPlantBlock.placeAt(world, lv.getDefaultState(), pos, 2);
+      }
    }
 }
diff -bur namedTargetSrc/net/minecraft/block/RootsBlock.java namedSrc/net/minecraft/block/RootsBlock.java
--- namedTargetSrc/net/minecraft/block/RootsBlock.java	2024-03-20 17:58:48.042886387 +0000
+++ namedSrc/net/minecraft/block/RootsBlock.java	2024-03-20 17:57:39.497602813 +0000
@@ -10,7 +10,7 @@
  * @mapping {@literal hashed net/minecraft/unmapped/C_sqxgyixn}
  * @mapping {@literal named net/minecraft/block/RootsBlock}
  */
-public class RootsBlock extends PlantBlock {
+public class RootsBlock extends AbstractPlantBlock {
    /**
     * @mapping {@literal hashed f_ncotddvp Lnet/minecraft/unmapped/C_sqxgyixn;f_ncotddvp:Lcom/mojang/serialization/MapCodec;}
     * @mapping {@literal named CODEC Lnet/minecraft/block/RootsBlock;CODEC:Lcom/mojang/serialization/MapCodec;}
diff -bur namedTargetSrc/net/minecraft/block/sapling/SaplingBlock.java namedSrc/net/minecraft/block/sapling/SaplingBlock.java
--- namedTargetSrc/net/minecraft/block/sapling/SaplingBlock.java	2024-03-20 17:58:47.906883920 +0000
+++ namedSrc/net/minecraft/block/sapling/SaplingBlock.java	2024-03-20 17:57:39.345599788 +0000
@@ -3,10 +3,10 @@
 import com.mojang.serialization.MapCodec;
 import com.mojang.serialization.codecs.RecordCodecBuilder;
 import net.minecraft.block.AbstractBlock;
+import net.minecraft.block.AbstractPlantBlock;
 import net.minecraft.block.Block;
 import net.minecraft.block.BlockState;
 import net.minecraft.block.Fertilizable;
-import net.minecraft.block.PlantBlock;
 import net.minecraft.block.ShapeContext;
 import net.minecraft.block.WoodTypes;
 import net.minecraft.server.world.ServerWorld;
@@ -24,7 +24,7 @@
  * @mapping {@literal hashed net/minecraft/unmapped/C_zzbhjpvq}
  * @mapping {@literal named net/minecraft/block/sapling/SaplingBlock}
  */
-public class SaplingBlock extends PlantBlock implements Fertilizable {
+public class SaplingBlock extends AbstractPlantBlock implements Fertilizable {
    /**
     * @mapping {@literal hashed f_xgrwkids Lnet/minecraft/unmapped/C_zzbhjpvq;f_xgrwkids:Lcom/mojang/serialization/MapCodec;}
     * @mapping {@literal named CODEC Lnet/minecraft/block/sapling/SaplingBlock;CODEC:Lcom/mojang/serialization/MapCodec;}
diff -bur namedTargetSrc/net/minecraft/block/SeagrassBlock.java namedSrc/net/minecraft/block/SeagrassBlock.java
--- namedTargetSrc/net/minecraft/block/SeagrassBlock.java	2024-03-20 17:58:47.918884138 +0000
+++ namedSrc/net/minecraft/block/SeagrassBlock.java	2024-03-20 17:57:39.365600186 +0000
@@ -23,7 +23,7 @@
  * @mapping {@literal hashed net/minecraft/unmapped/C_drblcmxi}
  * @mapping {@literal named net/minecraft/block/SeagrassBlock}
  */
-public class SeagrassBlock extends PlantBlock implements Fertilizable, FluidFillable {
+public class SeagrassBlock extends AbstractPlantBlock implements Fertilizable, FluidFillable {
    /**
     * @mapping {@literal hashed f_btqpcvmt Lnet/minecraft/unmapped/C_drblcmxi;f_btqpcvmt:Lcom/mojang/serialization/MapCodec;}
     * @mapping {@literal named CODEC Lnet/minecraft/block/SeagrassBlock;CODEC:Lcom/mojang/serialization/MapCodec;}
diff -bur namedTargetSrc/net/minecraft/block/SeaPickleBlock.java namedSrc/net/minecraft/block/SeaPickleBlock.java
--- namedTargetSrc/net/minecraft/block/SeaPickleBlock.java	2024-03-20 17:58:47.926884283 +0000
+++ namedSrc/net/minecraft/block/SeaPickleBlock.java	2024-03-20 17:57:39.373600345 +0000
@@ -25,7 +25,7 @@
  * @mapping {@literal hashed net/minecraft/unmapped/C_yvwvhmsg}
  * @mapping {@literal named net/minecraft/block/SeaPickleBlock}
  */
-public class SeaPickleBlock extends PlantBlock implements Fertilizable, Waterloggable {
+public class SeaPickleBlock extends AbstractPlantBlock implements Fertilizable, Waterloggable {
    /**
     * @mapping {@literal hashed f_sgnqovsp Lnet/minecraft/unmapped/C_yvwvhmsg;f_sgnqovsp:Lcom/mojang/serialization/MapCodec;}
     * @mapping {@literal named CODEC Lnet/minecraft/block/SeaPickleBlock;CODEC:Lcom/mojang/serialization/MapCodec;}
diff -bur namedTargetSrc/net/minecraft/block/SproutsBlock.java namedSrc/net/minecraft/block/SproutsBlock.java
--- namedTargetSrc/net/minecraft/block/SproutsBlock.java	2024-03-20 17:58:47.898883775 +0000
+++ namedSrc/net/minecraft/block/SproutsBlock.java	2024-03-20 17:57:39.337599629 +0000
@@ -10,7 +10,7 @@
  * @mapping {@literal hashed net/minecraft/unmapped/C_zllzxily}
  * @mapping {@literal named net/minecraft/block/SproutsBlock}
  */
-public class SproutsBlock extends PlantBlock {
+public class SproutsBlock extends AbstractPlantBlock {
    /**
     * @mapping {@literal hashed f_uayuhhfw Lnet/minecraft/unmapped/C_zllzxily;f_uayuhhfw:Lcom/mojang/serialization/MapCodec;}
     * @mapping {@literal named CODEC Lnet/minecraft/block/SproutsBlock;CODEC:Lcom/mojang/serialization/MapCodec;}
diff -bur namedTargetSrc/net/minecraft/block/StemBlock.java namedSrc/net/minecraft/block/StemBlock.java
--- namedTargetSrc/net/minecraft/block/StemBlock.java	2024-03-20 17:58:48.018885951 +0000
+++ namedSrc/net/minecraft/block/StemBlock.java	2024-03-20 17:57:39.469602255 +0000
@@ -27,7 +27,7 @@
  * @mapping {@literal hashed net/minecraft/unmapped/C_axspiekm}
  * @mapping {@literal named net/minecraft/block/StemBlock}
  */
-public class StemBlock extends PlantBlock implements Fertilizable {
+public class StemBlock extends AbstractPlantBlock implements Fertilizable {
    /**
     * @mapping {@literal hashed f_bcaiwwrj Lnet/minecraft/unmapped/C_axspiekm;f_bcaiwwrj:Lcom/mojang/serialization/MapCodec;}
     * @mapping {@literal named CODEC Lnet/minecraft/block/StemBlock;CODEC:Lcom/mojang/serialization/MapCodec;}
diff -bur namedTargetSrc/net/minecraft/block/SweetBerryBushBlock.java namedSrc/net/minecraft/block/SweetBerryBushBlock.java
--- namedTargetSrc/net/minecraft/block/SweetBerryBushBlock.java	2024-03-20 17:58:48.078887040 +0000
+++ namedSrc/net/minecraft/block/SweetBerryBushBlock.java	2024-03-20 17:57:39.529603450 +0000
@@ -30,7 +30,7 @@
  * @mapping {@literal hashed net/minecraft/unmapped/C_poezjjlg}
  * @mapping {@literal named net/minecraft/block/SweetBerryBushBlock}
  */
-public class SweetBerryBushBlock extends PlantBlock implements Fertilizable {
+public class SweetBerryBushBlock extends AbstractPlantBlock implements Fertilizable {
    /**
     * @mapping {@literal hashed f_oldqstau Lnet/minecraft/unmapped/C_poezjjlg;f_oldqstau:Lcom/mojang/serialization/MapCodec;}
     * @mapping {@literal named CODEC Lnet/minecraft/block/SweetBerryBushBlock;CODEC:Lcom/mojang/serialization/MapCodec;}
diff -bur namedTargetSrc/net/minecraft/block/TallPlantBlock.java namedSrc/net/minecraft/block/TallPlantBlock.java
--- namedTargetSrc/net/minecraft/block/TallPlantBlock.java	2024-03-20 17:58:47.910883993 +0000
+++ namedSrc/net/minecraft/block/TallPlantBlock.java	2024-03-20 17:57:39.353599947 +0000
@@ -24,7 +24,7 @@
  * @mapping {@literal hashed net/minecraft/unmapped/C_pomjjrfu}
  * @mapping {@literal named net/minecraft/block/TallPlantBlock}
  */
-public class TallPlantBlock extends PlantBlock {
+public class TallPlantBlock extends AbstractPlantBlock {
    /**
     * @mapping {@literal hashed f_gdxadkfo Lnet/minecraft/unmapped/C_pomjjrfu;f_gdxadkfo:Lcom/mojang/serialization/MapCodec;}
     * @mapping {@literal named CODEC Lnet/minecraft/block/TallPlantBlock;CODEC:Lcom/mojang/serialization/MapCodec;}
Only in namedTargetSrc/net/minecraft/block: TwistingVinesBlock.java
Only in namedSrc/net/minecraft/block: TwistingVinesBodyBlock.java
Only in namedTargetSrc/net/minecraft/block: TwistingVinesPlantBlock.java
Only in namedSrc/net/minecraft/block: TwistingVinesStemBlock.java
Only in namedTargetSrc/net/minecraft/block: WeepingVinesBlock.java
Only in namedSrc/net/minecraft/block: WeepingVinesBodyBlock.java
Only in namedTargetSrc/net/minecraft/block: WeepingVinesPlantBlock.java
Only in namedSrc/net/minecraft/block: WeepingVinesStemBlock.java
diff -bur namedTargetSrc/net/minecraft/item/ShearsItem.java namedSrc/net/minecraft/item/ShearsItem.java
--- namedTargetSrc/net/minecraft/item/ShearsItem.java	2024-03-20 17:58:47.910883993 +0000
+++ namedSrc/net/minecraft/item/ShearsItem.java	2024-03-20 17:57:39.357600026 +0000
@@ -1,9 +1,9 @@
 package net.minecraft.item;
 
 import net.minecraft.advancement.criterion.Criteria;
-import net.minecraft.block.AbstractPlantStemBlock;
 import net.minecraft.block.BlockState;
 import net.minecraft.block.Blocks;
+import net.minecraft.block.GrowingPlantStemBlock;
 import net.minecraft.entity.EquipmentSlot;
 import net.minecraft.entity.LivingEntity;
 import net.minecraft.entity.player.PlayerEntity;
@@ -80,7 +80,7 @@
       World lv = context.getWorld();
       BlockPos lv2 = context.getBlockPos();
       BlockState lv3 = lv.getBlockState(lv2);
-      if (lv3.getBlock() instanceof AbstractPlantStemBlock lv5 && !lv5.hasMaxAge(lv3)) {
+      if (lv3.getBlock() instanceof GrowingPlantStemBlock lv5 && !lv5.hasMaxAge(lv3)) {
          PlayerEntity lv6 = context.getPlayer();
          ItemStack lv7 = context.getStack();
          if (lv6 instanceof ServerPlayerEntity) {
diff -bur namedTargetSrc/net/minecraft/world/gen/feature/KelpFeature.java namedSrc/net/minecraft/world/gen/feature/KelpFeature.java
--- namedTargetSrc/net/minecraft/world/gen/feature/KelpFeature.java	2024-03-20 17:58:47.950884719 +0000
+++ namedSrc/net/minecraft/world/gen/feature/KelpFeature.java	2024-03-20 17:57:39.401600903 +0000
@@ -4,7 +4,7 @@
 import net.minecraft.block.Block;
 import net.minecraft.block.BlockState;
 import net.minecraft.block.Blocks;
-import net.minecraft.block.KelpBlock;
+import net.minecraft.block.KelpStemBlock;
 import net.minecraft.util.math.BlockPos;
 import net.minecraft.util.random.RandomGenerator;
 import net.minecraft.world.Heightmap;
@@ -43,7 +43,7 @@
          for (int l = 0; l <= k; l++) {
             if (lv.getBlockState(lv4).isOf(Blocks.WATER) && lv.getBlockState(lv4.up()).isOf(Blocks.WATER) && lv6.canPlaceAt(lv, lv4)) {
                if (l == k) {
-                  lv.setBlockState(lv4, lv5.with(KelpBlock.AGE, Integer.valueOf(lv3.nextInt(4) + 20)), Block.NOTIFY_LISTENERS);
+                  lv.setBlockState(lv4, lv5.with(KelpStemBlock.AGE, Integer.valueOf(lv3.nextInt(4) + 20)), Block.NOTIFY_LISTENERS);
                   i++;
                } else {
                   lv.setBlockState(lv4, lv6, Block.NOTIFY_LISTENERS);
@@ -51,7 +51,7 @@
             } else if (l > 0) {
                BlockPos lv7 = lv4.down();
                if (lv5.canPlaceAt(lv, lv7) && !lv.getBlockState(lv7.down()).isOf(Blocks.KELP)) {
-                  lv.setBlockState(lv7, lv5.with(KelpBlock.AGE, Integer.valueOf(lv3.nextInt(4) + 20)), Block.NOTIFY_LISTENERS);
+                  lv.setBlockState(lv7, lv5.with(KelpStemBlock.AGE, Integer.valueOf(lv3.nextInt(4) + 20)), Block.NOTIFY_LISTENERS);
                   i++;
                }
                break;
diff -bur namedTargetSrc/net/minecraft/world/gen/feature/TwistingVinesFeature.java namedSrc/net/minecraft/world/gen/feature/TwistingVinesFeature.java
--- namedTargetSrc/net/minecraft/world/gen/feature/TwistingVinesFeature.java	2024-03-20 17:58:48.070886895 +0000
+++ namedSrc/net/minecraft/world/gen/feature/TwistingVinesFeature.java	2024-03-20 17:57:39.525603370 +0000
@@ -1,10 +1,10 @@
 package net.minecraft.world.gen.feature;
 
 import com.mojang.serialization.Codec;
-import net.minecraft.block.AbstractPlantStemBlock;
 import net.minecraft.block.Block;
 import net.minecraft.block.BlockState;
 import net.minecraft.block.Blocks;
+import net.minecraft.block.GrowingPlantStemBlock;
 import net.minecraft.util.math.BlockPos;
 import net.minecraft.util.math.Direction;
 import net.minecraft.util.math.MathHelper;
@@ -91,7 +91,7 @@
             if (l == maxLength || !world.isAir(pos.up())) {
                world.setBlockState(
                   pos,
-                  Blocks.TWISTING_VINES.getDefaultState().with(AbstractPlantStemBlock.AGE, Integer.valueOf(MathHelper.nextInt(random, minAge, maxAge))),
+                  Blocks.TWISTING_VINES.getDefaultState().with(GrowingPlantStemBlock.AGE, Integer.valueOf(MathHelper.nextInt(random, minAge, maxAge))),
                   Block.NOTIFY_LISTENERS
                );
                break;
diff -bur namedTargetSrc/net/minecraft/world/gen/feature/UndergroundConfiguredFeatures.java namedSrc/net/minecraft/world/gen/feature/UndergroundConfiguredFeatures.java
--- namedTargetSrc/net/minecraft/world/gen/feature/UndergroundConfiguredFeatures.java	2024-03-20 17:58:48.074886968 +0000
+++ namedSrc/net/minecraft/world/gen/feature/UndergroundConfiguredFeatures.java	2024-03-20 17:57:39.529603450 +0000
@@ -6,7 +6,7 @@
 import net.minecraft.block.BlockState;
 import net.minecraft.block.Blocks;
 import net.minecraft.block.CaveVines;
-import net.minecraft.block.CaveVinesHeadBlock;
+import net.minecraft.block.CaveVinesStemBlock;
 import net.minecraft.block.SmallDripleafBlock;
 import net.minecraft.registry.BootstrapContext;
 import net.minecraft.registry.Holder;
@@ -362,7 +362,7 @@
                .addWeighted(Blocks.CAVE_VINES.getDefaultState(), 4)
                .addWeighted(Blocks.CAVE_VINES.getDefaultState().with(CaveVines.BERRIES, Boolean.valueOf(true)), 1)
          ),
-         CaveVinesHeadBlock.AGE,
+         CaveVinesStemBlock.AGE,
          UniformIntProvider.create(23, 25)
       );
       ConfiguredFeatureUtil.m_vyqnohbz(
diff -bur namedTargetSrc/net/minecraft/world/gen/feature/WeepingVinesFeature.java namedSrc/net/minecraft/world/gen/feature/WeepingVinesFeature.java
--- namedTargetSrc/net/minecraft/world/gen/feature/WeepingVinesFeature.java	2024-03-20 17:58:47.854882977 +0000
+++ namedSrc/net/minecraft/world/gen/feature/WeepingVinesFeature.java	2024-03-20 17:57:39.277598434 +0000
@@ -1,10 +1,10 @@
 package net.minecraft.world.gen.feature;
 
 import com.mojang.serialization.Codec;
-import net.minecraft.block.AbstractPlantStemBlock;
 import net.minecraft.block.Block;
 import net.minecraft.block.BlockState;
 import net.minecraft.block.Blocks;
+import net.minecraft.block.GrowingPlantStemBlock;
 import net.minecraft.util.math.BlockPos;
 import net.minecraft.util.math.Direction;
 import net.minecraft.util.math.MathHelper;
@@ -125,7 +125,7 @@
             if (l == length || !world.isAir(pos.down())) {
                world.setBlockState(
                   pos,
-                  Blocks.WEEPING_VINES.getDefaultState().with(AbstractPlantStemBlock.AGE, Integer.valueOf(MathHelper.nextInt(random, minAge, maxAge))),
+                  Blocks.WEEPING_VINES.getDefaultState().with(GrowingPlantStemBlock.AGE, Integer.valueOf(MathHelper.nextInt(random, minAge, maxAge))),
                   Block.NOTIFY_LISTENERS
                );
                break;

Please sign in to comment.