aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0906-Ability-to-control-player-s-insomnia-and-phantoms.patch
diff options
context:
space:
mode:
authorJake Potrebic <[email protected]>2023-06-16 19:27:45 -0700
committerGitHub <[email protected]>2023-06-16 19:27:45 -0700
commit38856661c0f10f927b130bdc83c3cc6aafa5cb9a (patch)
treef79c26ce0914fae57a35fe9661d54ff3b6f9d2a8 /patches/server/0906-Ability-to-control-player-s-insomnia-and-phantoms.patch
parenta226f44b452c8c75ca077b492ba4a957629ba489 (diff)
downloadPaper-38856661c0f10f927b130bdc83c3cc6aafa5cb9a.tar.gz
Paper-38856661c0f10f927b130bdc83c3cc6aafa5cb9a.zip
Remove stacktrace on exception from reading server.properties (#9296)
Diffstat (limited to 'patches/server/0906-Ability-to-control-player-s-insomnia-and-phantoms.patch')
-rw-r--r--patches/server/0906-Ability-to-control-player-s-insomnia-and-phantoms.patch67
1 files changed, 67 insertions, 0 deletions
diff --git a/patches/server/0906-Ability-to-control-player-s-insomnia-and-phantoms.patch b/patches/server/0906-Ability-to-control-player-s-insomnia-and-phantoms.patch
new file mode 100644
index 0000000000..458d74cc9c
--- /dev/null
+++ b/patches/server/0906-Ability-to-control-player-s-insomnia-and-phantoms.patch
@@ -0,0 +1,67 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jan Villim <[email protected]>
+Date: Sat, 22 Jan 2022 17:56:19 +0100
+Subject: [PATCH] Ability to control player's insomnia and phantoms
+
+
+diff --git a/src/main/java/net/minecraft/world/entity/EntitySelector.java b/src/main/java/net/minecraft/world/entity/EntitySelector.java
+index de06ae3e8757c923a6f3f475a34885d2f15af46e..3ff999734d14e2b6e7828e117f5ee32a60c26bc1 100644
+--- a/src/main/java/net/minecraft/world/entity/EntitySelector.java
++++ b/src/main/java/net/minecraft/world/entity/EntitySelector.java
+@@ -27,7 +27,18 @@ public final class EntitySelector {
+ return !entity.isSpectator();
+ };
+ public static final Predicate<Entity> CAN_BE_COLLIDED_WITH = EntitySelector.NO_SPECTATORS.and(Entity::canBeCollidedWith);
+- public static Predicate<Player> IS_INSOMNIAC = (player) -> net.minecraft.util.Mth.clamp(((net.minecraft.server.level.ServerPlayer) player).getStats().getValue(net.minecraft.stats.Stats.CUSTOM.get(net.minecraft.stats.Stats.TIME_SINCE_REST)), 1, Integer.MAX_VALUE) >= 72000; // Paper
++ // Paper start
++ public static Predicate<Player> IS_INSOMNIAC = (player) -> {
++ net.minecraft.server.level.ServerPlayer serverPlayer = (net.minecraft.server.level.ServerPlayer) player;
++ int playerInsomniaTicks = serverPlayer.level().paperConfig().entities.behavior.playerInsomniaStartTicks;
++
++ if (playerInsomniaTicks <= 0) {
++ return false;
++ }
++
++ return net.minecraft.util.Mth.clamp(serverPlayer.getStats().getValue(net.minecraft.stats.Stats.CUSTOM.get(net.minecraft.stats.Stats.TIME_SINCE_REST)), 1, Integer.MAX_VALUE) >= playerInsomniaTicks;
++ };
++ // Paper end
+
+ private EntitySelector() {}
+ // Paper start
+diff --git a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java
+index 8c767aba1e800c41412e92afe9cb09cfab1c6ffc..bc7648dbc132551dc6591ab49a1919a623c30f60 100644
+--- a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java
++++ b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java
+@@ -33,13 +33,22 @@ public class PhantomSpawner implements CustomSpawner {
+ } else if (!world.getGameRules().getBoolean(GameRules.RULE_DOINSOMNIA)) {
+ return 0;
+ } else {
++ // Paper start
++ if (world.paperConfig().entities.behavior.phantomsSpawnAttemptMaxSeconds <= 0) {
++ return 0;
++ }
++ // Paper end
+ RandomSource randomsource = world.random;
+
+ --this.nextTick;
+ if (this.nextTick > 0) {
+ return 0;
+ } else {
+- this.nextTick += (60 + randomsource.nextInt(60)) * 20;
++ // Paper start
++ int spawnAttemptMinSeconds = world.paperConfig().entities.behavior.phantomsSpawnAttemptMinSeconds;
++ int spawnAttemptMaxSeconds = world.paperConfig().entities.behavior.phantomsSpawnAttemptMaxSeconds;
++ this.nextTick += (spawnAttemptMinSeconds + randomsource.nextInt(spawnAttemptMaxSeconds - spawnAttemptMinSeconds + 1)) * 20;
++ // Paper end
+ if (world.getSkyDarken() < 5 && world.dimensionType().hasSkyLight()) {
+ return 0;
+ } else {
+@@ -60,7 +69,7 @@ public class PhantomSpawner implements CustomSpawner {
+ int j = Mth.clamp(serverstatisticmanager.getValue(Stats.CUSTOM.get(Stats.TIME_SINCE_REST)), 1, Integer.MAX_VALUE);
+ boolean flag2 = true;
+
+- if (randomsource.nextInt(j) >= 72000) {
++ if (randomsource.nextInt(j) >= world.paperConfig().entities.behavior.playerInsomniaStartTicks) { // Paper
+ BlockPos blockposition1 = blockposition.above(20 + randomsource.nextInt(15)).east(-10 + randomsource.nextInt(21)).south(-10 + randomsource.nextInt(21));
+ BlockState iblockdata = world.getBlockState(blockposition1);
+ FluidState fluid = world.getFluidState(blockposition1);