Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add configurable height for slime spawn per world (#6310)
- Loading branch information
Showing
2 changed files
with
57 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
56 changes: 56 additions & 0 deletions
56
patches/server/0849-Add-configurable-height-for-slime-spawn.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: Doc <nachito94@msn.com> | ||
Date: Mon, 2 Aug 2021 11:24:39 -0400 | ||
Subject: [PATCH] Add configurable height for slime spawn | ||
|
||
|
||
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java | ||
index cd5a7bac92a1e733d69340f09bc35906138a6ce3..c6aa0bef1e7b9c30c0bd2d466d368ab38690246c 100644 | ||
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java | ||
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java | ||
@@ -423,6 +423,16 @@ public class PaperWorldConfig { | ||
allChunksAreSlimeChunks = getBoolean("all-chunks-are-slime-chunks", false); | ||
} | ||
|
||
+ public double slimeMaxSpawnHeightInSwamp; | ||
+ public double slimeMinSpawnHeightInSwamp; | ||
+ public double slimeMaxSpawnHeightInSlimeChunks; | ||
+ private void slimeSpawnHeight() { | ||
+ slimeMaxSpawnHeightInSwamp = getDouble("slime-spawn-height.swamp-biome.maximum", this.slimeMaxSpawnHeightInSwamp); | ||
+ slimeMinSpawnHeightInSwamp = getDouble("slime-spawn-height.swamp-biome.minimum", this.slimeMinSpawnHeightInSwamp); | ||
+ slimeMaxSpawnHeightInSlimeChunks = getDouble("slime-spawn-height.slime-chunk.maximum", this.slimeMaxSpawnHeightInSlimeChunks); | ||
+ } | ||
+ | ||
+ | ||
public int portalSearchRadius; | ||
public int portalCreateRadius; | ||
public boolean portalSearchVanillaDimensionScaling; | ||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Slime.java b/src/main/java/net/minecraft/world/entity/monster/Slime.java | ||
index 5722d9b30223fb229b80f54d7fb9edf41254a7f7..9c440625ce89686b2c250e6aaa62ed83b7015412 100644 | ||
--- a/src/main/java/net/minecraft/world/entity/monster/Slime.java | ||
+++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java | ||
@@ -327,7 +327,11 @@ public class Slime extends Mob implements Enemy { | ||
|
||
public static boolean checkSlimeSpawnRules(EntityType<Slime> type, LevelAccessor world, MobSpawnType spawnReason, BlockPos pos, Random random) { | ||
if (world.getDifficulty() != Difficulty.PEACEFUL) { | ||
- if (Objects.equals(world.getBiomeName(pos), Optional.of(Biomes.SWAMP)) && pos.getY() > 50 && pos.getY() < 70 && random.nextFloat() < 0.5F && random.nextFloat() < world.getMoonBrightness() && world.getMaxLocalRawBrightness(pos) <= random.nextInt(8)) { | ||
+ // Paper start - Replace rules for Height in Swamp Biome | ||
+ final double maxHeightSwamp = world.getMinecraftWorld().paperConfig.slimeMaxSpawnHeightInSwamp; | ||
+ final double minHeightSwamp = world.getMinecraftWorld().paperConfig.slimeMinSpawnHeightInSwamp; | ||
+ if (Objects.equals(world.getBiomeName(pos), Optional.of(Biomes.SWAMP)) && pos.getY() > minHeightSwamp && pos.getY() < maxHeightSwamp && random.nextFloat() < 0.5F && random.nextFloat() < world.getMoonBrightness() && world.getMaxLocalRawBrightness(pos) <= random.nextInt(8)) { | ||
+ // Paper end | ||
return checkMobSpawnRules(type, world, spawnReason, pos, random); | ||
} | ||
|
||
@@ -338,7 +342,10 @@ public class Slime extends Mob implements Enemy { | ||
ChunkPos chunkcoordintpair = new ChunkPos(pos); | ||
boolean flag = world.getMinecraftWorld().paperConfig.allChunksAreSlimeChunks || WorldgenRandom.seedSlimeChunk(chunkcoordintpair.x, chunkcoordintpair.z, ((WorldGenLevel) world).getSeed(), world.getMinecraftWorld().spigotConfig.slimeSeed).nextInt(10) == 0; // Spigot // Paper | ||
|
||
- if (random.nextInt(10) == 0 && flag && pos.getY() < 40) { | ||
+ // Paper start - Replace rules for Height in Slime Chunks | ||
+ final double maxHeightSlimeChunk = world.getMinecraftWorld().paperConfig.slimeMaxSpawnHeightInSlimeChunks; | ||
+ if (random.nextInt(10) == 0 && flag && pos.getY() < maxHeightSlimeChunk) { | ||
+ // Paper end | ||
return checkMobSpawnRules(type, world, spawnReason, pos, random); | ||
} | ||
} |