mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-04 05:54:43 +01:00
1358d1e914
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 881e06e5 PR-725: Add Item Unlimited Lifetime APIs CraftBukkit Changes: 74c08312 SPIGOT-6962: Call EntityChangeBlockEvent when when FallingBlockEntity starts to fall 64db5126 SPIGOT-6959: Make /loot command ignore empty items for spawn 2d760831 Increase outdated build delay 9ed7e4fb SPIGOT-6138, SPIGOT-6415: Don't call CreatureSpawnEvent after cross-dimensional travel fc4ad813 SPIGOT-6895: Trees grown with applyBoneMeal() don't fire the StructureGrowthEvent 59733a2e SPIGOT-6961: Actually return a copy of the ItemMeta Spigot Changes: ffceeae3 SPIGOT-6956: Drop unload queue patch as attempt at fixing stop issue e19ddabd PR-1011: Add Item Unlimited Lifetime APIs 34d40b0e SPIGOT-2942: give command fires PlayerDropItemEvent, cancelling it causes Item Duplication
108 lines
5.8 KiB
Diff
108 lines
5.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jason Penilla <11360596+jpenilla@users.noreply.github.com>
|
|
Date: Fri, 3 Dec 2021 17:09:24 -0800
|
|
Subject: [PATCH] Fix kelp modifier changing growth for other crops
|
|
|
|
Also add growth modifiers for twisting vines, weeping vines, cave vines,
|
|
and glow berries
|
|
|
|
Also fix above-mentioned modifiers from having the reverse effect
|
|
|
|
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java b/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java
|
|
index 87dabe3c80b48bff52f2e3dbbaceb37a1a21e431..effee89e308c9a663938ac5b00a8c6512ce407c2 100644
|
|
--- a/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java
|
|
+++ b/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java
|
|
@@ -47,9 +47,17 @@ public class CaveVinesBlock extends GrowingPlantHeadBlock implements Bonemealabl
|
|
|
|
@Override
|
|
protected BlockState getGrowIntoState(BlockState state, Random random) {
|
|
- return (BlockState) super.getGrowIntoState(state, random).setValue(CaveVinesBlock.BERRIES, random.nextFloat() < 0.11F);
|
|
+ // Paper start
|
|
+ return this.getGrowIntoState(state, random, null);
|
|
}
|
|
|
|
+ @Override
|
|
+ protected BlockState getGrowIntoState(BlockState state, Random random, Level level) {
|
|
+ final boolean value = (level == null ? random.nextFloat() : random.nextFloat(100.00F / level.spigotConfig.glowBerryModifier)) < 0.11F;
|
|
+ return super.getGrowIntoState(state, random).setValue(CaveVinesBlock.BERRIES, value);
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
@Override
|
|
public ItemStack getCloneItemStack(BlockGetter world, BlockPos pos, BlockState state) {
|
|
return new ItemStack(Items.GLOW_BERRIES);
|
|
diff --git a/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java b/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java
|
|
index def3b62feada5cebae4049883fa967b12f6f32b4..8e642ff6d387e05f900acfc3cf6cfa5975bf69e4 100644
|
|
--- a/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java
|
|
+++ b/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java
|
|
@@ -40,16 +40,36 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements
|
|
|
|
@Override
|
|
public void randomTick(BlockState state, ServerLevel world, BlockPos pos, Random random) {
|
|
- if ((Integer) state.getValue(GrowingPlantHeadBlock.AGE) < 25 && random.nextDouble() < (100.0D / world.spigotConfig.kelpModifier) * this.growPerTickProbability) { // Spigot
|
|
+ // Paper start
|
|
+ final int modifier;
|
|
+ if (state.is(Blocks.TWISTING_VINES) || state.is(Blocks.TWISTING_VINES_PLANT)) {
|
|
+ modifier = world.spigotConfig.twistingVinesModifier;
|
|
+ } else if (state.is(Blocks.WEEPING_VINES) || state.is(Blocks.WEEPING_VINES_PLANT)) {
|
|
+ modifier = world.spigotConfig.weepingVinesModifier;
|
|
+ } else if (state.is(Blocks.CAVE_VINES) || state.is(Blocks.CAVE_VINES_PLANT)) {
|
|
+ modifier = world.spigotConfig.caveVinesModifier;
|
|
+ } else if (state.is(Blocks.KELP) || state.is(Blocks.KELP_PLANT)) {
|
|
+ modifier = world.spigotConfig.kelpModifier;
|
|
+ } else {
|
|
+ modifier = 100; // Above cases are exhaustive as of 1.18
|
|
+ }
|
|
+ if ((Integer) state.getValue(GrowingPlantHeadBlock.AGE) < 25 && random.nextDouble() < (modifier / 100.0D) * this.growPerTickProbability) { // Spigot // Paper - fix growth modifier having the reverse effect
|
|
+ // Paper end
|
|
BlockPos blockposition1 = pos.relative(this.growthDirection);
|
|
|
|
if (this.canGrowInto(world.getBlockState(blockposition1))) {
|
|
- org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockSpreadEvent(world, pos, blockposition1, this.getGrowIntoState(state, world.random)); // CraftBukkit
|
|
+ org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockSpreadEvent(world, pos, blockposition1, this.getGrowIntoState(state, world.random, world)); // CraftBukkit // Paper
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
+ // Paper start
|
|
+ protected BlockState getGrowIntoState(BlockState state, Random random, Level level) {
|
|
+ return this.getGrowIntoState(state, random);
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
protected BlockState getGrowIntoState(BlockState state, Random random) {
|
|
return (BlockState) state.cycle(GrowingPlantHeadBlock.AGE);
|
|
}
|
|
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
|
|
index 32f8a6aed0f69ad07ab5b42fee38a3471a59d426..b498b027b127996976a394e9a86cfc90f8a8ed3b 100644
|
|
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
|
|
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
|
|
@@ -103,6 +103,12 @@ public class SpigotWorldConfig
|
|
public int bambooModifier;
|
|
public int sweetBerryModifier;
|
|
public int kelpModifier;
|
|
+ // Paper start
|
|
+ public int twistingVinesModifier;
|
|
+ public int weepingVinesModifier;
|
|
+ public int caveVinesModifier;
|
|
+ public int glowBerryModifier;
|
|
+ // Paper end
|
|
private int getAndValidateGrowth(String crop)
|
|
{
|
|
int modifier = this.getInt( "growth." + crop.toLowerCase(java.util.Locale.ENGLISH) + "-modifier", 100 );
|
|
@@ -133,6 +139,12 @@ public class SpigotWorldConfig
|
|
this.bambooModifier = this.getAndValidateGrowth( "Bamboo" );
|
|
this.sweetBerryModifier = this.getAndValidateGrowth( "SweetBerry" );
|
|
this.kelpModifier = this.getAndValidateGrowth( "Kelp" );
|
|
+ // Paper start
|
|
+ this.twistingVinesModifier = this.getAndValidateGrowth("TwistingVines");
|
|
+ this.weepingVinesModifier = this.getAndValidateGrowth("WeepingVines");
|
|
+ this.caveVinesModifier = this.getAndValidateGrowth("CaveVines");
|
|
+ this.glowBerryModifier = this.getAndValidateGrowth("GlowBerry");
|
|
+ // Paper end
|
|
}
|
|
|
|
public double itemMerge;
|