aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0030-Player-affects-spawning-API.patch
diff options
context:
space:
mode:
authorNassim Jahnke <[email protected]>2023-03-14 18:11:24 +0100
committerNassim Jahnke <[email protected]>2023-03-14 18:11:24 +0100
commit2ed604cf725820344878b0d49117bd5ef31463bc (patch)
tree701daae297f65de2ae3b2cc233047e7903adcb51 /patches/server/0030-Player-affects-spawning-API.patch
parent155aa36d89b260ef5841615899299756b5983c0a (diff)
downloadPaper-2ed604cf725820344878b0d49117bd5ef31463bc.tar.gz
Paper-2ed604cf725820344878b0d49117bd5ef31463bc.zip
Start working on 1.19.4
Diffstat (limited to 'patches/server/0030-Player-affects-spawning-API.patch')
-rw-r--r--patches/server/0030-Player-affects-spawning-API.patch163
1 files changed, 0 insertions, 163 deletions
diff --git a/patches/server/0030-Player-affects-spawning-API.patch b/patches/server/0030-Player-affects-spawning-API.patch
deleted file mode 100644
index 32fec191c1..0000000000
--- a/patches/server/0030-Player-affects-spawning-API.patch
+++ /dev/null
@@ -1,163 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Jedediah Smith <[email protected]>
-Date: Tue, 1 Mar 2016 14:47:52 -0600
-Subject: [PATCH] Player affects spawning API
-
-
-diff --git a/src/main/java/net/minecraft/world/entity/EntitySelector.java b/src/main/java/net/minecraft/world/entity/EntitySelector.java
-index 5c3b11f738c1ea19981cc878aa6c2323497391a0..6fd874a83a248e6a7d427d18d11fc608544662c5 100644
---- a/src/main/java/net/minecraft/world/entity/EntitySelector.java
-+++ b/src/main/java/net/minecraft/world/entity/EntitySelector.java
-@@ -29,6 +29,11 @@ public final class EntitySelector {
- public static final Predicate<Entity> CAN_BE_COLLIDED_WITH = EntitySelector.NO_SPECTATORS.and(Entity::canBeCollidedWith);
-
- private EntitySelector() {}
-+ // Paper start
-+ public static final Predicate<Entity> PLAYER_AFFECTS_SPAWNING = (entity) -> {
-+ return !entity.isSpectator() && entity.isAlive() && entity instanceof Player player && player.affectsSpawning;
-+ };
-+ // Paper end
-
- public static Predicate<Entity> withinDistance(double x, double y, double z, double max) {
- double d4 = max * max;
-diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
-index 99218eac34374a4d13451cfec15006c3bf0d755f..bb7c459c126be789bb12d08a569fe344e08914b8 100644
---- a/src/main/java/net/minecraft/world/entity/Mob.java
-+++ b/src/main/java/net/minecraft/world/entity/Mob.java
-@@ -808,7 +808,7 @@ public abstract class Mob extends LivingEntity {
- if (this.level.getDifficulty() == Difficulty.PEACEFUL && this.shouldDespawnInPeaceful()) {
- this.discard();
- } else if (!this.isPersistenceRequired() && !this.requiresCustomPersistence()) {
-- Player entityhuman = this.level.getNearestPlayer(this, -1.0D);
-+ Player entityhuman = this.level.findNearbyPlayer(this, -1.0D, EntitySelector.PLAYER_AFFECTS_SPAWNING); // Paper
-
- if (entityhuman != null) {
- double d0 = entityhuman.distanceToSqr((Entity) this);
-diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonTrapGoal.java b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonTrapGoal.java
-index e368478dba01a9b11adf23ed64bed61c73a78a28..17fda4857f74d2994525262472700e7788dec383 100644
---- a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonTrapGoal.java
-+++ b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonTrapGoal.java
-@@ -25,7 +25,7 @@ public class SkeletonTrapGoal extends Goal {
-
- @Override
- public boolean canUse() {
-- return this.horse.level.hasNearbyAlivePlayer(this.horse.getX(), this.horse.getY(), this.horse.getZ(), 10.0D);
-+ return this.horse.level.hasNearbyAlivePlayerThatAffectsSpawning(this.horse.getX(), this.horse.getY(), this.horse.getZ(), 10.0D); // Paper - Affects Spawning API
- }
-
- @Override
-diff --git a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java
-index 87f66fd33e404367d924137b2d8aac3b06937f43..2dcda3b03796655da443e1b3dd68c6f6bca20d21 100644
---- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java
-+++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java
-@@ -127,7 +127,7 @@ public class Silverfish extends Monster {
- if (checkAnyLightMonsterSpawnRules(type, world, spawnReason, pos, random)) {
- Player entityhuman = world.getNearestPlayer((double) pos.getX() + 0.5D, (double) pos.getY() + 0.5D, (double) pos.getZ() + 0.5D, 5.0D, true);
-
-- return entityhuman == null;
-+ return !(entityhuman != null && !entityhuman.affectsSpawning) && entityhuman == null; // Paper - Affects Spawning API
- } else {
- return false;
- }
-diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
-index 8ea60d388fff4a6368652ff96f648e5880053a2b..8ecbb64f9db9346757c5597404489496a0945508 100644
---- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
-+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
-@@ -325,7 +325,7 @@ public class Zombie extends Monster {
-
- if (NaturalSpawner.isSpawnPositionOk(entitypositiontypes_surface, this.level, blockposition, entitytypes) && SpawnPlacements.checkSpawnRules(entitytypes, worldserver, MobSpawnType.REINFORCEMENT, blockposition, this.level.random)) {
- entityzombie.setPos((double) i1, (double) j1, (double) k1);
-- if (!this.level.hasNearbyAlivePlayer((double) i1, (double) j1, (double) k1, 7.0D) && this.level.isUnobstructed(entityzombie) && this.level.noCollision((Entity) entityzombie) && !this.level.containsAnyLiquid(entityzombie.getBoundingBox())) {
-+ if (!this.level.hasNearbyAlivePlayerThatAffectsSpawning((double) i1, (double) j1, (double) k1, 7.0D) && this.level.isUnobstructed(entityzombie) && this.level.noCollision((Entity) entityzombie) && !this.level.containsAnyLiquid(entityzombie.getBoundingBox())) { // Paper - Affects Spawning API
- entityzombie.setTarget(entityliving, EntityTargetEvent.TargetReason.REINFORCEMENT_TARGET, true); // CraftBukkit
- entityzombie.finalizeSpawn(worldserver, this.level.getCurrentDifficultyAt(entityzombie.blockPosition()), MobSpawnType.REINFORCEMENT, (SpawnGroupData) null, (CompoundTag) null);
- worldserver.addFreshEntityWithPassengers(entityzombie, CreatureSpawnEvent.SpawnReason.REINFORCEMENTS); // CraftBukkit
-diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
-index 47b5ef810348f8c702acb09b280b41b6b7227b6f..60fb74537fdc96005cbf6aa1670e773c0faa2f26 100644
---- a/src/main/java/net/minecraft/world/entity/player/Player.java
-+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
-@@ -179,6 +179,9 @@ public abstract class Player extends LivingEntity {
- private Optional<GlobalPos> lastDeathLocation;
- @Nullable
- public FishingHook fishing;
-+ // Paper start
-+ public boolean affectsSpawning = true;
-+ // Paper end
-
- // CraftBukkit start
- public boolean fauxSleeping;
-diff --git a/src/main/java/net/minecraft/world/level/BaseSpawner.java b/src/main/java/net/minecraft/world/level/BaseSpawner.java
-index f035206f2f59cb293d503c638ff06333a797a7a9..3e83bff81a0656d5e1d079ad9e63c7d27561c8e3 100644
---- a/src/main/java/net/minecraft/world/level/BaseSpawner.java
-+++ b/src/main/java/net/minecraft/world/level/BaseSpawner.java
-@@ -54,7 +54,7 @@ public abstract class BaseSpawner {
- }
-
- public boolean isNearPlayer(Level world, BlockPos pos) {
-- return world.hasNearbyAlivePlayer((double) pos.getX() + 0.5D, (double) pos.getY() + 0.5D, (double) pos.getZ() + 0.5D, (double) this.requiredPlayerRange);
-+ return world.hasNearbyAlivePlayerThatAffectsSpawning((double) pos.getX() + 0.5D, (double) pos.getY() + 0.5D, (double) pos.getZ() + 0.5D, (double) this.requiredPlayerRange); // Paper - Affects Spawning API
- }
-
- public void clientTick(Level world, BlockPos pos) {
-diff --git a/src/main/java/net/minecraft/world/level/EntityGetter.java b/src/main/java/net/minecraft/world/level/EntityGetter.java
-index be6e3e21ad62da01e5e2dd78e300cbc8efdbeb42..ea98625fe7c00743b8df74a24e6d4b75df4189a5 100644
---- a/src/main/java/net/minecraft/world/level/EntityGetter.java
-+++ b/src/main/java/net/minecraft/world/level/EntityGetter.java
-@@ -82,6 +82,11 @@ public interface EntityGetter {
- }
- }
-
-+ // Paper start
-+ default @Nullable Player findNearbyPlayer(Entity entity, double maxDistance, @Nullable Predicate<Entity> predicate) {
-+ return this.getNearestPlayer(entity.getX(), entity.getY(), entity.getZ(), maxDistance, predicate);
-+ }
-+ // Paper end
- @Nullable
- default Player getNearestPlayer(double x, double y, double z, double maxDistance, @Nullable Predicate<Entity> targetPredicate) {
- double d = -1.0D;
-@@ -111,6 +116,20 @@ public interface EntityGetter {
- return this.getNearestPlayer(x, y, z, maxDistance, predicate);
- }
-
-+ // Paper start
-+ default boolean hasNearbyAlivePlayerThatAffectsSpawning(double x, double y, double z, double range) {
-+ for (Player player : this.players()) {
-+ if (EntitySelector.PLAYER_AFFECTS_SPAWNING.test(player)) { // combines NO_SPECTATORS and LIVING_ENTITY_STILL_ALIVE with an "affects spawning" check
-+ double distanceSqr = player.distanceToSqr(x, y, z);
-+ if (range < 0.0D || distanceSqr < range * range) {
-+ return true;
-+ }
-+ }
-+ }
-+ return false;
-+ }
-+ // Paper end
-+
- default boolean hasNearbyAlivePlayer(double x, double y, double z, double range) {
- for(Player player : this.players()) {
- if (EntitySelector.NO_SPECTATORS.test(player) && EntitySelector.LIVING_ENTITY_STILL_ALIVE.test(player)) {
-diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 92e5b781049122e3de3784ec4197557f2730b3b3..eecfbd4e835bfc3d98194365e360a827fb02bb38 100644
---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -2113,8 +2113,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
- @Override
- public String getLocale() {
- return this.getHandle().locale;
-+
-+ }
-+
-+ // Paper start
-+ public void setAffectsSpawning(boolean affects) {
-+ this.getHandle().affectsSpawning = affects;
- }
-
-+ @Override
-+ public boolean getAffectsSpawning() {
-+ return this.getHandle().affectsSpawning;
-+ }
-+ // Paper end
-+
- @Override
- public void updateCommands() {
- if (this.getHandle().connection == null) return;