Fix legacy pearls forgetting owner on disconnect (#12884)
This commit is contained in:
@@ -28333,10 +28333,10 @@ index b30f56fbc1fd17259a1d05dc9155fffcab292ca1..11fed81a4696ba18440e755c3b8a5ca3
|
||||
this.generatingStep = generatingStep;
|
||||
this.cache = cache;
|
||||
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
|
||||
index 12988d4c0b72d0648ba51c7fb07f446a713c559b..4460b0fd4770e93874332fabc63df952f482aed6 100644
|
||||
index 774b597b34198d55bdec861e3ebabb36bac8e33e..d099b76082e59baf42de8e265eb2bc593c6e6f86 100644
|
||||
--- a/net/minecraft/server/players/PlayerList.java
|
||||
+++ b/net/minecraft/server/players/PlayerList.java
|
||||
@@ -1312,7 +1312,7 @@ public abstract class PlayerList {
|
||||
@@ -1310,7 +1310,7 @@ public abstract class PlayerList {
|
||||
|
||||
public void setViewDistance(int viewDistance) {
|
||||
this.viewDistance = viewDistance;
|
||||
@@ -28345,7 +28345,7 @@ index 12988d4c0b72d0648ba51c7fb07f446a713c559b..4460b0fd4770e93874332fabc63df952
|
||||
|
||||
for (ServerLevel serverLevel : this.server.getAllLevels()) {
|
||||
if (serverLevel != null) {
|
||||
@@ -1323,7 +1323,7 @@ public abstract class PlayerList {
|
||||
@@ -1321,7 +1321,7 @@ public abstract class PlayerList {
|
||||
|
||||
public void setSimulationDistance(int simulationDistance) {
|
||||
this.simulationDistance = simulationDistance;
|
||||
|
||||
@@ -83,7 +83,7 @@ index 34b7769663e235b93c6388ab0c92c00f0297e42f..dda8d38ef61672cc714d9e5a475f9b04
|
||||
// Paper start - add close param
|
||||
this.save(progress, flush, skipSave, false);
|
||||
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
|
||||
index 18439057b996a55833e1bfc60dc293de432d2902..18c0a3de3fd04879f84306e09f5a30502a3d5077 100644
|
||||
index 514ff8543dbbe1c6ae47c7fd6c1545b87d3b2927..4726c980ad52c1300de16b7607006ea4a13325eb 100644
|
||||
--- a/net/minecraft/server/level/ServerPlayer.java
|
||||
+++ b/net/minecraft/server/level/ServerPlayer.java
|
||||
@@ -195,6 +195,7 @@ import org.slf4j.Logger;
|
||||
@@ -95,7 +95,7 @@ index 18439057b996a55833e1bfc60dc293de432d2902..18c0a3de3fd04879f84306e09f5a3050
|
||||
private static final int NEUTRAL_MOB_DEATH_NOTIFICATION_RADII_Y = 10;
|
||||
private static final int FLY_STAT_RECORDING_SPEED = 25;
|
||||
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
|
||||
index 5a60527c9feb3606d85488b3cf215c451ca033de..dea72819f2933e5a806bb3a0603e4ebdf7f99456 100644
|
||||
index d099b76082e59baf42de8e265eb2bc593c6e6f86..802357d8b582539e08a8d48024ebe9c38493a2b3 100644
|
||||
--- a/net/minecraft/server/players/PlayerList.java
|
||||
+++ b/net/minecraft/server/players/PlayerList.java
|
||||
@@ -489,6 +489,7 @@ public abstract class PlayerList {
|
||||
@@ -106,7 +106,7 @@ index 5a60527c9feb3606d85488b3cf215c451ca033de..dea72819f2933e5a806bb3a0603e4ebd
|
||||
this.playerIo.save(player);
|
||||
ServerStatsCounter serverStatsCounter = player.getStats(); // CraftBukkit
|
||||
if (serverStatsCounter != null) {
|
||||
@@ -1059,9 +1060,23 @@ public abstract class PlayerList {
|
||||
@@ -1057,9 +1058,23 @@ public abstract class PlayerList {
|
||||
}
|
||||
|
||||
public void saveAll() {
|
||||
|
||||
@@ -339,7 +339,7 @@
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -319,56 +_,138 @@
|
||||
@@ -319,56 +_,136 @@
|
||||
}
|
||||
|
||||
protected void save(ServerPlayer player) {
|
||||
@@ -420,14 +420,11 @@
|
||||
|
||||
player.unRide();
|
||||
|
||||
- for (ThrownEnderpearl thrownEnderpearl : player.getEnderPearls()) {
|
||||
for (ThrownEnderpearl thrownEnderpearl : player.getEnderPearls()) {
|
||||
- thrownEnderpearl.setRemoved(Entity.RemovalReason.UNLOADED_WITH_PLAYER);
|
||||
+ for (ThrownEnderpearl thrownEnderpearl : new java.util.ArrayList<>(player.getEnderPearls())) { // Paper - copy, setOwner will remove from list;
|
||||
+ // Paper start - Allow using old ender pearl behavior
|
||||
+ if (!thrownEnderpearl.level().paperConfig().misc.legacyEnderPearlBehavior) {
|
||||
+ thrownEnderpearl.setRemoved(Entity.RemovalReason.UNLOADED_WITH_PLAYER, org.bukkit.event.entity.EntityRemoveEvent.Cause.PLAYER_QUIT); // CraftBukkit - add Bukkit remove cause
|
||||
+ } else {
|
||||
+ thrownEnderpearl.setOwner(null);
|
||||
+ }
|
||||
+ // Paper end - Allow using old ender pearl behavior
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user