3
0
Mirror von https://github.com/PaperMC/Paper.git synchronisiert 2024-11-16 21:10:17 +01:00
Paper/CraftBukkit-Patches/0006-Crop-Growth-Rates.patch

192 Zeilen
9.6 KiB
Diff

2013-12-01 04:40:53 +01:00
From 27be6c4e1c2e911cd92968c1a58b16e5ee7302a0 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
2013-06-21 09:30:13 +02:00
Date: Fri, 21 Jun 2013 17:17:20 +1000
Subject: [PATCH] Crop Growth Rates
diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java
2013-12-01 04:40:53 +01:00
index dca832f..ad4e3a2 100644
--- a/src/main/java/net/minecraft/server/Block.java
+++ b/src/main/java/net/minecraft/server/Block.java
2013-12-01 04:40:53 +01:00
@@ -804,4 +804,16 @@ public class Block {
return 0;
}
// CraftBukkit end
+
+ // Spigot start
+ public static float range(float min, float value, float max) {
+ if (value < min) {
+ return min;
+ }
+ if (value > max) {
+ return max;
+ }
+ return value;
+ }
+ // Spigot end
}
diff --git a/src/main/java/net/minecraft/server/BlockCactus.java b/src/main/java/net/minecraft/server/BlockCactus.java
2013-12-01 04:40:53 +01:00
index 421af04..5c7910d 100644
--- a/src/main/java/net/minecraft/server/BlockCactus.java
+++ b/src/main/java/net/minecraft/server/BlockCactus.java
2013-12-01 04:40:53 +01:00
@@ -23,8 +23,8 @@ public class BlockCactus extends Block {
if (l < 3) {
int i1 = world.getData(i, j, k);
- if (i1 == 15) {
2013-12-01 04:40:53 +01:00
- org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j + 1, k, this, 0); // CraftBukkit
2013-06-20 10:21:31 +02:00
+ if (i1 >= (byte) range(3, (world.growthOdds / world.spigotConfig.cactusModifier * 15) + 0.5F, 15)) { // Spigot
2013-12-01 04:40:53 +01:00
+ org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j + 1, k, this.id, 0); // CraftBukkit
world.setData(i, j, k, 0, 4);
2013-12-01 04:40:53 +01:00
this.doPhysics(world, i, j + 1, k, this);
} else {
diff --git a/src/main/java/net/minecraft/server/BlockCrops.java b/src/main/java/net/minecraft/server/BlockCrops.java
2013-12-01 04:40:53 +01:00
index 942d6ab..ef670e8 100644
--- a/src/main/java/net/minecraft/server/BlockCrops.java
+++ b/src/main/java/net/minecraft/server/BlockCrops.java
2013-12-01 04:40:53 +01:00
@@ -27,9 +27,8 @@ public class BlockCrops extends BlockPlant implements IBlockFragilePlantElement
if (l < 7) {
2013-12-01 04:40:53 +01:00
float f = this.n(world, i, j, k);
- if (random.nextInt((int) (25.0F / f) + 1) == 0) {
2013-12-01 04:40:53 +01:00
- ++l;
- org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j, k, this, l); // CraftBukkit
2013-06-20 10:21:31 +02:00
+ if (random.nextInt((int) (world.growthOdds / world.spigotConfig.wheatModifier * (25.0F / f)) + 1) == 0) { // Spigot
2013-12-01 04:40:53 +01:00
+ org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j, k, this.id, ++l); // CraftBukkit
}
}
2013-12-01 04:40:53 +01:00
}
diff --git a/src/main/java/net/minecraft/server/BlockGrass.java b/src/main/java/net/minecraft/server/BlockGrass.java
2013-12-01 04:40:53 +01:00
index 7b78579..bdf3172 100644
--- a/src/main/java/net/minecraft/server/BlockGrass.java
+++ b/src/main/java/net/minecraft/server/BlockGrass.java
2013-12-01 04:40:53 +01:00
@@ -37,7 +37,8 @@ public class BlockGrass extends Block implements IBlockFragilePlantElement {
}
// CraftBukkit end
} else if (world.getLightLevel(i, j + 1, k) >= 9) {
- for (int l = 0; l < 4; ++l) {
+ int numGrowth = Math.min(4, Math.max(20, (int) (4 * 100F / world.growthOdds))); // Spigot
+ for (int l = 0; l < numGrowth; ++l) { // Spigot
int i1 = i + random.nextInt(3) - 1;
int j1 = j + random.nextInt(5) - 3;
int k1 = k + random.nextInt(3) - 1;
diff --git a/src/main/java/net/minecraft/server/BlockMushroom.java b/src/main/java/net/minecraft/server/BlockMushroom.java
2013-12-01 04:40:53 +01:00
index 54a399f..4cab3eb 100644
--- a/src/main/java/net/minecraft/server/BlockMushroom.java
+++ b/src/main/java/net/minecraft/server/BlockMushroom.java
2013-12-01 04:40:53 +01:00
@@ -23,7 +23,7 @@ public class BlockMushroom extends BlockPlant implements IBlockFragilePlantEleme
public void a(World world, int i, int j, int k, Random random) {
2013-01-27 23:46:19 +01:00
final int sourceX = i, sourceY = j, sourceZ = k; // CraftBukkit
- if (random.nextInt(25) == 0) {
2013-06-20 10:21:31 +02:00
+ if (random.nextInt(Math.max(1, (int) world.growthOdds / world.spigotConfig.mushroomModifier * 25)) == 0) { // Spigot
byte b0 = 4;
int l = 5;
diff --git a/src/main/java/net/minecraft/server/BlockMycel.java b/src/main/java/net/minecraft/server/BlockMycel.java
2013-12-01 04:40:53 +01:00
index 6ac6d94..a401f65 100644
--- a/src/main/java/net/minecraft/server/BlockMycel.java
+++ b/src/main/java/net/minecraft/server/BlockMycel.java
@@ -32,7 +32,8 @@ public class BlockMycel extends Block {
}
// CraftBukkit end
} else if (world.getLightLevel(i, j + 1, k) >= 9) {
- for (int l = 0; l < 4; ++l) {
+ int numGrowth = Math.min(4, Math.max(20, (int) (4 * 100F / world.growthOdds))); // Spigot
+ for (int l = 0; l < numGrowth; ++l) { // Spigot
int i1 = i + random.nextInt(3) - 1;
int j1 = j + random.nextInt(5) - 3;
int k1 = k + random.nextInt(3) - 1;
diff --git a/src/main/java/net/minecraft/server/BlockReed.java b/src/main/java/net/minecraft/server/BlockReed.java
2013-12-01 04:40:53 +01:00
index a1350f6..246b951 100644
--- a/src/main/java/net/minecraft/server/BlockReed.java
+++ b/src/main/java/net/minecraft/server/BlockReed.java
2013-12-01 04:40:53 +01:00
@@ -24,12 +24,11 @@ public class BlockReed extends Block {
if (l < 3) {
int i1 = world.getData(i, j, k);
2013-12-01 04:40:53 +01:00
- if (i1 == 15) {
- org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j + 1, k, this, 0); // CraftBukkit
- world.setData(i, j, k, 0, 4);
- } else {
- world.setData(i, j, k, i1 + 1, 4);
- }
2013-06-20 10:21:31 +02:00
+ if (i1 >= (byte) range(3, (world.growthOdds / world.spigotConfig.caneModifier * 15) + 0.5F, 15)) { // Spigot
2013-12-01 04:40:53 +01:00
+ org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j + 1, k, this.id, 0); // CraftBukkit
+ world.setData(i, j, k, 0, 4);
+ } else {
+ world.setData(i, j, k, i1 + 1, 4);
}
}
}
diff --git a/src/main/java/net/minecraft/server/BlockSapling.java b/src/main/java/net/minecraft/server/BlockSapling.java
2013-12-01 04:40:53 +01:00
index 830eb65..24c95ef 100644
--- a/src/main/java/net/minecraft/server/BlockSapling.java
+++ b/src/main/java/net/minecraft/server/BlockSapling.java
2013-12-01 04:40:53 +01:00
@@ -26,7 +26,7 @@ public class BlockSapling extends BlockPlant implements IBlockFragilePlantElemen
public void a(World world, int i, int j, int k, Random random) {
if (!world.isStatic) {
super.a(world, i, j, k, random);
- if (world.getLightLevel(i, j + 1, k) >= 9 && random.nextInt(7) == 0) {
+ if (world.getLightLevel(i, j + 1, k) >= 9 && (random.nextInt(Math.max(2, (int) ((world.growthOdds / world.spigotConfig.saplingModifier * 7) + 0.5F))) == 0)) { // Spigot
this.grow(world, i, j, k, random, false, null, null); // CraftBukkit - added bonemeal, player and itemstack
}
}
diff --git a/src/main/java/net/minecraft/server/BlockStem.java b/src/main/java/net/minecraft/server/BlockStem.java
2013-12-01 04:40:53 +01:00
index 4fae805..9c8e816 100644
--- a/src/main/java/net/minecraft/server/BlockStem.java
+++ b/src/main/java/net/minecraft/server/BlockStem.java
2013-12-01 04:40:53 +01:00
@@ -26,7 +26,7 @@ public class BlockStem extends BlockPlant implements IBlockFragilePlantElement {
if (world.getLightLevel(i, j + 1, k) >= 9) {
2013-12-01 04:40:53 +01:00
float f = this.n(world, i, j, k);
- if (random.nextInt((int) (25.0F / f) + 1) == 0) {
2013-06-20 10:21:31 +02:00
+ if (random.nextInt((int) (world.growthOdds / (this.id == Block.PUMPKIN_STEM.id ? world.spigotConfig.pumpkinModifier : world.spigotConfig.melonModifier) * (25.0F / f)) + 1) == 0) { // Spigot
int l = world.getData(i, j, k);
if (l < 7) {
2013-06-20 10:21:31 +02:00
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index 478d9e6..1c598ed 100644
2013-06-20 10:21:31 +02:00
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
@@ -75,4 +75,36 @@ public class SpigotWorldConfig
2013-06-21 09:00:01 +02:00
chunksPerTick = getInt( "chunks-per-tick", 650 );
2013-06-20 10:21:31 +02:00
log( "Chunks to Grow per Tick: " + chunksPerTick );
}
+
+ // Crop growth rates
2013-06-21 09:00:01 +02:00
+ public int cactusModifier;
+ public int caneModifier;
+ public int melonModifier;
+ public int mushroomModifier;
+ public int pumpkinModifier;
+ public int saplingModifier;
+ public int wheatModifier;
2013-06-20 10:21:31 +02:00
+ private void growthModifiers()
+ {
2013-06-21 09:00:01 +02:00
+ cactusModifier = getInt( "growth.cactus-modifier", 100 );
2013-06-20 10:21:31 +02:00
+ log( "Cactus Growth Modifier: " + cactusModifier + "%" );
+
2013-06-21 09:00:01 +02:00
+ caneModifier = getInt( "growth.cane-modifier", 100 );
2013-06-22 06:16:11 +02:00
+ log( "Cane Growth Modifier: " + caneModifier + "%" );
2013-06-20 10:21:31 +02:00
+
2013-06-21 09:00:01 +02:00
+ melonModifier = getInt( "growth.melon-modifier", 100 );
2013-06-22 06:16:11 +02:00
+ log( "Melon Growth Modifier: " + melonModifier + "%" );
2013-06-20 10:21:31 +02:00
+
2013-06-21 09:00:01 +02:00
+ mushroomModifier = getInt( "growth.mushroom-modifier", 100 );
2013-06-22 06:16:11 +02:00
+ log( "Mushroom Growth Modifier: " + mushroomModifier + "%" );
2013-06-20 10:21:31 +02:00
+
2013-06-21 09:00:01 +02:00
+ pumpkinModifier = getInt( "growth.pumpkin-modifier", 100 );
2013-06-22 06:16:11 +02:00
+ log( "Pumpkin Growth Modifier: " + pumpkinModifier + "%" );
2013-06-20 10:21:31 +02:00
+
2013-06-21 09:00:01 +02:00
+ saplingModifier = getInt( "growth.sapling-modifier", 100 );
2013-06-22 06:16:11 +02:00
+ log( "Sapling Growth Modifier: " + saplingModifier + "%" );
2013-06-20 10:21:31 +02:00
+
2013-06-21 09:00:01 +02:00
+ wheatModifier = getInt( "growth.wheat-modifier", 100 );
2013-06-22 06:16:11 +02:00
+ log( "Wheat Growth Modifier: " + wheatModifier + "%" );
2013-06-20 10:21:31 +02:00
+ }
}
--
2013-12-01 04:40:53 +01:00
1.8.3.2