mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-28 03:48:01 +01:00
64828f3a60
Using an unbound LinkedBlockingQueue means you *have* to set core and max core thread pool size the same, as they will never go above the minimum pool size by just passing them through. So this fixes the async command executor pool to actually use 2 threads, and also cleans up other usage to be explicitly "fixed" thread pool sizes, and splits off one more in Minecraft's Util class
63 lines
3.8 KiB
Diff
63 lines
3.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jason Penilla <11360596+jpenilla@users.noreply.github.com>
|
|
Date: Sun, 27 Oct 2024 12:36:53 -0700
|
|
Subject: [PATCH] Allow using old ender pearl behavior
|
|
|
|
When enabled, ender pearls will not load chunks and will save to the world instead of the player.
|
|
|
|
== AT ==
|
|
public net.minecraft.world.entity.projectile.Projectile cachedOwner
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
index a755a2742f18ed55adc1fc735d995c9874b1e62e..5a8f396d47577f087abb415c972fd4f51e50faba 100644
|
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
@@ -836,6 +836,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
|
|
|
|
while (iterator.hasNext()) {
|
|
ThrownEnderpearl entityenderpearl = (ThrownEnderpearl) iterator.next();
|
|
+ if (entityenderpearl.level().paperConfig().misc.legacyEnderPearlBehavior) continue; // Paper - Allow using old ender pearl behavior
|
|
|
|
if (entityenderpearl.isRemoved()) {
|
|
ServerPlayer.LOGGER.warn("Trying to save removed ender pearl, skipping");
|
|
@@ -3143,7 +3144,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
|
|
}
|
|
|
|
public static long placeEnderPearlTicket(ServerLevel world, ChunkPos chunkPos) {
|
|
- world.getChunkSource().addRegionTicket(TicketType.ENDER_PEARL, chunkPos, 2, chunkPos);
|
|
+ if (!world.paperConfig().misc.legacyEnderPearlBehavior) world.getChunkSource().addRegionTicket(TicketType.ENDER_PEARL, chunkPos, 2, chunkPos); // Paper - Allow using old ender pearl behavior
|
|
return TicketType.ENDER_PEARL.timeout();
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
index a03ff473a683611670ee274b0eec5a395ee6981a..30de3d1a7792c38ae946f19cb0e14637919b5001 100644
|
|
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
@@ -602,7 +602,13 @@ public abstract class PlayerList {
|
|
while (iterator.hasNext()) {
|
|
ThrownEnderpearl entityenderpearl = (ThrownEnderpearl) iterator.next();
|
|
|
|
+ // Paper start - Allow using old ender pearl behavior
|
|
+ if (!entityenderpearl.level().paperConfig().misc.legacyEnderPearlBehavior) {
|
|
entityenderpearl.setRemoved(Entity.RemovalReason.UNLOADED_WITH_PLAYER, EntityRemoveEvent.Cause.PLAYER_QUIT); // CraftBukkit - add Bukkit remove cause
|
|
+ } else {
|
|
+ entityenderpearl.cachedOwner = null;
|
|
+ }
|
|
+ // Paper end - Allow using old ender pearl behavior
|
|
}
|
|
|
|
worldserver.removePlayerImmediately(entityplayer, Entity.RemovalReason.UNLOADED_WITH_PLAYER);
|
|
diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
|
|
index 5f790dd24f2bdae827c6dc597064b9b265089751..bd2684528157f928460f2143dd71a48e11983123 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
|
|
@@ -252,7 +252,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile {
|
|
Entity entity = super.teleport(teleportTarget);
|
|
|
|
if (entity != null) {
|
|
- entity.placePortalTicket(BlockPos.containing(entity.position()));
|
|
+ if (!this.level().paperConfig().misc.legacyEnderPearlBehavior) entity.placePortalTicket(BlockPos.containing(entity.position())); // Paper - Allow using old ender pearl behavior
|
|
}
|
|
|
|
return entity;
|