From 8ec3dedfbdae41723e578e54143cc3394e47190a Mon Sep 17 00:00:00 2001 From: Jake Potrebic Date: Sat, 14 Dec 2024 13:03:13 -0800 Subject: [PATCH] net.minecraft.world.level.block.grower --- .../level/block/grower/TreeGrower.java.patch | 70 ++++++++++ .../level/block/grower/TreeGrower.java.patch | 126 ------------------ 2 files changed, 70 insertions(+), 126 deletions(-) create mode 100644 paper-server/patches/sources/net/minecraft/world/level/block/grower/TreeGrower.java.patch delete mode 100644 paper-server/patches/unapplied/net/minecraft/world/level/block/grower/TreeGrower.java.patch diff --git a/paper-server/patches/sources/net/minecraft/world/level/block/grower/TreeGrower.java.patch b/paper-server/patches/sources/net/minecraft/world/level/block/grower/TreeGrower.java.patch new file mode 100644 index 0000000000..432b04d350 --- /dev/null +++ b/paper-server/patches/sources/net/minecraft/world/level/block/grower/TreeGrower.java.patch @@ -0,0 +1,70 @@ +--- a/net/minecraft/world/level/block/grower/TreeGrower.java ++++ b/net/minecraft/world/level/block/grower/TreeGrower.java +@@ -164,6 +_,7 @@ + if (holder1 == null) { + return false; + } else { ++ this.setTreeType(holder1); // CraftBukkit + ConfiguredFeature configuredFeature2 = holder1.value(); + BlockState blockState1 = level.getFluidState(pos).createLegacyBlock(); + level.setBlock(pos, blockState1, 4); +@@ -198,4 +_,59 @@ + + return false; + } ++ ++ // CraftBukkit start ++ private void setTreeType(Holder> holder) { ++ ResourceKey> treeFeature = holder.unwrapKey().get(); ++ if (treeFeature == TreeFeatures.OAK || treeFeature == TreeFeatures.OAK_BEES_005) { ++ net.minecraft.world.level.block.SaplingBlock.treeType = org.bukkit.TreeType.TREE; ++ } else if (treeFeature == TreeFeatures.HUGE_RED_MUSHROOM) { ++ net.minecraft.world.level.block.SaplingBlock.treeType = org.bukkit.TreeType.RED_MUSHROOM; ++ } else if (treeFeature == TreeFeatures.HUGE_BROWN_MUSHROOM) { ++ net.minecraft.world.level.block.SaplingBlock.treeType = org.bukkit.TreeType.BROWN_MUSHROOM; ++ } else if (treeFeature == TreeFeatures.JUNGLE_TREE) { ++ net.minecraft.world.level.block.SaplingBlock.treeType = org.bukkit.TreeType.COCOA_TREE; ++ } else if (treeFeature == TreeFeatures.JUNGLE_TREE_NO_VINE) { ++ net.minecraft.world.level.block.SaplingBlock.treeType = org.bukkit.TreeType.SMALL_JUNGLE; ++ } else if (treeFeature == TreeFeatures.PINE) { ++ net.minecraft.world.level.block.SaplingBlock.treeType = org.bukkit.TreeType.TALL_REDWOOD; ++ } else if (treeFeature == TreeFeatures.SPRUCE) { ++ net.minecraft.world.level.block.SaplingBlock.treeType = org.bukkit.TreeType.REDWOOD; ++ } else if (treeFeature == TreeFeatures.ACACIA) { ++ net.minecraft.world.level.block.SaplingBlock.treeType = org.bukkit.TreeType.ACACIA; ++ } else if (treeFeature == TreeFeatures.BIRCH || treeFeature == TreeFeatures.BIRCH_BEES_005) { ++ net.minecraft.world.level.block.SaplingBlock.treeType = org.bukkit.TreeType.BIRCH; ++ } else if (treeFeature == TreeFeatures.SUPER_BIRCH_BEES_0002) { ++ net.minecraft.world.level.block.SaplingBlock.treeType = org.bukkit.TreeType.TALL_BIRCH; ++ } else if (treeFeature == TreeFeatures.SWAMP_OAK) { ++ net.minecraft.world.level.block.SaplingBlock.treeType = org.bukkit.TreeType.SWAMP; ++ } else if (treeFeature == TreeFeatures.FANCY_OAK || treeFeature == TreeFeatures.FANCY_OAK_BEES_005) { ++ net.minecraft.world.level.block.SaplingBlock.treeType = org.bukkit.TreeType.BIG_TREE; ++ } else if (treeFeature == TreeFeatures.JUNGLE_BUSH) { ++ net.minecraft.world.level.block.SaplingBlock.treeType = org.bukkit.TreeType.JUNGLE_BUSH; ++ } else if (treeFeature == TreeFeatures.DARK_OAK) { ++ net.minecraft.world.level.block.SaplingBlock.treeType = org.bukkit.TreeType.DARK_OAK; ++ } else if (treeFeature == TreeFeatures.MEGA_SPRUCE) { ++ net.minecraft.world.level.block.SaplingBlock.treeType = org.bukkit.TreeType.MEGA_REDWOOD; ++ } else if (treeFeature == TreeFeatures.MEGA_PINE) { ++ net.minecraft.world.level.block.SaplingBlock.treeType = org.bukkit.TreeType.MEGA_PINE; ++ } else if (treeFeature == TreeFeatures.MEGA_JUNGLE_TREE) { ++ net.minecraft.world.level.block.SaplingBlock.treeType = org.bukkit.TreeType.JUNGLE; ++ } else if (treeFeature == TreeFeatures.AZALEA_TREE) { ++ net.minecraft.world.level.block.SaplingBlock.treeType = org.bukkit.TreeType.AZALEA; ++ } else if (treeFeature == TreeFeatures.MANGROVE) { ++ net.minecraft.world.level.block.SaplingBlock.treeType = org.bukkit.TreeType.MANGROVE; ++ } else if (treeFeature == TreeFeatures.TALL_MANGROVE) { ++ net.minecraft.world.level.block.SaplingBlock.treeType = org.bukkit.TreeType.TALL_MANGROVE; ++ } else if (treeFeature == TreeFeatures.CHERRY || treeFeature == TreeFeatures.CHERRY_BEES_005) { ++ net.minecraft.world.level.block.SaplingBlock.treeType = org.bukkit.TreeType.CHERRY; ++ } else if (treeFeature == TreeFeatures.PALE_OAK || treeFeature == TreeFeatures.PALE_OAK_BONEMEAL) { ++ net.minecraft.world.level.block.SaplingBlock.treeType = org.bukkit.TreeType.PALE_OAK; ++ } else if (treeFeature == TreeFeatures.PALE_OAK_CREAKING) { ++ net.minecraft.world.level.block.SaplingBlock.treeType = org.bukkit.TreeType.PALE_OAK_CREAKING; ++ } else { ++ throw new IllegalArgumentException("Unknown tree generator " + treeFeature); ++ } ++ } ++ // CraftBukkit end + } diff --git a/paper-server/patches/unapplied/net/minecraft/world/level/block/grower/TreeGrower.java.patch b/paper-server/patches/unapplied/net/minecraft/world/level/block/grower/TreeGrower.java.patch deleted file mode 100644 index 859e74b185..0000000000 --- a/paper-server/patches/unapplied/net/minecraft/world/level/block/grower/TreeGrower.java.patch +++ /dev/null @@ -1,126 +0,0 @@ ---- a/net/minecraft/world/level/block/grower/TreeGrower.java -+++ b/net/minecraft/world/level/block/grower/TreeGrower.java -@@ -20,9 +20,14 @@ - import net.minecraft.world.level.LevelAccessor; - import net.minecraft.world.level.block.Block; - import net.minecraft.world.level.block.Blocks; -+import net.minecraft.world.level.block.SaplingBlock; - import net.minecraft.world.level.block.state.BlockState; - import net.minecraft.world.level.chunk.ChunkGenerator; - import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; -+// CraftBukkit start -+import net.minecraft.data.worldgen.features.TreeFeatures; -+import org.bukkit.TreeType; -+// CraftBukkit end - - public final class TreeGrower { - -@@ -75,21 +80,22 @@ - } - } - -- return flowersNearby && this.flowers.isPresent() ? (ResourceKey) this.flowers.get() : (ResourceKey) this.tree.orElse((Object) null); -+ return flowersNearby && this.flowers.isPresent() ? (ResourceKey) this.flowers.get() : (ResourceKey) this.tree.orElse(null); // CraftBukkit - decompile error - } - - @Nullable - private ResourceKey> getConfiguredMegaFeature(RandomSource random) { -- return this.secondaryMegaTree.isPresent() && random.nextFloat() < this.secondaryChance ? (ResourceKey) this.secondaryMegaTree.get() : (ResourceKey) this.megaTree.orElse((Object) null); -+ return this.secondaryMegaTree.isPresent() && random.nextFloat() < this.secondaryChance ? (ResourceKey) this.secondaryMegaTree.get() : (ResourceKey) this.megaTree.orElse(null); // CraftBukkit - decompile error - } - - public boolean growTree(ServerLevel world, ChunkGenerator chunkGenerator, BlockPos pos, BlockState state, RandomSource random) { - ResourceKey> resourcekey = this.getConfiguredMegaFeature(random); - - if (resourcekey != null) { -- Holder> holder = (Holder) world.registryAccess().lookupOrThrow(Registries.CONFIGURED_FEATURE).get(resourcekey).orElse((Object) null); -+ Holder> holder = (Holder) world.registryAccess().lookupOrThrow(Registries.CONFIGURED_FEATURE).get(resourcekey).orElse(null); // CraftBukkit - decompile error - - if (holder != null) { -+ this.setTreeType(holder); // CraftBukkit - for (int i = 0; i >= -1; --i) { - for (int j = 0; j >= -1; --j) { - if (TreeGrower.isTwoByTwoSapling(state, world, pos, i, j)) { -@@ -120,11 +126,12 @@ - if (resourcekey1 == null) { - return false; - } else { -- Holder> holder1 = (Holder) world.registryAccess().lookupOrThrow(Registries.CONFIGURED_FEATURE).get(resourcekey1).orElse((Object) null); -+ Holder> holder1 = (Holder) world.registryAccess().lookupOrThrow(Registries.CONFIGURED_FEATURE).get(resourcekey1).orElse(null); // CraftBukkit - decompile error - - if (holder1 == null) { - return false; - } else { -+ this.setTreeType(holder1); // CraftBukkit - ConfiguredFeature worldgenfeatureconfigured1 = (ConfiguredFeature) holder1.value(); - BlockState iblockdata2 = world.getFluidState(pos).createLegacyBlock(); - -@@ -165,11 +172,66 @@ - return true; - } - -+ // CraftBukkit start -+ private void setTreeType(Holder> holder) { -+ ResourceKey> worldgentreeabstract = holder.unwrapKey().get(); -+ if (worldgentreeabstract == TreeFeatures.OAK || worldgentreeabstract == TreeFeatures.OAK_BEES_005) { -+ SaplingBlock.treeType = TreeType.TREE; -+ } else if (worldgentreeabstract == TreeFeatures.HUGE_RED_MUSHROOM) { -+ SaplingBlock.treeType = TreeType.RED_MUSHROOM; -+ } else if (worldgentreeabstract == TreeFeatures.HUGE_BROWN_MUSHROOM) { -+ SaplingBlock.treeType = TreeType.BROWN_MUSHROOM; -+ } else if (worldgentreeabstract == TreeFeatures.JUNGLE_TREE) { -+ SaplingBlock.treeType = TreeType.COCOA_TREE; -+ } else if (worldgentreeabstract == TreeFeatures.JUNGLE_TREE_NO_VINE) { -+ SaplingBlock.treeType = TreeType.SMALL_JUNGLE; -+ } else if (worldgentreeabstract == TreeFeatures.PINE) { -+ SaplingBlock.treeType = TreeType.TALL_REDWOOD; -+ } else if (worldgentreeabstract == TreeFeatures.SPRUCE) { -+ SaplingBlock.treeType = TreeType.REDWOOD; -+ } else if (worldgentreeabstract == TreeFeatures.ACACIA) { -+ SaplingBlock.treeType = TreeType.ACACIA; -+ } else if (worldgentreeabstract == TreeFeatures.BIRCH || worldgentreeabstract == TreeFeatures.BIRCH_BEES_005) { -+ SaplingBlock.treeType = TreeType.BIRCH; -+ } else if (worldgentreeabstract == TreeFeatures.SUPER_BIRCH_BEES_0002) { -+ SaplingBlock.treeType = TreeType.TALL_BIRCH; -+ } else if (worldgentreeabstract == TreeFeatures.SWAMP_OAK) { -+ SaplingBlock.treeType = TreeType.SWAMP; -+ } else if (worldgentreeabstract == TreeFeatures.FANCY_OAK || worldgentreeabstract == TreeFeatures.FANCY_OAK_BEES_005) { -+ SaplingBlock.treeType = TreeType.BIG_TREE; -+ } else if (worldgentreeabstract == TreeFeatures.JUNGLE_BUSH) { -+ SaplingBlock.treeType = TreeType.JUNGLE_BUSH; -+ } else if (worldgentreeabstract == TreeFeatures.DARK_OAK) { -+ SaplingBlock.treeType = TreeType.DARK_OAK; -+ } else if (worldgentreeabstract == TreeFeatures.MEGA_SPRUCE) { -+ SaplingBlock.treeType = TreeType.MEGA_REDWOOD; -+ } else if (worldgentreeabstract == TreeFeatures.MEGA_PINE) { -+ SaplingBlock.treeType = TreeType.MEGA_PINE; -+ } else if (worldgentreeabstract == TreeFeatures.MEGA_JUNGLE_TREE) { -+ SaplingBlock.treeType = TreeType.JUNGLE; -+ } else if (worldgentreeabstract == TreeFeatures.AZALEA_TREE) { -+ SaplingBlock.treeType = TreeType.AZALEA; -+ } else if (worldgentreeabstract == TreeFeatures.MANGROVE) { -+ SaplingBlock.treeType = TreeType.MANGROVE; -+ } else if (worldgentreeabstract == TreeFeatures.TALL_MANGROVE) { -+ SaplingBlock.treeType = TreeType.TALL_MANGROVE; -+ } else if (worldgentreeabstract == TreeFeatures.CHERRY || worldgentreeabstract == TreeFeatures.CHERRY_BEES_005) { -+ SaplingBlock.treeType = TreeType.CHERRY; -+ } else if (worldgentreeabstract == TreeFeatures.PALE_OAK || worldgentreeabstract == TreeFeatures.PALE_OAK_BONEMEAL) { -+ SaplingBlock.treeType = TreeType.PALE_OAK; -+ } else if (worldgentreeabstract == TreeFeatures.PALE_OAK_CREAKING) { -+ SaplingBlock.treeType = TreeType.PALE_OAK_CREAKING; -+ } else { -+ throw new IllegalArgumentException("Unknown tree generator " + worldgentreeabstract); -+ } -+ } -+ // CraftBukkit end -+ - static { -- Function function = (worldgentreeprovider) -> { -+ Function function = (worldgentreeprovider) -> { // CraftBukkit - decompile error - return worldgentreeprovider.name; - }; -- Map map = TreeGrower.GROWERS; -+ Map map = TreeGrower.GROWERS; // CraftBukkit - decompile error - - Objects.requireNonNull(map); - CODEC = Codec.stringResolver(function, map::get);