more compile fixes

This commit is contained in:
Jake Potrebic 2023-06-08 13:56:13 -07:00
parent 0a9e232f48
commit f0aea8123e
No known key found for this signature in database
GPG key ID: ECE0B3C133C016C5
58 changed files with 177 additions and 150 deletions

View file

@ -12,3 +12,7 @@ public net.minecraft.server.MinecraftServer doRunTask(Lnet/minecraft/server/Tick
# AT remap issue? todo 1.18
public net.minecraft.world.level.dimension.end.EndDragonFight findExitPortal()Lnet/minecraft/world/level/block/state/pattern/BlockPattern$BlockPatternMatch;
public net.minecraft.nbt.TagParser readArrayTag()Lnet/minecraft/nbt/Tag;
# TODO 1.20 remapSpigotAt.at doesn't remap the return type for this method for some reason
public net/minecraft/world/entity/Display$TextDisplay getText()Lnet/minecraft/network/chat/Component;
public net/minecraft/world/entity/Display$BlockDisplay getBlockState()Lnet/minecraft/world/level/block/state/BlockState;

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Multi Block Change API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
index 529b2a524dafa17fdaa8dedaf551aec114a5cb7f..d2b2660eb8c4302fc46de8cdc4bc522714d13c8f 100644
index 529b2a524dafa17fdaa8dedaf551aec114a5cb7f..795984fbdd433b30e3680b3d3ae436944c86e533 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
@@ -672,6 +672,27 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
@@ -672,6 +672,29 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*/
public void sendBlockDamage(@NotNull Location loc, float progress);
@ -19,9 +19,7 @@ index 529b2a524dafa17fdaa8dedaf551aec114a5cb7f..d2b2660eb8c4302fc46de8cdc4bc5227
+ *
+ * @param blockChanges A map of the positions you want to change to their new block data
+ */
+ default void sendMultiBlockChange(@NotNull Map<? extends io.papermc.paper.math.Position, BlockData> blockChanges) {
+ this.sendMultiBlockChange(blockChanges, false);
+ }
+ void sendMultiBlockChange(@NotNull Map<? extends io.papermc.paper.math.Position, BlockData> blockChanges);
+
+ /**
+ * Send multiple block changes. This fakes a multi block change packet for each
@ -29,8 +27,12 @@ index 529b2a524dafa17fdaa8dedaf551aec114a5cb7f..d2b2660eb8c4302fc46de8cdc4bc5227
+ *
+ * @param blockChanges A map of the positions you want to change to their new block data
+ * @param suppressLightUpdates Whether to suppress light updates or not
+ * @deprecated suppressLightUpdates is no longer available in 1.20+, use {@link #sendMultiBlockChange(Map)}
+ */
+ void sendMultiBlockChange(@NotNull Map<? extends io.papermc.paper.math.Position, BlockData> blockChanges, boolean suppressLightUpdates);
+ @Deprecated
+ default void sendMultiBlockChange(@NotNull Map<? extends io.papermc.paper.math.Position, BlockData> blockChanges, boolean suppressLightUpdates) {
+ this.sendMultiBlockChange(blockChanges);
+ }
+ // Paper end
+
/**

View file

@ -165,10 +165,10 @@ index ab0ceaba9ddcbe20a8b8a1fc3ed19cb3c64ecd3d..97f0bc6573c8ba09de77061b6312b91c
* Teleports this entity to the given location. If this entity is riding a
* vehicle, it will be dismounted prior to teleportation.
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
index d2b2660eb8c4302fc46de8cdc4bc522714d13c8f..e2e73dd0b75b9a5eb7175ae8b3cfce29c95d8510 100644
index 795984fbdd433b30e3680b3d3ae436944c86e533..1e133186a1150fc78ee15bfd63044d366cbaa485 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
@@ -2877,6 +2877,49 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
@@ -2879,6 +2879,49 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
String getClientBrandName();
// Paper end

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Custom Chat Completion Suggestions API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
index e2e73dd0b75b9a5eb7175ae8b3cfce29c95d8510..fcd729614bdd8f01481d5db71e817ad1c31ae206 100644
index 1e133186a1150fc78ee15bfd63044d366cbaa485..ff6006728406b10307742d4e773ba091aa6de137 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
@@ -2764,6 +2764,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
@@ -2766,6 +2766,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @throws IllegalArgumentException If the level is negative or greater than {@code 4} (i.e. not within {@code [0, 4]}).
*/
void sendOpLevel(byte level);

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Elder Guardian appearance API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
index fcd729614bdd8f01481d5db71e817ad1c31ae206..90733cb910e93a997525d955c4236db03cdbbcfb 100644
index ff6006728406b10307742d4e773ba091aa6de137..c7595ad428711794b9459252d1cc6a2b3da065dd 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
@@ -2939,6 +2939,24 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
@@ -2941,6 +2941,24 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
void lookAt(@NotNull org.bukkit.entity.Entity entity, @NotNull io.papermc.paper.entity.LookAnchor playerAnchor, @NotNull io.papermc.paper.entity.LookAnchor entityAnchor);
// Paper end - Teleport API

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Add Player Warden Warning API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
index 90733cb910e93a997525d955c4236db03cdbbcfb..107845269618697e06b2e3b7507a70431643274c 100644
index c7595ad428711794b9459252d1cc6a2b3da065dd..f2a22762c6394dca172289c8d8e15c2de8cff917 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
@@ -2955,6 +2955,59 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
@@ -2957,6 +2957,59 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @param silent whether sound should be silenced
*/
void showElderGuardian(boolean silent);

View file

@ -98,7 +98,7 @@ index de976be7132d05506fde7a839cac3954b0dd8da4..642feb8b4578e6dbd2bf78d859283d20
public static Instrument getByType(final byte type) {
return BY_DATA.get(type);
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
index 107845269618697e06b2e3b7507a70431643274c..4dc268e55e2f2efc90b1899832d3194aa27e7779 100644
index f2a22762c6394dca172289c8d8e15c2de8cff917..4ac55bbc23fa3093ada14ee12122e0a93e06863b 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
@@ -393,9 +393,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM

View file

@ -35,7 +35,7 @@ index 3f3ea5bb6b3ea6f55b5cd699f1c01ac159619add..a2a423d4e4c2702ba5967223cab0432d
* Get the category of spawn to which this entity belongs.
*
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
index 4dc268e55e2f2efc90b1899832d3194aa27e7779..7808491e895fbfb0fa9608259b765c53087b8f28 100644
index 4ac55bbc23fa3093ada14ee12122e0a93e06863b..50b6809939dc77b94aa13df29bcd2721220456cb 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
@@ -296,6 +296,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Flying Fall Damage API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
index 7808491e895fbfb0fa9608259b765c53087b8f28..1c6d6bba2e828dae703d697e139d69c6422ead8b 100644
index 50b6809939dc77b94aa13df29bcd2721220456cb..fa638e80b76521f90d36b4665d51624dbd6167fd 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
@@ -1534,6 +1534,23 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
@@ -1536,6 +1536,23 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*/
public void setAllowFlight(boolean flight);

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Win Screen API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
index 1c6d6bba2e828dae703d697e139d69c6422ead8b..a5be783b06f97d45897a359db4e2f213343adebc 100644
index fa638e80b76521f90d36b4665d51624dbd6167fd..997afb6739c72529ea8226228a9905d72f77c89a 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
@@ -901,6 +901,47 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
@@ -903,6 +903,47 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*/
public void sendMap(@NotNull MapView map);

View file

@ -6112,7 +6112,7 @@ index 1bfa33253a154c66dc8b7e476c777b74cda8999f..d8b83c8c89143d78620f812c491a1950
while (objectiterator.hasNext()) {
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index 2bc9afcd46f2d42e8bab1cf29defe53d00b2bc8b..07e1c75c0df7362ced6cffd125aec4fd553a9243 100644
index 2bc9afcd46f2d42e8bab1cf29defe53d00b2bc8b..5115342b51ccefe4430df47a498bc59b1d96bb0e 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -51,6 +51,7 @@ import net.minecraft.world.level.storage.LevelStorageSource;
@ -6202,21 +6202,21 @@ index 2bc9afcd46f2d42e8bab1cf29defe53d00b2bc8b..07e1c75c0df7362ced6cffd125aec4fd
+
+ public void getEntityTickingChunkAsync(int x, int z, java.util.function.Consumer<LevelChunk> onLoad) {
+ io.papermc.paper.chunk.system.ChunkSystem.scheduleTickingState(
+ this.level, x, z, ChunkHolder.FullChunkStatus.ENTITY_TICKING, true,
+ this.level, x, z, FullChunkStatus.ENTITY_TICKING, true,
+ ca.spottedleaf.concurrentutil.executor.standard.PrioritisedExecutor.Priority.NORMAL, onLoad
+ );
+ }
+
+ public void getTickingChunkAsync(int x, int z, java.util.function.Consumer<LevelChunk> onLoad) {
+ io.papermc.paper.chunk.system.ChunkSystem.scheduleTickingState(
+ this.level, x, z, ChunkHolder.FullChunkStatus.TICKING, true,
+ this.level, x, z, FullChunkStatus.BLOCK_TICKING, true,
+ ca.spottedleaf.concurrentutil.executor.standard.PrioritisedExecutor.Priority.NORMAL, onLoad
+ );
+ }
+
+ public void getFullChunkAsync(int x, int z, java.util.function.Consumer<LevelChunk> onLoad) {
+ io.papermc.paper.chunk.system.ChunkSystem.scheduleTickingState(
+ this.level, x, z, ChunkHolder.FullChunkStatus.BORDER, true,
+ this.level, x, z, FullChunkStatus.FULL, true,
+ ca.spottedleaf.concurrentutil.executor.standard.PrioritisedExecutor.Priority.NORMAL, onLoad
+ );
+ }

View file

@ -255,7 +255,7 @@ index 0000000000000000000000000000000000000000..3b53d87a52cafb2503419f21ddd87d42
+}
diff --git a/src/main/java/io/papermc/paper/adventure/ChatProcessor.java b/src/main/java/io/papermc/paper/adventure/ChatProcessor.java
new file mode 100644
index 0000000000000000000000000000000000000000..f2141c1bb4e1fd6697326b50db74f78a8367b9e4
index 0000000000000000000000000000000000000000..7ddec8e330ab058e72d90b68c5361a6c4feb2393
--- /dev/null
+++ b/src/main/java/io/papermc/paper/adventure/ChatProcessor.java
@@ -0,0 +1,412 @@
@ -479,7 +479,7 @@ index 0000000000000000000000000000000000000000..f2141c1bb4e1fd6697326b50db74f78a
+
+ final Set<Audience> viewers = event.viewers();
+ final ResourceKey<ChatType> chatTypeKey = renderer instanceof ChatRenderer.Default ? ChatType.CHAT : ChatType.RAW;
+ final ChatType.Bound chatType = ChatType.bind(chatTypeKey, this.player().level.registryAccess(), PaperAdventure.asVanilla(displayName(player)));
+ final ChatType.Bound chatType = ChatType.bind(chatTypeKey, this.player.level().registryAccess(), PaperAdventure.asVanilla(displayName(player)));
+
+ OutgoingChat outgoingChat = viewers instanceof LazyChatAudienceSet lazyAudienceSet && lazyAudienceSet.isLazy() ? new ServerOutgoingChat() : new ViewersOutgoingChat();
+ /* if (this.flags.get(FORCE_PREVIEW_USE)) { // TODO (future, maybe?)

View file

@ -1062,7 +1062,7 @@ index c943e64d70bab240f8dc733e78a185172664c5e4..a645263f148a25e5b4baeed51775eb8e
}
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index 07e1c75c0df7362ced6cffd125aec4fd553a9243..fc1afda5a60ab0f3c275f849d8af08d308b36c3f 100644
index 5115342b51ccefe4430df47a498bc59b1d96bb0e..6d5a160a9fdaa04bb930afae8a0765910f631d23 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -415,13 +415,15 @@ public class ServerChunkCache extends ChunkSource {

View file

@ -10911,10 +10911,10 @@ index 0000000000000000000000000000000000000000..396d72c00e47cf1669ae20dc839c1c96
+}
diff --git a/src/main/java/io/papermc/paper/chunk/system/scheduling/NewChunkHolder.java b/src/main/java/io/papermc/paper/chunk/system/scheduling/NewChunkHolder.java
new file mode 100644
index 0000000000000000000000000000000000000000..72c813e1d359486fe8d6776aa82986586b8022f5
index 0000000000000000000000000000000000000000..cfd97d48ae77d33b68e11de3140a00f3faca34a4
--- /dev/null
+++ b/src/main/java/io/papermc/paper/chunk/system/scheduling/NewChunkHolder.java
@@ -0,0 +1,2100 @@
@@ -0,0 +1,2101 @@
+package io.papermc.paper.chunk.system.scheduling;
+
+import ca.spottedleaf.concurrentutil.completable.Completable;
@ -10939,6 +10939,7 @@ index 0000000000000000000000000000000000000000..72c813e1d359486fe8d6776aa8298658
+import it.unimi.dsi.fastutil.objects.ReferenceLinkedOpenHashSet;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.server.level.ChunkHolder;
+import net.minecraft.server.level.ChunkLevel;
+import net.minecraft.server.level.ChunkMap;
+import net.minecraft.server.level.FullChunkStatus;
+import net.minecraft.server.level.ServerLevel;
@ -11520,8 +11521,8 @@ index 0000000000000000000000000000000000000000..72c813e1d359486fe8d6776aa8298658
+ }
+
+ // ticket level state
+ private int oldTicketLevel = ChunkMap.MAX_CHUNK_DISTANCE + 1;
+ private int currentTicketLevel = ChunkMap.MAX_CHUNK_DISTANCE + 1;
+ private int oldTicketLevel = ChunkLevel.MAX_LEVEL + 1;
+ private int currentTicketLevel = ChunkLevel.MAX_LEVEL + 1;
+
+ public int getTicketLevel() {
+ return this.currentTicketLevel;
@ -11605,7 +11606,7 @@ index 0000000000000000000000000000000000000000..72c813e1d359486fe8d6776aa8298658
+ }
+
+ // chunk must be marked inaccessible (i.e unloaded to plugins)
+ if (this.getChunkStatus() != ChunkHolder.FullChunkStatus.INACCESSIBLE) {
+ if (this.getChunkStatus() != FullChunkStatus.INACCESSIBLE) {
+ return "fullchunkstatus";
+ }
+
@ -11844,8 +11845,8 @@ index 0000000000000000000000000000000000000000..72c813e1d359486fe8d6776aa8298658
+
+ this.oldTicketLevel = newLevel;
+
+ final ChunkHolder.FullChunkStatus oldState = ChunkHolder.getFullChunkStatus(oldLevel);
+ final ChunkHolder.FullChunkStatus newState = ChunkHolder.getFullChunkStatus(newLevel);
+ final FullChunkStatus oldState = ChunkHolder.getFullChunkStatus(oldLevel);
+ final FullChunkStatus newState = ChunkHolder.getFullChunkStatus(newLevel);
+ final boolean oldUnloaded = oldLevel > ChunkHolderManager.MAX_TICKET_LEVEL;
+ final boolean newUnloaded = newLevel > ChunkHolderManager.MAX_TICKET_LEVEL;
+
@ -11853,7 +11854,7 @@ index 0000000000000000000000000000000000000000..72c813e1d359486fe8d6776aa8298658
+ final ChunkStatus maxGenerationStatusNew = ChunkHolder.getStatus(newLevel);
+
+ // check for cancellations from downgrading ticket level
+ if (this.requestedGenStatus != null && !newState.isOrAfter(ChunkHolder.FullChunkStatus.BORDER) && newLevel > oldLevel) {
+ if (this.requestedGenStatus != null && !newState.isOrAfter(FullChunkStatus.FULL) && newLevel > oldLevel) {
+ // note: cancel() may invoke onChunkGenComplete synchronously here
+ if (newUnloaded) {
+ // need to cancel all tasks
@ -11888,7 +11889,7 @@ index 0000000000000000000000000000000000000000..72c813e1d359486fe8d6776aa8298658
+ if (newState != oldState) {
+ if (newState.isOrAfter(oldState)) {
+ // status upgrade
+ if (!oldState.isOrAfter(ChunkHolder.FullChunkStatus.BORDER) && newState.isOrAfter(ChunkHolder.FullChunkStatus.BORDER)) {
+ if (!oldState.isOrAfter(FullChunkStatus.FULL) && newState.isOrAfter(FullChunkStatus.FULL)) {
+ // may need to schedule full load
+ if (this.currentGenStatus != ChunkStatus.FULL) {
+ if (this.requestedGenStatus != null) {
@ -11905,16 +11906,16 @@ index 0000000000000000000000000000000000000000..72c813e1d359486fe8d6776aa8298658
+ }
+ } else {
+ // status downgrade
+ if (!newState.isOrAfter(ChunkHolder.FullChunkStatus.ENTITY_TICKING) && oldState.isOrAfter(ChunkHolder.FullChunkStatus.ENTITY_TICKING)) {
+ this.completeFullStatusConsumers(ChunkHolder.FullChunkStatus.ENTITY_TICKING, null);
+ if (!newState.isOrAfter(FullChunkStatus.ENTITY_TICKING) && oldState.isOrAfter(FullChunkStatus.ENTITY_TICKING)) {
+ this.completeFullStatusConsumers(FullChunkStatus.ENTITY_TICKING, null);
+ }
+
+ if (!newState.isOrAfter(ChunkHolder.FullChunkStatus.TICKING) && oldState.isOrAfter(ChunkHolder.FullChunkStatus.TICKING)) {
+ this.completeFullStatusConsumers(ChunkHolder.FullChunkStatus.TICKING, null);
+ if (!newState.isOrAfter(FullChunkStatus.BLOCK_TICKING) && oldState.isOrAfter(FullChunkStatus.BLOCK_TICKING)) {
+ this.completeFullStatusConsumers(FullChunkStatus.BLOCK_TICKING, null);
+ }
+
+ if (!newState.isOrAfter(ChunkHolder.FullChunkStatus.BORDER) && oldState.isOrAfter(ChunkHolder.FullChunkStatus.BORDER)) {
+ this.completeFullStatusConsumers(ChunkHolder.FullChunkStatus.BORDER, null);
+ if (!newState.isOrAfter(FullChunkStatus.FULL) && oldState.isOrAfter(FullChunkStatus.FULL)) {
+ this.completeFullStatusConsumers(FullChunkStatus.FULL, null);
+ }
+ }
+ }
@ -13924,10 +13925,10 @@ index a52e6e8be323863ece6624a8ae7f9455279bdc23..e3467aaf6d0c8d486b84362e3c20b3fe
.flatMap(entry -> entry.getKey().stream().map(s -> Map.entry(s, entry.getValue())))
diff --git a/src/main/java/io/papermc/paper/command/subcommands/ChunkDebugCommand.java b/src/main/java/io/papermc/paper/command/subcommands/ChunkDebugCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..a6fb7ae77d7cad2243e28a33718e4631f65697fa
index 0000000000000000000000000000000000000000..962d3cae6340fc11607b59355e291629618f289c
--- /dev/null
+++ b/src/main/java/io/papermc/paper/command/subcommands/ChunkDebugCommand.java
@@ -0,0 +1,264 @@
@@ -0,0 +1,265 @@
+package io.papermc.paper.command.subcommands;
+
+import io.papermc.paper.command.CommandUtil;
@ -13942,6 +13943,7 @@ index 0000000000000000000000000000000000000000..a6fb7ae77d7cad2243e28a33718e4631
+import io.papermc.paper.util.MCUtil;
+import net.minecraft.server.MinecraftServer;
+import net.minecraft.server.level.ChunkHolder;
+import net.minecraft.server.level.FullChunkStatus;
+import net.minecraft.server.level.ServerLevel;
+import net.minecraft.world.level.chunk.ChunkAccess;
+import net.minecraft.world.level.chunk.ImposterProtoChunk;
@ -14031,8 +14033,8 @@ index 0000000000000000000000000000000000000000..a6fb7ae77d7cad2243e28a33718e4631
+
+ int total = 0;
+ int inactive = 0;
+ int border = 0;
+ int ticking = 0;
+ int full = 0;
+ int blockTicking = 0;
+ int entityTicking = 0;
+
+ for (final ChunkHolder chunk : io.papermc.paper.chunk.system.ChunkSystem.getVisibleChunkHolders(world)) {
@ -14042,29 +14044,29 @@ index 0000000000000000000000000000000000000000..a6fb7ae77d7cad2243e28a33718e4631
+
+ ++total;
+
+ ChunkHolder.FullChunkStatus state = chunk.getFullStatus();
+ FullChunkStatus state = chunk.getFullStatus();
+
+ switch (state) {
+ case INACCESSIBLE -> ++inactive;
+ case BORDER -> ++border;
+ case TICKING -> ++ticking;
+ case FULL -> ++full;
+ case BLOCK_TICKING -> ++blockTicking;
+ case ENTITY_TICKING -> ++entityTicking;
+ }
+ }
+
+ accumulatedTotal += total;
+ accumulatedInactive += inactive;
+ accumulatedBorder += border;
+ accumulatedTicking += ticking;
+ accumulatedBorder += full;
+ accumulatedTicking += blockTicking;
+ accumulatedEntityTicking += entityTicking;
+
+ sender.sendMessage(text().append(text("Chunks in ", BLUE), text(bukkitWorld.getName(), GREEN), text(":")));
+ sender.sendMessage(text().color(DARK_AQUA).append(
+ text("Total: ", BLUE), text(total),
+ text(" Inactive: ", BLUE), text(inactive),
+ text(" Border: ", BLUE), text(border),
+ text(" Ticking: ", BLUE), text(ticking),
+ text(" Entity: ", BLUE), text(entityTicking)
+ text(" Full: ", BLUE), text(full),
+ text(" Block Ticking: ", BLUE), text(blockTicking),
+ text(" Entity Ticking: ", BLUE), text(entityTicking)
+ ));
+ }
+ if (worlds.size() > 1) {
@ -14072,9 +14074,9 @@ index 0000000000000000000000000000000000000000..a6fb7ae77d7cad2243e28a33718e4631
+ sender.sendMessage(text().color(DARK_AQUA).append(
+ text("Total: ", BLUE), text(accumulatedTotal),
+ text(" Inactive: ", BLUE), text(accumulatedInactive),
+ text(" Border: ", BLUE), text(accumulatedBorder),
+ text(" Ticking: ", BLUE), text(accumulatedTicking),
+ text(" Entity: ", BLUE), text(accumulatedEntityTicking)
+ text(" Full: ", BLUE), text(accumulatedBorder),
+ text(" Block Ticking: ", BLUE), text(accumulatedTicking),
+ text(" Entity Ticking: ", BLUE), text(accumulatedEntityTicking)
+ ));
+ }
+ }
@ -14316,7 +14318,7 @@ index cea9c098ade00ee87b8efc8164ab72f5279758f0..197224e31175252d8438a8df585bbb65
+ }
}
diff --git a/src/main/java/io/papermc/paper/util/MCUtil.java b/src/main/java/io/papermc/paper/util/MCUtil.java
index 902317d2dc198a1cbfc679810bcb2173644354cb..2e830847155e7c43ef411d28e81592c21446143b 100644
index 902317d2dc198a1cbfc679810bcb2173644354cb..67064aa46043cad3ad14b1293c767e6fa461fb6a 100644
--- a/src/main/java/io/papermc/paper/util/MCUtil.java
+++ b/src/main/java/io/papermc/paper/util/MCUtil.java
@@ -2,16 +2,29 @@ package io.papermc.paper.util;
@ -14387,7 +14389,7 @@ index 902317d2dc198a1cbfc679810bcb2173644354cb..2e830847155e7c43ef411d28e81592c2
+ JsonObject playerData = new JsonObject();
+ players.add(playerData);
+
+ Level playerWorld = player.getLevel();
+ Level playerWorld = player.level();
+ org.bukkit.World craftWorld = playerWorld.getWorld();
+ Entity.RemovalReason removalReason = player.getRemovalReason();
+
@ -17564,7 +17566,7 @@ index f3c9a3dbb6f0e6f825b7477c89ed72ed52845419..20d600d29c2f2e47c798721d1f151e62
+ */ // Paper - rewrite chunk system
}
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index fc1afda5a60ab0f3c275f849d8af08d308b36c3f..caff28e2446177d622c999b84d8889fbf61d0b3d 100644
index 6d5a160a9fdaa04bb930afae8a0765910f631d23..a558e9a364a13fc2e81b73fa00cc0eff59eacb9a 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -367,7 +367,7 @@ public class ServerChunkCache extends ChunkSource {

View file

@ -12,7 +12,7 @@ for this on CB at one point but I can't find it. We may need to do this
ourselves at some point in the future.
diff --git a/src/main/java/io/papermc/paper/adventure/ChatProcessor.java b/src/main/java/io/papermc/paper/adventure/ChatProcessor.java
index f2141c1bb4e1fd6697326b50db74f78a8367b9e4..27c63ef4fcfcf763926261cbd48c9a6e754142d6 100644
index 7ddec8e330ab058e72d90b68c5361a6c4feb2393..774fb97912f766589f3548f659618ad554e0503f 100644
--- a/src/main/java/io/papermc/paper/adventure/ChatProcessor.java
+++ b/src/main/java/io/papermc/paper/adventure/ChatProcessor.java
@@ -19,6 +19,7 @@ import net.kyori.adventure.audience.Audience;

View file

@ -565,7 +565,7 @@ index 0000000000000000000000000000000000000000..7ac27392a8647ef7d0dc78efe78703e9
+ @NotNull GameProfile buildGameProfile();
+}
diff --git a/src/main/java/io/papermc/paper/util/MCUtil.java b/src/main/java/io/papermc/paper/util/MCUtil.java
index 2e830847155e7c43ef411d28e81592c21446143b..4d7604a63fb996f869b5d853738cab37fc22cb15 100644
index 67064aa46043cad3ad14b1293c767e6fa461fb6a..77da7a3b51c500ff251f776acc85a752a99fb356 100644
--- a/src/main/java/io/papermc/paper/util/MCUtil.java
+++ b/src/main/java/io/papermc/paper/util/MCUtil.java
@@ -1,5 +1,7 @@

View file

@ -40,7 +40,7 @@ index a502d293cedb2f507e6cf1792429b36685ed1910..e50af28f806593a0171ad7cee5805f74
return true;
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index caff28e2446177d622c999b84d8889fbf61d0b3d..d7022cda5f4654b1cbfeed3f096af028a9fbc564 100644
index a558e9a364a13fc2e81b73fa00cc0eff59eacb9a..0cf7c33f80e67eccc1bf5e1d2101325ab94d8f45 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -716,6 +716,15 @@ public class ServerChunkCache extends ChunkSource {

View file

@ -13,7 +13,7 @@ Shulkers) may need to be changed in order for it to re-save properly
No more crashing though.
diff --git a/src/main/java/io/papermc/paper/util/MCUtil.java b/src/main/java/io/papermc/paper/util/MCUtil.java
index 4d7604a63fb996f869b5d853738cab37fc22cb15..c856a9a0d085b278da416c59996fc131811f790c 100644
index 77da7a3b51c500ff251f776acc85a752a99fb356..2d11a67bdc82088abf0b3ca134f352f155c8eb1f 100644
--- a/src/main/java/io/papermc/paper/util/MCUtil.java
+++ b/src/main/java/io/papermc/paper/util/MCUtil.java
@@ -15,6 +15,8 @@ import it.unimi.dsi.fastutil.objects.ReferenceArrayList;

View file

@ -60,7 +60,7 @@ index fcd760cb88f84ff79811631612956fde79905132..99fc97051c61ac8d08afdc0ea4845e96
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftTurtle.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftTurtle.java
index 96462a29551c301d3c80029cab2bec3839914237..a14d0a688b9054988b5c86c94738e4aaca9f9cfd 100644
index 96462a29551c301d3c80029cab2bec3839914237..d3546fb082a56b4ce077ded5d25909e15f7eb593 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftTurtle.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftTurtle.java
@@ -34,4 +34,31 @@ public class CraftTurtle extends CraftAnimals implements Turtle {
@ -71,27 +71,27 @@ index 96462a29551c301d3c80029cab2bec3839914237..a14d0a688b9054988b5c86c94738e4aa
+ // Paper start
+ @Override
+ public org.bukkit.Location getHome() {
+ return io.papermc.paper.util.MCUtil.toLocation(getHandle().getLevel(), getHandle().getHomePos());
+ return io.papermc.paper.util.MCUtil.toLocation(this.getHandle().level(), this.getHandle().getHomePos());
+ }
+
+ @Override
+ public void setHome(org.bukkit.Location location) {
+ getHandle().setHomePos(io.papermc.paper.util.MCUtil.toBlockPosition(location));
+ this.getHandle().setHomePos(io.papermc.paper.util.MCUtil.toBlockPosition(location));
+ }
+
+ @Override
+ public boolean isGoingHome() {
+ return getHandle().isGoingHome();
+ return this.getHandle().isGoingHome();
+ }
+
+ @Override
+ public boolean isDigging() {
+ return getHandle().isLayingEgg();
+ return this.getHandle().isLayingEgg();
+ }
+
+ @Override
+ public void setHasEgg(boolean hasEgg) {
+ getHandle().setHasEgg(hasEgg);
+ this.getHandle().setHasEgg(hasEgg);
+ }
+ // Paper end
}

View file

@ -338,7 +338,7 @@ index 8c4d2b2f206d7662c0aceb30f49fa58f9426ec5c..1711170ef98831dacfbf30ac22e19f47
double d0 = (double) SectionPos.sectionToBlockCoord(pos.x, 8);
double d1 = (double) SectionPos.sectionToBlockCoord(pos.z, 8);
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index d7022cda5f4654b1cbfeed3f096af028a9fbc564..aa603e26f7fb1cc9043fd0e7a820b4cd38fa9a79 100644
index 0cf7c33f80e67eccc1bf5e1d2101325ab94d8f45..ed1510776a0c71dea33e7a8fedd289927031d34b 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -694,7 +694,18 @@ public class ServerChunkCache extends ChunkSource {

View file

@ -7,7 +7,7 @@ bypass the need to get a player chunk, then get the either,
then unwrap it...
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index aa603e26f7fb1cc9043fd0e7a820b4cd38fa9a79..a2ddede2113a8ec6d99a19ee77e4e5a1381e2b5a 100644
index ed1510776a0c71dea33e7a8fedd289927031d34b..9f019946c6098314b1aeba48ee5b1aba9f2935f2 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -421,6 +421,12 @@ public class ServerChunkCache extends ChunkSource {

View file

@ -300,7 +300,7 @@ index 0000000000000000000000000000000000000000..95d6022c9cfb2e36ec5a71be6e343540
+ }
+}
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index a2ddede2113a8ec6d99a19ee77e4e5a1381e2b5a..ca8535c0532a0c97f6b6d84758f025f29ab1ef93 100644
index 9f019946c6098314b1aeba48ee5b1aba9f2935f2..1806b0903185561a16581e10a75fff8c8e5f0464 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -445,6 +445,7 @@ public class ServerChunkCache extends ChunkSource {

View file

@ -5,26 +5,26 @@ Subject: [PATCH] Add phantom creative and insomniac controls
diff --git a/src/main/java/net/minecraft/world/entity/EntitySelector.java b/src/main/java/net/minecraft/world/entity/EntitySelector.java
index 668a7c3f36cdbe48e472cb810b27ae4ab39a65d6..9edea92834306b39abda36ba9be4e8796f113cc4 100644
index 668a7c3f36cdbe48e472cb810b27ae4ab39a65d6..d15e62da0307728a7c2be191a27f87da1bb29f49 100644
--- a/src/main/java/net/minecraft/world/entity/EntitySelector.java
+++ b/src/main/java/net/minecraft/world/entity/EntitySelector.java
@@ -27,6 +27,7 @@ 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> isInsomniac = (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
+ 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
private EntitySelector() {}
// Paper start
diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
index 9bd6e71ea38bf050832f0f7bbed4a5db6ddcef71..9660f517963459396f3ff112fbcab9bb1f9c1949 100644
index 9bd6e71ea38bf050832f0f7bbed4a5db6ddcef71..ab639cb2faaafaeb33be91bfe99ffad6d23088db 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
@@ -563,6 +563,7 @@ public class Phantom extends FlyingMob implements Enemy {
Player entityhuman = (Player) iterator.next();
if (Phantom.this.canAttack(entityhuman, TargetingConditions.DEFAULT)) {
+ if (!level().paperConfig().entities.behavior.phantomsOnlyAttackInsomniacs || EntitySelector.isInsomniac.test(entityhuman)) // Paper
+ if (!level().paperConfig().entities.behavior.phantomsOnlyAttackInsomniacs || EntitySelector.IS_INSOMNIAC.test(entityhuman)) // Paper
Phantom.this.setTarget(entityhuman, org.bukkit.event.entity.EntityTargetEvent.TargetReason.CLOSEST_PLAYER, true); // CraftBukkit - reason
return true;
}

View file

@ -53,7 +53,7 @@ index 2a55f9e0ab6fa07ba913203bb62acd54add450a0..7bd02abf039f7e047b6b6b1de0bc4788
// Paper start - move executeAll() into full server tick timing
try (co.aikar.timings.Timing ignored = MinecraftTimings.processTasksTimer.startTiming()) {
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index ca8535c0532a0c97f6b6d84758f025f29ab1ef93..604e1f1113457d7dbd368d40a668aab7c7466d40 100644
index 1806b0903185561a16581e10a75fff8c8e5f0464..dfcb9a57d4b6c9bab7305a5ec8a4136a8c66c9d4 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -603,6 +603,15 @@ public class ServerChunkCache extends ChunkSource {

View file

@ -22,7 +22,7 @@ index bae55a65fbd8c270395c9b56d129814fb1614520..01ab92e1e0c316ef262ea53a4b534dbd
}
diff --git a/src/main/java/net/minecraft/world/entity/EntitySelector.java b/src/main/java/net/minecraft/world/entity/EntitySelector.java
index 9edea92834306b39abda36ba9be4e8796f113cc4..f6e5406f84410ab9c177213157106739a2074cf8 100644
index d15e62da0307728a7c2be191a27f87da1bb29f49..de06ae3e8757c923a6f3f475a34885d2f15af46e 100644
--- a/src/main/java/net/minecraft/world/entity/EntitySelector.java
+++ b/src/main/java/net/minecraft/world/entity/EntitySelector.java
@@ -45,11 +45,17 @@ public final class EntitySelector {

View file

@ -219,7 +219,7 @@ index d41f44ed2e497ba3373d170c08488b49e88334c4..d3a99ba6f3085ad12b67ddc94cc4ab39
void notifyTradeUpdated(ItemStack stack);
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchantCustom.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchantCustom.java
index 257776a12ca26c1e75be22a67c94b0aa012fd687..5074e8b2259b3fb969bd0ff99c296b7537920273 100644
index 257776a12ca26c1e75be22a67c94b0aa012fd687..e7b8ade2c83bb72b4213d0ea93b97861ee43e599 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchantCustom.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchantCustom.java
@@ -74,10 +74,25 @@ public class CraftMerchantCustom extends CraftMerchant {
@ -235,7 +235,7 @@ index 257776a12ca26c1e75be22a67c94b0aa012fd687..5074e8b2259b3fb969bd0ff99c296b75
+ merchantRecipe.increaseUses();
+ }
+ if (event == null || event.isRewardingExp()) {
+ this.tradingPlayer.level.addFreshEntity(new net.minecraft.world.entity.ExperienceOrb(tradingPlayer.level, tradingPlayer.getX(), tradingPlayer.getY(), tradingPlayer.getZ(), merchantRecipe.getXp(), org.bukkit.entity.ExperienceOrb.SpawnReason.VILLAGER_TRADE, this.tradingPlayer, null));
+ this.tradingPlayer.level().addFreshEntity(new net.minecraft.world.entity.ExperienceOrb(this.tradingPlayer.level(), this.tradingPlayer.getX(), this.tradingPlayer.getY(), this.tradingPlayer.getZ(), merchantRecipe.getXp(), org.bukkit.entity.ExperienceOrb.SpawnReason.VILLAGER_TRADE, this.tradingPlayer, null));
+ }
+ }
+ this.notifyTrade(merchantRecipe);

View file

@ -18,7 +18,7 @@ index 4ea7a6bd6fdc98bef30546e19e2676a78fb29007..ef525e5f523966c9af7380e8d09ff509
LocalDate localdate = LocalDate.now();
int i = localdate.get(ChronoField.DAY_OF_MONTH);
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 3ca308bb6668392a4f7ce1296e1ef6094060491f..9a0a2331642b250eae94bb9da316969fe8eda4a9 100644
index 3ca308bb6668392a4f7ce1296e1ef6094060491f..0911a232dcc334503dbeb5f8198d2acc75a954f0 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
@@ -514,7 +514,7 @@ public class Zombie extends Monster {
@ -26,7 +26,7 @@ index 3ca308bb6668392a4f7ce1296e1ef6094060491f..9a0a2331642b250eae94bb9da316969f
float f = difficulty.getSpecialMultiplier();
- this.setCanPickUpLoot(randomsource.nextFloat() < 0.55F * f);
+ this.setCanPickUpLoot(this.level.paperConfig().entities.behavior.mobsCanAlwaysPickUpLoot.zombies || randomsource.nextFloat() < 0.55F * f); // Paper
+ this.setCanPickUpLoot(this.level().paperConfig().entities.behavior.mobsCanAlwaysPickUpLoot.zombies || randomsource.nextFloat() < 0.55F * f); // Paper
if (object == null) {
object = new Zombie.ZombieGroupData(Zombie.getSpawnAsBabyOdds(randomsource), true);
}

View file

@ -23,7 +23,7 @@ index e6139ff42470cfa9bcad02d746f15b99b1096b48..2acc531bd9e948251cac77d979f97367
}
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 9a0a2331642b250eae94bb9da316969fe8eda4a9..77688c906a934f1e4844c1fd804bfa83571f7a15 100644
index 0911a232dcc334503dbeb5f8198d2acc75a954f0..e58c3e2163be271ff2668a55098ea8f48f8636ad 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
@@ -99,7 +99,7 @@ public class Zombie extends Monster {

View file

@ -48,7 +48,7 @@ index ef525e5f523966c9af7380e8d09ff5092e56e7c5..9ca1e9d95e62929c0015d5ca2c2f9c70
@Override
public void setItemSlot(EquipmentSlot slot, ItemStack stack) {
diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
index 9660f517963459396f3ff112fbcab9bb1f9c1949..38230578c7e280a4aaa699e2a81990094e2aa264 100644
index ab639cb2faaafaeb33be91bfe99ffad6d23088db..4a132c3eff6978e927bcd4df56b9ce0306af6d19 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
@@ -144,7 +144,7 @@ public class Phantom extends FlyingMob implements Enemy {

View file

@ -5,7 +5,7 @@ Subject: [PATCH] additions to PlayerGameModeChangeEvent
diff --git a/src/main/java/net/minecraft/server/commands/DefaultGameModeCommands.java b/src/main/java/net/minecraft/server/commands/DefaultGameModeCommands.java
index 50e581613156cca765dfd8e3596dcb3b58520cec..04fd33e9d50eb675ed1d4633bf0903ec526d32d0 100644
index 50e581613156cca765dfd8e3596dcb3b58520cec..12d4c141a1bc72e53e18f73d7ee4d5a2467e08e1 100644
--- a/src/main/java/net/minecraft/server/commands/DefaultGameModeCommands.java
+++ b/src/main/java/net/minecraft/server/commands/DefaultGameModeCommands.java
@@ -25,9 +25,13 @@ public class DefaultGameModeCommands {
@ -17,7 +17,7 @@ index 50e581613156cca765dfd8e3596dcb3b58520cec..04fd33e9d50eb675ed1d4633bf0903ec
+ // Paper start - extend PlayerGameModeChangeEvent
+ org.bukkit.event.player.PlayerGameModeChangeEvent event = serverPlayer.setGameMode(gameType, org.bukkit.event.player.PlayerGameModeChangeEvent.Cause.DEFAULT_GAMEMODE, net.kyori.adventure.text.Component.empty());
+ if (event != null && event.isCancelled()) {
+ source.sendSuccess(io.papermc.paper.adventure.PaperAdventure.asVanilla(event.cancelMessage()), false);
+ source.sendSuccess(() -> io.papermc.paper.adventure.PaperAdventure.asVanilla(event.cancelMessage()), false);
}
+ // Paper end
+ ++i;
@ -25,7 +25,7 @@ index 50e581613156cca765dfd8e3596dcb3b58520cec..04fd33e9d50eb675ed1d4633bf0903ec
}
diff --git a/src/main/java/net/minecraft/server/commands/GameModeCommand.java b/src/main/java/net/minecraft/server/commands/GameModeCommand.java
index aee8618e27b893b72931e925724dd683d2e6d2aa..3131a9ee89ce0598626da4ce4983d4a8d3be91d1 100644
index aee8618e27b893b72931e925724dd683d2e6d2aa..5cb15e2209d7b315904a1fc6d650ce1e75584271 100644
--- a/src/main/java/net/minecraft/server/commands/GameModeCommand.java
+++ b/src/main/java/net/minecraft/server/commands/GameModeCommand.java
@@ -48,9 +48,14 @@ public class GameModeCommand {
@ -39,7 +39,7 @@ index aee8618e27b893b72931e925724dd683d2e6d2aa..3131a9ee89ce0598626da4ce4983d4a8
logGamemodeChange(context.getSource(), serverPlayer, gameMode);
++i;
+ } else if (event != null && event.cancelMessage() != null) {
+ context.getSource().sendSuccess(io.papermc.paper.adventure.PaperAdventure.asVanilla(event.cancelMessage()), true);
+ context.getSource().sendSuccess(() -> io.papermc.paper.adventure.PaperAdventure.asVanilla(event.cancelMessage()), true);
+ // Paper end
}
}

View file

@ -5,7 +5,7 @@ Subject: [PATCH] Add BellRevealRaiderEvent
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BellBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BellBlockEntity.java
index b446d6549922f3dabaaa05793d8ee3eb45566ac3..79e74a5f020ad971fdbef75c502a5aa8bead2258 100644
index b446d6549922f3dabaaa05793d8ee3eb45566ac3..f07222c8c9c82478d492b0916cd394be1ab0c804 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/BellBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/BellBlockEntity.java
@@ -156,7 +156,7 @@ public class BellBlockEntity extends BlockEntity {
@ -25,7 +25,7 @@ index b446d6549922f3dabaaa05793d8ee3eb45566ac3..79e74a5f020ad971fdbef75c502a5aa8
+ // Paper start
+ private static void glow(LivingEntity entity) { glow(entity, null); }
+ private static void glow(LivingEntity entity, @javax.annotation.Nullable BlockPos pos) {
+ if (pos != null && !new io.papermc.paper.event.block.BellRevealRaiderEvent(entity.level.getWorld().getBlockAt(io.papermc.paper.util.MCUtil.toLocation(entity.level, pos)), entity.getBukkitEntity()).callEvent()) return;
+ if (pos != null && !new io.papermc.paper.event.block.BellRevealRaiderEvent(entity.level().getWorld().getBlockAt(io.papermc.paper.util.MCUtil.toLocation(entity.level(), pos)), entity.getBukkitEntity()).callEvent()) return;
+ // Paper end
entity.addEffect(new MobEffectInstance(MobEffects.GLOWING, 60));
}

View file

@ -6,7 +6,7 @@ Subject: [PATCH] Fix invulnerable end crystals
MC-108513
diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
index e6d137cd6d89ac8cca76105edbab75c506c966d6..13514a583c04a3bc555099dffa5997c79fce1d69 100644
index e6d137cd6d89ac8cca76105edbab75c506c966d6..5465711d486e5f265a26042031e895fb09e30608 100644
--- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
+++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
@@ -29,6 +29,7 @@ public class EndCrystal extends Entity {
@ -22,11 +22,11 @@ index e6d137cd6d89ac8cca76105edbab75c506c966d6..13514a583c04a3bc555099dffa5997c7
// CraftBukkit end
}
+ // Paper start - Fix invulnerable end crystals
+ if (this.level.paperConfig().unsupportedSettings.fixInvulnerableEndCrystalExploit && this.generatedByDragonFight && this.isInvulnerable()) {
+ if (!java.util.Objects.equals(((ServerLevel) this.level).uuid, this.getOriginWorld())
+ || ((ServerLevel) this.level).dragonFight() == null
+ || ((ServerLevel) this.level).dragonFight().respawnStage == null
+ || ((ServerLevel) this.level).dragonFight().respawnStage.ordinal() > net.minecraft.world.level.dimension.end.DragonRespawnAnimation.SUMMONING_DRAGON.ordinal()) {
+ if (this.level().paperConfig().unsupportedSettings.fixInvulnerableEndCrystalExploit && this.generatedByDragonFight && this.isInvulnerable()) {
+ if (!java.util.Objects.equals(((ServerLevel) this.level()).uuid, this.getOriginWorld())
+ || ((ServerLevel) this.level()).getDragonFight() == null
+ || ((ServerLevel) this.level()).getDragonFight().respawnStage == null
+ || ((ServerLevel) this.level()).getDragonFight().respawnStage.ordinal() > net.minecraft.world.level.dimension.end.DragonRespawnAnimation.SUMMONING_DRAGON.ordinal()) {
+ this.setInvulnerable(false);
+ this.setBeamTarget(null);
+ }

View file

@ -429,7 +429,7 @@ index 254d4f2e45d7c8f572a4368eccd84560d4d0d836..299ab868252c8f326e3a56e878c9ee23
+ // Paper end - Horse API
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftBat.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftBat.java
index 3b960a832df1fe496ea036962083f1ac507a7db7..8f25bb253c2b22e1964afeae705901e926432ef0 100644
index 3b960a832df1fe496ea036962083f1ac507a7db7..e405488ba5e0159ff84a72fac1d2da6e9c45238e 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftBat.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftBat.java
@@ -33,4 +33,25 @@ public class CraftBat extends CraftAmbient implements Bat {
@ -444,7 +444,7 @@ index 3b960a832df1fe496ea036962083f1ac507a7db7..8f25bb253c2b22e1964afeae705901e9
+ return null;
+ }
+
+ return io.papermc.paper.util.MCUtil.toLocation(this.getHandle().getLevel(), pos);
+ return io.papermc.paper.util.MCUtil.toLocation(this.getHandle().level(), pos);
+ }
+
+ @Override
@ -870,7 +870,7 @@ index ff9f711b83a8ea1bf4135751a9ba865224bce787..1f6dcad764240e15083731d017f9bb1c
@Override
public boolean isRolling() {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java
index 6b71f8b373ef524f5df16023b773e92249bb2532..9a3734c670972ee91a0d44a1b1fa8493de854a9c 100644
index 6b71f8b373ef524f5df16023b773e92249bb2532..63e31c237dc3cf37a5e06c1cf3f030c9f1df3d38 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java
@@ -50,5 +50,25 @@ public class CraftPhantom extends CraftFlying implements Phantom, CraftEnemy {
@ -885,7 +885,7 @@ index 6b71f8b373ef524f5df16023b773e92249bb2532..9a3734c670972ee91a0d44a1b1fa8493
+ return null;
+ }
+
+ return io.papermc.paper.util.MCUtil.toLocation(this.getHandle().getLevel(), pos);
+ return io.papermc.paper.util.MCUtil.toLocation(this.getHandle().level(), pos);
+ }
+
+ @Override
@ -1157,7 +1157,7 @@ index e98242321fcaa5cbaa242cb7e77832378a8aecf6..3954fe7e5f9ce8ea9300bfb92b7e4f4b
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWanderingTrader.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWanderingTrader.java
index fa7107593b20e0151d8d67104e4a92dcc697d461..ecf0c4a7d1ce2b254d91b3276fa24c149329737a 100644
index fa7107593b20e0151d8d67104e4a92dcc697d461..f9a3d060ff4da6047d11f2b024d144572c513399 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWanderingTrader.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWanderingTrader.java
@@ -55,5 +55,25 @@ public class CraftWanderingTrader extends CraftAbstractVillager implements Wande
@ -1172,7 +1172,7 @@ index fa7107593b20e0151d8d67104e4a92dcc697d461..ecf0c4a7d1ce2b254d91b3276fa24c14
+ return null;
+ }
+
+ return io.papermc.paper.util.MCUtil.toLocation(this.getHandle().getLevel(), pos);
+ return io.papermc.paper.util.MCUtil.toLocation(this.getHandle().level(), pos);
+ }
+
+ @Override

View file

@ -44,7 +44,7 @@ index b9acef460ff7e8bc9e24997771beeba6bea1f28a..d506091a739b04caf213e8fb0f71b5b7
public boolean isClimbing() {
diff --git a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java
index ea6233cb3ca30864e54d553a5d1071ea9147a868..6449213d717271bcc516e393a78dfe1e5c762d68 100644
index ea6233cb3ca30864e54d553a5d1071ea9147a868..9a81cb0c3a5ac40ff50dc7c81f6196a447cd03c6 100644
--- a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java
+++ b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java
@@ -123,6 +123,6 @@ public class WitherSkeleton extends AbstractSkeleton {
@ -52,6 +52,6 @@ index ea6233cb3ca30864e54d553a5d1071ea9147a868..6449213d717271bcc516e393a78dfe1e
@Override
public boolean canBeAffected(MobEffectInstance effect) {
- return effect.getEffect() == MobEffects.WITHER ? false : super.canBeAffected(effect);
+ return effect.getEffect() == MobEffects.WITHER && this.level.paperConfig().entities.mobEffects.immuneToWitherEffect.witherSkeleton ? false : super.canBeAffected(effect); // Paper
+ return effect.getEffect() == MobEffects.WITHER && this.level().paperConfig().entities.mobEffects.immuneToWitherEffect.witherSkeleton ? false : super.canBeAffected(effect); // Paper
}
}

View file

@ -23,7 +23,7 @@ index 6d56c812262f7f109598ef4a941d0226b1eb638a..db9567711f7e0ad1778d41e79b59e319
.flatMap(entry -> entry.getKey().stream().map(s -> Map.entry(s, entry.getValue())))
diff --git a/src/main/java/io/papermc/paper/command/subcommands/MobcapsCommand.java b/src/main/java/io/papermc/paper/command/subcommands/MobcapsCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..99c41a39cdad0271d089c6e03bebfdafba1aaa57
index 0000000000000000000000000000000000000000..d3b39d88a72ca25057fd8574d32f28db0d420818
--- /dev/null
+++ b/src/main/java/io/papermc/paper/command/subcommands/MobcapsCommand.java
@@ -0,0 +1,229 @@
@ -191,7 +191,7 @@ index 0000000000000000000000000000000000000000..99c41a39cdad0271d089c6e03bebfdaf
+ }
+
+ final ServerPlayer serverPlayer = ((CraftPlayer) player).getHandle();
+ final ServerLevel level = serverPlayer.getLevel();
+ final ServerLevel level = serverPlayer.serverLevel();
+
+ if (!level.paperConfig().entities.spawning.perPlayerMobSpawns) {
+ sender.sendMessage(Component.text("Use '/paper mobcaps' for worlds where per-player mob spawning is disabled.", NamedTextColor.RED));

View file

@ -263,7 +263,7 @@ index fcbdf311e981e010adc78342f0865d3f803354f9..40e17a8f182fea7c99b64cd074ce1757
public String getDebugStatus() {
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index 604e1f1113457d7dbd368d40a668aab7c7466d40..8f1949cf33bdc35d6d024dd82faae37fec325d6f 100644
index dfcb9a57d4b6c9bab7305a5ec8a4136a8c66c9d4..6ee93972a362a81d4a12108b14c564d07fc272c8 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -668,6 +668,37 @@ public class ServerChunkCache extends ChunkSource {

View file

@ -93,7 +93,7 @@ index 7d80cfd701d910badf1feaecaa4ce5129584e21d..03b802f9f6e31b1ab23af0ff7b235f64
// Paper - rewrite chunk system
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index 8f1949cf33bdc35d6d024dd82faae37fec325d6f..d9a14c1c42ce9adc53543e7b95a4083b4109cb33 100644
index 6ee93972a362a81d4a12108b14c564d07fc272c8..55c813ed1df716747164dd02e482851fa51f9459 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -48,6 +48,7 @@ import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemp

View file

@ -106,7 +106,7 @@ index b800249823e413933a5d469e431a003f977f59e7..d8fa1cb0b340f97debceb7e5b90051d2
+ // Paper end - execute chunk tasks mid tick
}
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index d9a14c1c42ce9adc53543e7b95a4083b4109cb33..371f7e71610ddfbdb32dcd493f15d6ff9b90326e 100644
index 55c813ed1df716747164dd02e482851fa51f9459..54318b327f464d299c0712f24c1eeba02b2b9263 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -750,6 +750,8 @@ public class ServerChunkCache extends ChunkSource {

View file

@ -203,7 +203,7 @@ index 19fc6ce5a3b87ea4a7e538c3718c130cb38e6ee6..491917c05b894cf7486513ea7aabca79
int j = Mth.floor(y);
int k = Mth.floor(z);
diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java
index e0a71bfc1498a517456b21747ab6ef3f1067a3f3..e9fa7faaa4451e36b3908cbcbbe0baf213abde96 100644
index e0a71bfc1498a517456b21747ab6ef3f1067a3f3..98fba0288be9ed2cb18ffba5cf81148157dd4fcf 100644
--- a/src/main/java/org/spigotmc/WatchdogThread.java
+++ b/src/main/java/org/spigotmc/WatchdogThread.java
@@ -22,6 +22,78 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa
@ -230,7 +230,7 @@ index e0a71bfc1498a517456b21747ab6ef3f1067a3f3..e9fa7faaa4451e36b3908cbcbbe0baf2
+
+ String entityType = net.minecraft.world.entity.EntityType.getKey(entity.getType()).toString();
+ java.util.UUID entityUUID = entity.getUUID();
+ net.minecraft.world.level.Level world = entity.level;
+ net.minecraft.world.level.Level world = entity.level();
+
+ log.log(Level.SEVERE, "Ticking entity: " + entityType + ", entity class: " + entity.getClass().getName());
+ log.log(Level.SEVERE, "Entity status: removed: " + entity.isRemoved() + ", valid: " + entity.valid + ", alive: " + entity.isAlive() + ", is passenger: " + entity.isPassenger());

View file

@ -22,7 +22,7 @@ With this change I could get all 200 on at 0ms ping.
So in general this patch should reduce Netty I/O thread load.
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index 371f7e71610ddfbdb32dcd493f15d6ff9b90326e..42526088af333f818b02c80a3f8aa890ab78f6fb 100644
index 54318b327f464d299c0712f24c1eeba02b2b9263..000d500d8bb4a1852b87a57a7beb7f9bb498d252 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -807,7 +807,24 @@ public class ServerChunkCache extends ChunkSource {

View file

@ -9,7 +9,7 @@ so this resets it after each call to
Zombie#getExperienceReward
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 77688c906a934f1e4844c1fd804bfa83571f7a15..d0bad074c13e7ab738b3f88bfd896385153ec035 100644
index e58c3e2163be271ff2668a55098ea8f48f8636ad..3f8c1d1d3c408fc4f15c4b5680bc22c86f104a9d 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
@@ -174,11 +174,16 @@ public class Zombie extends Monster {

View file

@ -5,19 +5,18 @@ Subject: [PATCH] Multi Block Change API Implementation
diff --git a/src/main/java/net/minecraft/network/protocol/game/ClientboundSectionBlocksUpdatePacket.java b/src/main/java/net/minecraft/network/protocol/game/ClientboundSectionBlocksUpdatePacket.java
index f96d61bdeb556665d6e6e5023f9d77fd82204e89..45bfc2af4942c029537805fce2f14e150d3440b1 100644
index f96d61bdeb556665d6e6e5023f9d77fd82204e89..e3f355c85eb7cc8c1683e3009502c10a5ed32daa 100644
--- a/src/main/java/net/minecraft/network/protocol/game/ClientboundSectionBlocksUpdatePacket.java
+++ b/src/main/java/net/minecraft/network/protocol/game/ClientboundSectionBlocksUpdatePacket.java
@@ -59,6 +59,15 @@ public class ClientboundSectionBlocksUpdatePacket implements Packet<ClientGamePa
@@ -59,6 +59,14 @@ public class ClientboundSectionBlocksUpdatePacket implements Packet<ClientGamePa
}
+ // Paper start
+ public ClientboundSectionBlocksUpdatePacket(SectionPos sectionPos, it.unimi.dsi.fastutil.shorts.Short2ObjectMap<BlockState> blockChanges, boolean suppressLightUpdates) {
+ public ClientboundSectionBlocksUpdatePacket(SectionPos sectionPos, it.unimi.dsi.fastutil.shorts.Short2ObjectMap<BlockState> blockChanges) {
+ this.sectionPos = sectionPos;
+ this.positions = blockChanges.keySet().toShortArray();
+ this.states = blockChanges.values().toArray(new BlockState[0]);
+ this.suppressLightUpdates = suppressLightUpdates;
+ }
+ // Paper end
+
@ -25,7 +24,7 @@ index f96d61bdeb556665d6e6e5023f9d77fd82204e89..45bfc2af4942c029537805fce2f14e15
public void write(FriendlyByteBuf buf) {
buf.writeLong(this.sectionPos.asLong());
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 59683479af9fa4058cab286caed2fa990c4bd293..41784e46737a4a22aee53df4d4bdf170850b7a75 100644
index 59683479af9fa4058cab286caed2fa990c4bd293..6373c2df3acd6dcae321e9914bea7a6beaa51c5d 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -920,6 +920,32 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@ -34,7 +33,7 @@ index 59683479af9fa4058cab286caed2fa990c4bd293..41784e46737a4a22aee53df4d4bdf170
+ // Paper start
+ @Override
+ public void sendMultiBlockChange(final Map<? extends io.papermc.paper.math.Position, BlockData> blockChanges, final boolean suppressLightUpdates) {
+ public void sendMultiBlockChange(final Map<? extends io.papermc.paper.math.Position, BlockData> blockChanges) {
+ if (this.getHandle().connection == null) return;
+
+ Map<SectionPos, it.unimi.dsi.fastutil.shorts.Short2ObjectMap<net.minecraft.world.level.block.state.BlockState>> sectionMap = new HashMap<>();
@ -52,7 +51,7 @@ index 59683479af9fa4058cab286caed2fa990c4bd293..41784e46737a4a22aee53df4d4bdf170
+ SectionPos sectionPos = entry.getKey();
+ it.unimi.dsi.fastutil.shorts.Short2ObjectMap<net.minecraft.world.level.block.state.BlockState> blockData = entry.getValue();
+
+ net.minecraft.network.protocol.game.ClientboundSectionBlocksUpdatePacket packet = new net.minecraft.network.protocol.game.ClientboundSectionBlocksUpdatePacket(sectionPos, blockData, suppressLightUpdates);
+ net.minecraft.network.protocol.game.ClientboundSectionBlocksUpdatePacket packet = new net.minecraft.network.protocol.game.ClientboundSectionBlocksUpdatePacket(sectionPos, blockData);
+ this.getHandle().connection.send(packet);
+ }
+ }

View file

@ -5,7 +5,7 @@ Subject: [PATCH] Dolphin API
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftDolphin.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftDolphin.java
index 938e141f161acf5de5d3361382b514caea02c6fb..c1db88ceb65eb81c542171fc5465224ef613ce3b 100644
index 938e141f161acf5de5d3361382b514caea02c6fb..18623159932df2dd5e43133b4396b43731693780 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftDolphin.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftDolphin.java
@@ -24,4 +24,34 @@ public class CraftDolphin extends CraftWaterMob implements Dolphin {
@ -35,7 +35,7 @@ index 938e141f161acf5de5d3361382b514caea02c6fb..c1db88ceb65eb81c542171fc5465224e
+
+ @Override
+ public org.bukkit.Location getTreasureLocation() {
+ return io.papermc.paper.util.MCUtil.toLocation(this.getHandle().level, this.getHandle().getTreasurePos());
+ return io.papermc.paper.util.MCUtil.toLocation(this.getHandle().level(), this.getHandle().getTreasurePos());
+ }
+
+ @Override

View file

@ -7,14 +7,14 @@ Subject: [PATCH] Configurable sculk sensor listener range
public-f net.minecraft.world.level.gameevent.vibrations.VibrationListener listenerRange
diff --git a/src/main/java/net/minecraft/world/level/block/entity/SculkSensorBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/SculkSensorBlockEntity.java
index a6c226da995eecc323d69a3eff1f8d202410e069..c058187786686190adb8602984580ad7fa6b0069 100644
index a6c226da995eecc323d69a3eff1f8d202410e069..ce42474501b4e168b7877df4d071c5f2eca549ea 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/SculkSensorBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/SculkSensorBlockEntity.java
@@ -48,9 +48,11 @@ public class SculkSensorBlockEntity extends BlockEntity implements GameEventList
this.vibrationData = listener;
});
}
+ if (nbt.contains(PAPER_LISTENER_RANGE_NBT_KEY)) this.listener.listenerRange = nbt.getInt(PAPER_LISTENER_RANGE_NBT_KEY); // Paper
+ if (nbt.contains(PAPER_LISTENER_RANGE_NBT_KEY)) this.getListener().rangeOverride = nbt.getInt(PAPER_LISTENER_RANGE_NBT_KEY); // Paper
}
@ -26,12 +26,32 @@ index a6c226da995eecc323d69a3eff1f8d202410e069..c058187786686190adb8602984580ad7
VibrationSystem.Data.CODEC.encodeStart(NbtOps.INSTANCE, this.vibrationData).resultOrPartial(LOGGER::error).ifPresent((listenerNbt) -> {
nbt.put("listener", listenerNbt);
});
+ if (this.listener.listenerRange != ((SculkSensorBlock) net.minecraft.world.level.block.Blocks.SCULK_SENSOR).getListenerRange()) nbt.putInt(PAPER_LISTENER_RANGE_NBT_KEY, this.listener.listenerRange); // Paper - only save if it's different from the default
+ if (this.getListener().rangeOverride != null || this.getListener().rangeOverride != VibrationUser.LISTENER_RANGE) nbt.putInt(PAPER_LISTENER_RANGE_NBT_KEY, this.getListener().rangeOverride); // Paper - only save if it's different from the default
}
@Override
diff --git a/src/main/java/net/minecraft/world/level/gameevent/vibrations/VibrationSystem.java b/src/main/java/net/minecraft/world/level/gameevent/vibrations/VibrationSystem.java
index 405709bed99bb0ddd3a746f0f7815b59394c1b81..ac8394b9caa4e0b3101897190a26c28ef8acfbd2 100644
--- a/src/main/java/net/minecraft/world/level/gameevent/vibrations/VibrationSystem.java
+++ b/src/main/java/net/minecraft/world/level/gameevent/vibrations/VibrationSystem.java
@@ -261,6 +261,7 @@ public interface VibrationSystem {
public static class Listener implements GameEventListener {
private final VibrationSystem system;
+ @Nullable public Integer rangeOverride = null; // Paper
public Listener(VibrationSystem receiver) {
this.system = receiver;
@@ -273,6 +274,7 @@ public interface VibrationSystem {
@Override
public int getListenerRadius() {
+ if (this.rangeOverride != null) return this.rangeOverride; // Paper
return this.system.getVibrationUser().getListenerRadius();
}
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftSculkSensor.java b/src/main/java/org/bukkit/craftbukkit/block/CraftSculkSensor.java
index de804383467518ef0f063aea948514db568f59db..38ab3ec08c2f95a14ee6de762e29f91b4a4b4500 100644
index de804383467518ef0f063aea948514db568f59db..ba4069544de16d3562b55df4d7973e877d66ee1c 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftSculkSensor.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftSculkSensor.java
@@ -21,4 +21,16 @@ public class CraftSculkSensor<T extends SculkSensorBlockEntity> extends CraftBlo
@ -41,13 +61,13 @@ index de804383467518ef0f063aea948514db568f59db..38ab3ec08c2f95a14ee6de762e29f91b
+ // Paper start
+ @Override
+ public int getListenerRange() {
+ return this.getSnapshot().getListener().listenerRange;
+ return this.getSnapshot().getListener().getListenerRadius();
+ }
+
+ @Override
+ public void setListenerRange(int range) {
+ Preconditions.checkArgument(range > 0, "Vibration listener range must be greater than 0");
+ this.getSnapshot().getListener().listenerRange = range;
+ this.getSnapshot().getListener().rangeOverride = range;
+ }
+ // Paper end
}

View file

@ -5,7 +5,7 @@ Subject: [PATCH] Allow to change the podium for the EnderDragon
diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
index fada988941c33e09bce5e71bcb2bb733185f6c12..35681b380d22cb0ddeef2aec3553b9835c122aca 100644
index fada988941c33e09bce5e71bcb2bb733185f6c12..92666c48620078623a451fbf68f673cb9f81c4b5 100644
--- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
+++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
@@ -101,6 +101,10 @@ public class EnderDragon extends Mob implements Enemy {
@ -26,7 +26,7 @@ index fada988941c33e09bce5e71bcb2bb733185f6c12..35681b380d22cb0ddeef2aec3553b983
+ // Paper start
+ public BlockPos getPodium() {
+ if (this.podium == null) {
+ return EndPodiumFeature.END_PODIUM_LOCATION;
+ return EndPodiumFeature.getLocation(this.getFightOrigin());
+ }
+ return this.podium;
+ }

View file

@ -18,7 +18,7 @@ index 02abc5f387d781094bd2f39233444add3a470be1..ece82743df21f0b776382821ad75dee9
if (bl) {
int j = this.angerByUuid.removeInt(entity.getUUID());
diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java
index 64d3467322e6db1fc223ded9d4d1b26bc628b4e1..0b274c3937daf274c78d8d5854f740bbcadfb385 100644
index 64d3467322e6db1fc223ded9d4d1b26bc628b4e1..97b763431bc5015448ee7a26a340635a932c950b 100644
--- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java
+++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java
@@ -486,6 +486,15 @@ public class Warden extends Monster implements VibrationSystem {
@ -28,7 +28,7 @@ index 64d3467322e6db1fc223ded9d4d1b26bc628b4e1..0b274c3937daf274c78d8d5854f740bb
+ // Paper start
+ int activeAnger = this.angerManagement.getActiveAnger(entity);
+ io.papermc.paper.event.entity.WardenAngerChangeEvent event = new io.papermc.paper.event.entity.WardenAngerChangeEvent((org.bukkit.entity.Warden) this.getBukkitEntity(), entity.getBukkitEntity(), activeAnger, Math.min(150, activeAnger + amount));
+ this.level.getCraftServer().getPluginManager().callEvent(event);
+ this.level().getCraftServer().getPluginManager().callEvent(event);
+ if (event.isCancelled()) {
+ return;
+ }

View file

@ -74,7 +74,7 @@ index 8317d5100d16fb242e4ff9f7b965e1dbd147cede..14b97388b89978b1c0997beeebd7c851
// Let the server handle cross world teleports
if (location.getWorld() != null && !location.getWorld().equals(this.getWorld())) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 41784e46737a4a22aee53df4d4bdf170850b7a75..4b2ff9527d6af588a4947c6eea66eee89f888aaa 100644
index 6373c2df3acd6dcae321e9914bea7a6beaa51c5d..e21efd74f8989f00c65c78b2963238aa822f129e 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1233,13 +1233,100 @@ public class CraftPlayer extends CraftHumanEntity implements Player {

View file

@ -5,7 +5,7 @@ Subject: [PATCH] Custom Chat Completion Suggestions API
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 4b2ff9527d6af588a4947c6eea66eee89f888aaa..62e4356f01e35da79af4b60eef271d250f850310 100644
index e21efd74f8989f00c65c78b2963238aa822f129e..2fa044c3433c8c8a8d23f076e1c2e9f4786282ed 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -642,6 +642,22 @@ public class CraftPlayer extends CraftHumanEntity implements Player {

View file

@ -5,7 +5,7 @@ Subject: [PATCH] Elder Guardian appearance API
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 62e4356f01e35da79af4b60eef271d250f850310..5eea6d85606df02d342f3ff88d2a9f3f8b01303c 100644
index 2fa044c3433c8c8a8d23f076e1c2e9f4786282ed..8ad996a3da13d1c98c892a65d1e02459b422a2eb 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -3108,6 +3108,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {

View file

@ -10,7 +10,7 @@ public net.minecraft.world.entity.monster.warden.WardenSpawnTracker cooldownTick
public net.minecraft.world.entity.monster.warden.WardenSpawnTracker increaseWarningLevel()V
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 5eea6d85606df02d342f3ff88d2a9f3f8b01303c..82ba1b4d0fbfb72bd858eafe942555f46577ca1e 100644
index 8ad996a3da13d1c98c892a65d1e02459b422a2eb..6613c04d1812f89fc91dfe16020577ce8dc34703 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -3113,6 +3113,41 @@ public class CraftPlayer extends CraftHumanEntity implements Player {

View file

@ -66,7 +66,7 @@ index d860ddae508f53d06f74d8ae0efdfc500c1ddf07..3b959f42d958bf0f426853aee56753d6
+ // Paper end
}
diff --git a/src/main/java/net/minecraft/world/level/block/entity/SculkShriekerBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/SculkShriekerBlockEntity.java
index faad948f089575e4988d989790cc1dd13f8a79cd..8a4c51204c591b420b25684d680ac1acb0cf4e12 100644
index faad948f089575e4988d989790cc1dd13f8a79cd..5935cf23ec11ae48b6c7cec9bd696d10d808e729 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/SculkShriekerBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/SculkShriekerBlockEntity.java
@@ -100,6 +100,13 @@ public class SculkShriekerBlockEntity extends BlockEntity implements GameEventLi
@ -75,7 +75,7 @@ index faad948f089575e4988d989790cc1dd13f8a79cd..8a4c51204c591b420b25684d680ac1ac
public static ServerPlayer tryGetPlayer(@Nullable Entity entity) {
+ // Paper start - ensure level is the same for sculk events
+ final ServerPlayer player = tryGetPlayer0(entity);
+ return player != null && player.level == entity.level ? player : null;
+ return player != null && player.level() == entity.level() ? player : null;
+ }
+ @Nullable
+ private static ServerPlayer tryGetPlayer0(@Nullable Entity entity) {

View file

@ -5,18 +5,18 @@ 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 f6e5406f84410ab9c177213157106739a2074cf8..f6ab024266e4fd36566a23db0c9af740dd7fa8fc 100644
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> isInsomniac = (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
- 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> isInsomniac = (player) -> {
+ public static Predicate<Player> IS_INSOMNIAC = (player) -> {
+ net.minecraft.server.level.ServerPlayer serverPlayer = (net.minecraft.server.level.ServerPlayer) player;
+ int playerInsomniaTicks = serverPlayer.getLevel().paperConfig().entities.behavior.playerInsomniaStartTicks;
+ int playerInsomniaTicks = serverPlayer.level().paperConfig().entities.behavior.playerInsomniaStartTicks;
+
+ if (playerInsomniaTicks <= 0) {
+ return false;

View file

@ -14,7 +14,7 @@ See: https://github.com/PaperMC/Paper/pull/1896
public net.minecraft.server.level.ChunkMap$TrackedEntity serverEntity
diff --git a/src/main/java/net/minecraft/network/syncher/SynchedEntityData.java b/src/main/java/net/minecraft/network/syncher/SynchedEntityData.java
index d088479d160dbd2fc90b48a30553be141db8eef2..9e7a9e2fc19a0ac7a80a07efacf9cd2366826fa3 100644
index d088479d160dbd2fc90b48a30553be141db8eef2..bf6a70a69bb695ec1a202cd1e863c468329f80fc 100644
--- a/src/main/java/net/minecraft/network/syncher/SynchedEntityData.java
+++ b/src/main/java/net/minecraft/network/syncher/SynchedEntityData.java
@@ -253,14 +253,46 @@ public class SynchedEntityData {
@ -58,7 +58,7 @@ index d088479d160dbd2fc90b48a30553be141db8eef2..9e7a9e2fc19a0ac7a80a07efacf9cd23
+
+ net.minecraft.server.level.ServerEntity serverEntity = this.entity.tracker.serverEntity;
+ if (player.getBukkitEntity().canSee(entity.getBukkitEntity())) {
+ serverEntity.sendPairingData(player.connection::send, player);
+ serverEntity.sendPairingData(player, player.connection::send);
+ }
+ }
+ // Paper end

View file

@ -6,7 +6,7 @@ Subject: [PATCH] fix Instruments
properly handle Player#playNote
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 82ba1b4d0fbfb72bd858eafe942555f46577ca1e..b4f19650ae6486991bb83147b9fb589474aadb2d 100644
index 6613c04d1812f89fc91dfe16020577ce8dc34703..6f0ad2bc2abacf7dd6309eca24694dc2e6f06819 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -744,62 +744,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player {

View file

@ -26,7 +26,7 @@ index 53487f0a4fe672298c3b83d24a2a603641afcde8..58152160d609d0e9d105153aeb166a56
} else {
if (fallDistance >= 2.0F) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index b4f19650ae6486991bb83147b9fb589474aadb2d..9d9881b0adc33fa72a61b019f328c254c13dc1b2 100644
index 6f0ad2bc2abacf7dd6309eca24694dc2e6f06819..c90c92139277ee95edd5f8ed19d1bb5edc58be9f 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -2303,6 +2303,19 @@ public class CraftPlayer extends CraftHumanEntity implements Player {

View file

@ -7,7 +7,7 @@ Subject: [PATCH] Win Screen API
public net.minecraft.server.level.ServerPlayer seenCredits
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 9d9881b0adc33fa72a61b019f328c254c13dc1b2..6e9c25337bf9b4bb80558174bdc24181dcbd695c 100644
index c90c92139277ee95edd5f8ed19d1bb5edc58be9f..2eba253e58018ea7ee137cb8e902ed237360019d 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1203,6 +1203,25 @@ public class CraftPlayer extends CraftHumanEntity implements Player {

View file

@ -5,7 +5,7 @@ Subject: [PATCH] Fix text display error on spawn
diff --git a/src/main/java/net/minecraft/world/entity/Display.java b/src/main/java/net/minecraft/world/entity/Display.java
index cafecbdaa00984c6e0db83f39d4d4908756dd2c3..c9fb211412f936cde32b66b92dddfa04dd6de77f 100644
index a291b809e39483ab350a1c861d160cb514281695..b7e77397c3c20d8112e17c8aed24e2186c1a72bc 100644
--- a/src/main/java/net/minecraft/world/entity/Display.java
+++ b/src/main/java/net/minecraft/world/entity/Display.java
@@ -800,7 +800,7 @@ public abstract class Display extends Entity {

View file

@ -33,7 +33,7 @@ index 000c13afc6bb3acb68b9adcaeefb7bb1cb703702..673327af0f77aeac0d704b0fb6bebebc
return k > 0 ? this.repairPlayerItems(player, k) : 0;
} else {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 6e9c25337bf9b4bb80558174bdc24181dcbd695c..8fe9e6c540ae40b29c4e45b5efd6ff94478ba2dd 100644
index 2eba253e58018ea7ee137cb8e902ed237360019d..be933acd3004e7e092be3688d0d9ee97b159ab5a 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1673,11 +1673,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {