Skip to content

Commit 286bd1b

Browse files
authored
1.18 misc performance dev branch (#7368)
- Port player chunk loader patch Makes the chunk system act as it did in 1.17, no additional tickets (and thus logic) to make a chunk ticking. Adds simulation distance API, deprecates old no-tick method. - More collision optimisations Ancient patch from tuinity that never could be pushed to master. - Fix Optimise ArraySetSorted#removeIf patch - Execute chunk tasks fairly for worlds while waiting for next tick - Port Replace ticket level propagator
1 parent b173c3e commit 286bd1b

File tree

41 files changed

+1837
-742
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+1837
-742
lines changed

patches/api/0014-Add-view-distance-API.patch

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ Add per player no-tick, tick, and send view distances.
88
Also add send/no-tick view distance to World.
99

1010
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
11-
index cf6fe1b5a1531e8d30c0386e36c023d003458b7e..bf23ef001fb5177b7aab0b3ed8752f58641bb840 100644
11+
index cf6fe1b5a1531e8d30c0386e36c023d003458b7e..ad342ecd8b86903276c62644624cff55cf190026 100644
1212
--- a/src/main/java/org/bukkit/World.java
1313
+++ b/src/main/java/org/bukkit/World.java
14-
@@ -2597,6 +2597,52 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
14+
@@ -2597,6 +2597,62 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
1515
int getSimulationDistance();
1616
// Spigot end
1717

@@ -23,13 +23,21 @@ index cf6fe1b5a1531e8d30c0386e36c023d003458b7e..bf23ef001fb5177b7aab0b3ed8752f58
2323
+ void setViewDistance(int viewDistance);
2424
+
2525
+ /**
26+
+ * Sets the simulation distance for this world.
27+
+ * @param simulationDistance simulation distance in [2, 32]
28+
+ */
29+
+ void setSimulationDistance(int simulationDistance);
30+
+
31+
+ /**
2632
+ * Returns the no-tick view distance for this world.
2733
+ * <p>
2834
+ * No-tick view distance is the view distance where chunks will load, however the chunks and their entities will not
2935
+ * be set to tick.
3036
+ * </p>
3137
+ * @return The no-tick view distance for this world.
38+
+ * @deprecated Use {@link #getViewDistance()}
3239
+ */
40+
+ @Deprecated
3341
+ int getNoTickViewDistance();
3442
+
3543
+ /**
@@ -39,7 +47,9 @@ index cf6fe1b5a1531e8d30c0386e36c023d003458b7e..bf23ef001fb5177b7aab0b3ed8752f58
3947
+ * be set to tick.
4048
+ * </p>
4149
+ * @param viewDistance view distance in [2, 32]
50+
+ * @deprecated Use {@link #setViewDistance(int)}
4251
+ */
52+
+ @Deprecated
4353
+ void setNoTickViewDistance(int viewDistance);
4454
+
4555
+ /**
@@ -49,7 +59,7 @@ index cf6fe1b5a1531e8d30c0386e36c023d003458b7e..bf23ef001fb5177b7aab0b3ed8752f58
4959
+ * </p>
5060
+ * @return The sending view distance for this world.
5161
+ */
52-
+ public int getSendViewDistance();
62+
+ int getSendViewDistance();
5363
+
5464
+ /**
5565
+ * Sets the sending view distance for this world.
@@ -58,17 +68,17 @@ index cf6fe1b5a1531e8d30c0386e36c023d003458b7e..bf23ef001fb5177b7aab0b3ed8752f58
5868
+ * </p>
5969
+ * @param viewDistance view distance in [2, 32] or -1
6070
+ */
61-
+ public void setSendViewDistance(int viewDistance);
71+
+ void setSendViewDistance(int viewDistance);
6272
+ // Paper end - view distance api
6373
+
6474
// Spigot start
6575
public class Spigot {
6676

6777
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
68-
index 43d91f578b0aefd18f7f5ecd120a366af4ee98e6..2d93f5ad7f9c0df08bcd099a813c1d8e9b8c16eb 100644
78+
index 43d91f578b0aefd18f7f5ecd120a366af4ee98e6..9f861fcc350b803e63b08631f7a6c30d13b4cb7c 100644
6979
--- a/src/main/java/org/bukkit/entity/Player.java
7080
+++ b/src/main/java/org/bukkit/entity/Player.java
71-
@@ -1793,6 +1793,62 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
81+
@@ -1793,6 +1793,78 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
7282
* @param affects Whether the player can affect mob spawning
7383
*/
7484
public void setAffectsSpawning(boolean affects);
@@ -78,7 +88,6 @@ index 43d91f578b0aefd18f7f5ecd120a366af4ee98e6..2d93f5ad7f9c0df08bcd099a813c1d8e
7888
+ *
7989
+ * @return the player's view distance
8090
+ * @see org.bukkit.World#getViewDistance()
81-
+ * @see org.bukkit.World#getNoTickViewDistance()
8291
+ */
8392
+ public int getViewDistance();
8493
+
@@ -87,9 +96,22 @@ index 43d91f578b0aefd18f7f5ecd120a366af4ee98e6..2d93f5ad7f9c0df08bcd099a813c1d8e
8796
+ *
8897
+ * @param viewDistance the player's view distance
8998
+ * @see org.bukkit.World#setViewDistance(int)
90-
+ * @see org.bukkit.World#setNoTickViewDistance(int)
9199
+ */
92100
+ public void setViewDistance(int viewDistance);
101+
+
102+
+ /**
103+
+ * Gets the simulation distance for this player
104+
+ *
105+
+ * @return the player's simulation distance
106+
+ */
107+
+ public int getSimulationDistance();
108+
+
109+
+ /**
110+
+ * Sets the simulation distance for this player
111+
+ *
112+
+ * @param simulationDistance the player's new simulation distance
113+
+ */
114+
+ public void setSimulationDistance(int simulationDistance);
93115
+
94116
+ /**
95117
+ * Gets the no-ticking view distance for this player.
@@ -98,7 +120,9 @@ index 43d91f578b0aefd18f7f5ecd120a366af4ee98e6..2d93f5ad7f9c0df08bcd099a813c1d8e
98120
+ * be set to tick.
99121
+ * </p>
100122
+ * @return The no-tick view distance for this player.
123+
+ * @deprecated Use {@link #getViewDistance()}
101124
+ */
125+
+ @Deprecated
102126
+ public int getNoTickViewDistance();
103127
+
104128
+ /**
@@ -108,7 +132,9 @@ index 43d91f578b0aefd18f7f5ecd120a366af4ee98e6..2d93f5ad7f9c0df08bcd099a813c1d8e
108132
+ * be set to tick.
109133
+ * </p>
110134
+ * @param viewDistance view distance in [2, 32] or -1
135+
+ * @deprecated Use {@link #setViewDistance(int)}
111136
+ */
137+
+ @Deprecated
112138
+ public void setNoTickViewDistance(int viewDistance);
113139
+
114140
+ /**

patches/api/0025-Complete-resource-pack-API.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Subject: [PATCH] Complete resource pack API
55

66

77
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
8-
index 5f5cde854dd7928e0b640ab1713f42194eab0833..09b5941bcd412420ffc6edfe62bc95cff426ba06 100644
8+
index 29bd571bd270b9c6ed05d95122d42d9bc0c797f6..fd8a40bacaaa39c20428bbebe8611ba8cdd33e0b 100644
99
--- a/src/main/java/org/bukkit/entity/Player.java
1010
+++ b/src/main/java/org/bukkit/entity/Player.java
1111
@@ -1284,7 +1284,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
@@ -18,7 +18,7 @@ index 5f5cde854dd7928e0b640ab1713f42194eab0833..09b5941bcd412420ffc6edfe62bc95cf
1818
public void setResourcePack(@NotNull String url);
1919

2020
/**
21-
@@ -2058,6 +2060,124 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
21+
@@ -2074,6 +2076,124 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
2222
default net.kyori.adventure.text.event.HoverEvent<net.kyori.adventure.text.event.HoverEvent.ShowEntity> asHoverEvent(final @NotNull java.util.function.UnaryOperator<net.kyori.adventure.text.event.HoverEvent.ShowEntity> op) {
2323
return net.kyori.adventure.text.event.HoverEvent.showEntity(op.apply(net.kyori.adventure.text.event.HoverEvent.ShowEntity.of(this.getType().getKey(), this.getUniqueId(), this.displayName())));
2424
}

patches/api/0045-Add-String-based-Action-Bar-API.patch

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Subject: [PATCH] Add String based Action Bar API
55

66

77
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
8-
index 09b5941bcd412420ffc6edfe62bc95cff426ba06..a0777f9dc7cb6d4274635d794cf66de714535cde 100644
8+
index fd8a40bacaaa39c20428bbebe8611ba8cdd33e0b..d6a2e66e07590013bf1596012a96ec1018493e06 100644
99
--- a/src/main/java/org/bukkit/entity/Player.java
1010
+++ b/src/main/java/org/bukkit/entity/Player.java
1111
@@ -3,6 +3,7 @@ package org.bukkit.entity;
@@ -68,15 +68,15 @@ index 09b5941bcd412420ffc6edfe62bc95cff426ba06..a0777f9dc7cb6d4274635d794cf66de7
6868
public default void sendMessage(net.md_5.bungee.api.ChatMessageType position, net.md_5.bungee.api.chat.BaseComponent... components) {
6969
spigot().sendMessage(position, components);
7070
}
71-
@@ -2249,6 +2285,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
71+
@@ -2265,6 +2301,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
7272
/**
7373
* Sends the component to the specified screen position of this player
7474
*
7575
+ * @deprecated This is unlikely the API you want to use. See {@link #sendActionBar(String)} for a more proper Action Bar API. This deprecated API may send unsafe items to the client.
7676
* @param position the screen position
7777
* @param component the components to send
7878
* @deprecated use {@code sendMessage} methods that accept {@link net.kyori.adventure.text.Component}
79-
@@ -2261,6 +2298,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
79+
@@ -2277,6 +2314,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
8080
/**
8181
* Sends an array of components as a single message to the specified screen position of this player
8282
*

patches/api/0091-Player.setPlayerProfile-API.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,10 @@ index 51c96a0b6645cf31f4ca051f6a8c75b5f188484c..80d474a979add473c99692ccde93439d
6262

6363
/**
6464
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
65-
index b68f2774e4f88e905cc195df6d1592d96103df7a..23df52c7ac4ec5e687e763c13a0937c3fbc5dd47 100644
65+
index c16716e77427d0968c004a5b30600a40a36d5137..888a60fe60e6242680c153fd8edd95f6e37e26d5 100644
6666
--- a/src/main/java/org/bukkit/entity/Player.java
6767
+++ b/src/main/java/org/bukkit/entity/Player.java
68-
@@ -2235,6 +2235,20 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
68+
@@ -2251,6 +2251,20 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
6969
* was {@link org.bukkit.event.player.PlayerResourcePackStatusEvent.Status#SUCCESSFULLY_LOADED}
7070
*/
7171
boolean hasResourcePack();

patches/api/0094-Add-openSign-method-to-HumanEntity.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ index 8a479c7dfd3825fab8bb057d8afa5ae0cb01b071..6ef0d7f3dcb779fb7dc5786e74332620
2424
/**
2525
* Make the entity drop the item in their hand.
2626
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
27-
index 23df52c7ac4ec5e687e763c13a0937c3fbc5dd47..fd4613f702ebbd32ec22a81f993a1ea9d8dd896f 100644
27+
index 888a60fe60e6242680c153fd8edd95f6e37e26d5..87f62e65dbf8128d684abaf4fde88cfa566f7a1f 100644
2828
--- a/src/main/java/org/bukkit/entity/Player.java
2929
+++ b/src/main/java/org/bukkit/entity/Player.java
30-
@@ -2090,7 +2090,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
30+
@@ -2106,7 +2106,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
3131
/**
3232
* Open a Sign for editing by the Player.
3333
*

patches/api/0148-Expose-attack-cooldown-methods-for-Player.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Subject: [PATCH] Expose attack cooldown methods for Player
55

66

77
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
8-
index 61e75620b205cfeda0aee433651c45235bf21181..11e85e664fdd875c2a6e84b158b78d4784999932 100644
8+
index 81b3d2da2bb92c874845688a8b8a2b15b2a4bd59..ffbc26048e359044be6b0c96f3bd8cd1048fb316 100644
99
--- a/src/main/java/org/bukkit/entity/Player.java
1010
+++ b/src/main/java/org/bukkit/entity/Player.java
11-
@@ -2405,6 +2405,26 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
11+
@@ -2421,6 +2421,26 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
1212
* @param profile The new profile to use
1313
*/
1414
void setPlayerProfile(@NotNull com.destroystokyo.paper.profile.PlayerProfile profile);

patches/api/0194-Add-Player-Client-Options-API.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ index 0000000000000000000000000000000000000000..f7f171c4ee0b8339b2f8fbe82442d65f
193193
+ }
194194
+}
195195
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
196-
index 11e85e664fdd875c2a6e84b158b78d4784999932..385846a2011ec07d4f37c98f38d3369199780418 100644
196+
index ffbc26048e359044be6b0c96f3bd8cd1048fb316..db12ce34a7fa4f309e7cc52c953bb409e9b6ab0c 100644
197197
--- a/src/main/java/org/bukkit/entity/Player.java
198198
+++ b/src/main/java/org/bukkit/entity/Player.java
199199
@@ -2,6 +2,7 @@ package org.bukkit.entity;
@@ -204,7 +204,7 @@ index 11e85e664fdd875c2a6e84b158b78d4784999932..385846a2011ec07d4f37c98f38d33691
204204
import com.destroystokyo.paper.Title; // Paper
205205
import net.kyori.adventure.text.Component;
206206
import org.bukkit.DyeColor;
207-
@@ -2425,6 +2426,12 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
207+
@@ -2441,6 +2442,12 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
208208
* Reset the cooldown counter to 0, effectively starting the cooldown period.
209209
*/
210210
void resetCooldown();

patches/api/0218-Brand-support.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Subject: [PATCH] Brand support
55

66

77
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
8-
index 385846a2011ec07d4f37c98f38d3369199780418..e61d0ff51674213e4711d5bbe9e8aaed31ed00df 100644
8+
index db12ce34a7fa4f309e7cc52c953bb409e9b6ab0c..6983b3d6d5402ea1ed3646bffdd4d8bc613a6121 100644
99
--- a/src/main/java/org/bukkit/entity/Player.java
1010
+++ b/src/main/java/org/bukkit/entity/Player.java
11-
@@ -2560,6 +2560,16 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
11+
@@ -2576,6 +2576,16 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
1212
// Paper end
1313
}
1414

patches/api/0227-Player-elytra-boost-API.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Subject: [PATCH] Player elytra boost API
55

66

77
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
8-
index e61d0ff51674213e4711d5bbe9e8aaed31ed00df..45284317f195f08e88a4977a32a1757afb6c4b17 100644
8+
index 6983b3d6d5402ea1ed3646bffdd4d8bc613a6121..167ea1fe8d5d16098559745a67e5128e4ef78082 100644
99
--- a/src/main/java/org/bukkit/entity/Player.java
1010
+++ b/src/main/java/org/bukkit/entity/Player.java
11-
@@ -2432,6 +2432,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
11+
@@ -2448,6 +2448,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
1212
*/
1313
@NotNull
1414
<T> T getClientOption(@NotNull ClientOption<T> option);

patches/api/0255-Add-sendOpLevel-API.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Subject: [PATCH] Add sendOpLevel API
55

66

77
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
8-
index 45284317f195f08e88a4977a32a1757afb6c4b17..71de9f4c7f07c4c0b1155df14794de3ba8e28d69 100644
8+
index 167ea1fe8d5d16098559745a67e5128e4ef78082..6efcd4c5b89af422c630a566e8a851062e05b69a 100644
99
--- a/src/main/java/org/bukkit/entity/Player.java
1010
+++ b/src/main/java/org/bukkit/entity/Player.java
11-
@@ -2445,6 +2445,17 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
11+
@@ -2461,6 +2461,17 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
1212
*/
1313
@Nullable
1414
Firework boostElytra(@NotNull ItemStack firework);

0 commit comments

Comments
 (0)