Updated Upstream(Folia)

This commit is contained in:
MrHua269
2024-02-06 04:51:04 +00:00
parent 00fb6f9ab7
commit ca9decc263
48 changed files with 318 additions and 827 deletions

View File

@@ -1,6 +1,6 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: M2ke4U <79621885+MrHua269@users.noreply.github.com>
Date: Sun, 26 Nov 2023 08:20:54 +0800
From: MrHua269 <novau233@163.com>
Date: Tue, 6 Feb 2024 01:35:36 +0000
Subject: [PATCH] Rebrand to Luminol
@@ -51,20 +51,20 @@ index e2f704c115fd6e00960bb56bb0779f1100c89c17..72b9343979de5aa8bb399cbe7cb8a795
return history != null ? TextComponent.ofChildren(updateMessage, Component.newline(), history) : updateMessage;
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 4383528df7627c5eb7cba1218f1b4e524e4fe956..b2e33a1a29c67f6f9768f547adeb34632548c7d0 100644
index b73699a08a368e6305759438c00066b0d5e7b39a..22aff010859dded150b6e3dd0644fe3c38dbaea9 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1951,7 +1951,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1954,7 +1954,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@DontObfuscate
public String getServerModName() {
- return "Folia"; // Folia - Folia > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla!
+ return "Luminol"; //Luminol - Luminol > // Folia - Folia > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla!
- return "Folia"; // Paper // Folia - Folia
+ return "Luminol"; // Paper // Folia - Folia //Luminol - Luminol
}
public SystemReport fillSystemReport(SystemReport details) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index f97f764c70243a57e78b62af9971677d5e49c66d..1d8681ee2c71c06a596a6eff650753a358de22c1 100644
index 3f266934e70a5f29d55d390841e536999cec8582..57243238d9363cc68c1022871d62b41c424b8a75 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -264,7 +264,7 @@ import javax.annotation.Nullable; // Paper

View File

@@ -122,7 +122,7 @@ index 0000000000000000000000000000000000000000..1f9ff0fc33fa36c90fc4cbbd21b7b790
+ }
+}
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index 98ea5cecac2ab647acfb4d8bbea8ada9872cc4cd..e5eeb361fc29c831a76f87c60896b5dd23f58736 100644
index 0f8c868fce0a054a0ba356350baf4c3824c2c958..5a71ee8d50818c5d6e7a6a2fee05a5c16108b50a 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -19,6 +19,8 @@ import java.util.Locale;
@@ -143,7 +143,7 @@ index 98ea5cecac2ab647acfb4d8bbea8ada9872cc4cd..e5eeb361fc29c831a76f87c60896b5dd
this.paperConfigurations.initializeGlobalConfiguration(this.registryAccess());
this.paperConfigurations.initializeWorldDefaultsConfiguration(this.registryAccess());
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 653728709b275fee822e55a511e67ec11fdc48f7..daf8c44ec34fad2330d23e9f32c26ed67597bf0c 100644
index a16fc5ba55dbde0cf7f968884da40d70a754a0d8..0a2d50b72506115644af5682d72f8ee04e45796b 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -38,6 +38,8 @@ import java.util.stream.Collectors;
@@ -155,7 +155,7 @@ index 653728709b275fee822e55a511e67ec11fdc48f7..daf8c44ec34fad2330d23e9f32c26ed6
import net.minecraft.CrashReport;
import net.minecraft.CrashReportCategory;
import net.minecraft.Util;
@@ -772,6 +774,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -767,6 +769,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
// Folia end - region threading
@@ -164,7 +164,7 @@ index 653728709b275fee822e55a511e67ec11fdc48f7..daf8c44ec34fad2330d23e9f32c26ed6
// Add env and gen to constructor, IWorldDataServer -> WorldDataServer
public ServerLevel(MinecraftServer minecraftserver, Executor executor, LevelStorageSource.LevelStorageAccess convertable_conversionsession, PrimaryLevelData iworlddataserver, ResourceKey<Level> resourcekey, LevelStem worlddimension, ChunkProgressListener worldloadlistener, boolean flag, long i, List<CustomSpawner> list, boolean flag1, @Nullable RandomSequences randomsequences, org.bukkit.World.Environment env, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider) {
// IRegistryCustom.Dimension iregistrycustom_dimension = minecraftserver.registryAccess(); // CraftBukkit - decompile error
@@ -856,6 +860,12 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -851,6 +855,12 @@ public class ServerLevel extends Level implements WorldGenLevel {
this.chunkTaskScheduler = new io.papermc.paper.chunk.system.scheduling.ChunkTaskScheduler(this, io.papermc.paper.chunk.system.scheduling.ChunkTaskScheduler.workerThreads); // Paper - rewrite chunk system
this.entityLookup = new io.papermc.paper.chunk.system.entity.EntityLookup(this, new EntityCallbacks()); // Paper - rewrite chunk system
this.updateTickData(); // Folia - region threading - make sure it is initialised before ticked

View File

@@ -1,11 +1,11 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Sat, 27 Jan 2024 07:37:51 +0000
Date: Tue, 6 Feb 2024 01:44:36 +0000
Subject: [PATCH] Add config for server brand name
diff --git a/src/main/java/com/destroystokyo/paper/network/PaperServerListPingEventImpl.java b/src/main/java/com/destroystokyo/paper/network/PaperServerListPingEventImpl.java
index 5d7110a33957a597592cacb864c947eb053e8563..25cda48a6ab9a703d64c391007f5c32c368fdbe2 100644
index 6ed2114f577ce12d2d493985e798609c7d83f15e..8200391c3177284d2e18b8fc1d532a9a9e4c4ad1 100644
--- a/src/main/java/com/destroystokyo/paper/network/PaperServerListPingEventImpl.java
+++ b/src/main/java/com/destroystokyo/paper/network/PaperServerListPingEventImpl.java
@@ -1,6 +1,7 @@
@@ -19,14 +19,14 @@ index 5d7110a33957a597592cacb864c947eb053e8563..25cda48a6ab9a703d64c391007f5c32c
@@ -14,7 +15,7 @@ class PaperServerListPingEventImpl extends PaperServerListPingEvent {
PaperServerListPingEventImpl(MinecraftServer server, StatusClient client, int protocolVersion, @Nullable CachedServerIcon icon) {
super(client, server.server.motd(), server.getPlayerCount(), server.getMaxPlayers(),
super(client, server.motd(), server.getPlayerCount(), server.getMaxPlayers(),
- server.getServerModName() + ' ' + server.getServerVersion(), protocolVersion, icon);
+ LuminolConfig.fakeVanillaModeEnabled ? server.getServerVersion() : server.getServerModName() + ' ' + server.getServerVersion(), protocolVersion, icon);//Luminol - Fake vanilla mode
this.server = server;
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index b2e33a1a29c67f6f9768f547adeb34632548c7d0..26b85e3caf2671159b36963296777ecdf70a0231 100644
index 22aff010859dded150b6e3dd0644fe3c38dbaea9..bf1df7da39dc42bda2e4b54ae3f6856399f5cb10 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -54,6 +54,8 @@ import java.util.stream.Collectors;
@@ -38,12 +38,12 @@ index b2e33a1a29c67f6f9768f547adeb34632548c7d0..26b85e3caf2671159b36963296777ecd
import net.minecraft.CrashReport;
import net.minecraft.ReportedException;
import net.minecraft.SharedConstants;
@@ -1951,7 +1953,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1954,7 +1956,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@DontObfuscate
public String getServerModName() {
- return "Luminol"; //Luminol - Luminol > // Folia - Folia > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla!
+ return LuminolConfig.fakeVanillaModeEnabled ? "vanilla" : LuminolConfig.serverModName; //Luminol //Luminol - Luminol > // Folia - Folia > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla!
- return "Luminol"; // Paper // Folia - Folia //Luminol - Luminol
+ return LuminolConfig.fakeVanillaModeEnabled ? "vanilla" : LuminolConfig.serverModName; // Paper // Folia - Folia //Luminol - Luminol //Luminol - Add config for this
}
public SystemReport fillSystemReport(SystemReport details) {

View File

@@ -27,7 +27,7 @@ index 1f9ff0fc33fa36c90fc4cbbd21b7b790de581632..36ca0b94d29d81e5f1f2aff4a38ead0b
public static <T> T get(String key,T def){
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index cc4eb106b3ff1953de11f1faa7c04f3f9982fca2..1cc5acb21363aae7020a0ebf23c00caeab5074b7 100644
index eade31ea668c171dceafee958e265041a439c54b..4cc0a97c0c3cef23b10930e204039c4450543907 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -24,6 +24,8 @@ import java.util.function.BiConsumer;
@@ -39,7 +39,7 @@ index cc4eb106b3ff1953de11f1faa7c04f3f9982fca2..1cc5acb21363aae7020a0ebf23c00cae
import net.minecraft.BlockUtil;
import net.minecraft.CrashReport;
import net.minecraft.CrashReportCategory;
@@ -4055,6 +4057,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
@@ -4043,6 +4045,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
protected boolean tryEndPortal() {
io.papermc.paper.util.TickThread.ensureTickThread(this, "Cannot portal entity async");

View File

@@ -1,6 +1,6 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: M2ke4U <79621885+MrHua269@users.noreply.github.com>
Date: Sun, 24 Dec 2023 08:18:35 +0800
From: MrHua269 <novau233@163.com>
Date: Tue, 6 Feb 2024 01:53:06 +0000
Subject: [PATCH] Add config for sand duping
@@ -25,7 +25,7 @@ index 36ca0b94d29d81e5f1f2aff4a38ead0b363dd1c7..9db3bdd7a7d0b2a110e927ee4781eee4
public static <T> T get(String key,T def){
diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
index acf2bfe7421774c1a8d8ac1a23b34880df6cab6a..2af822f94306ae3d839e3acbb5a5fedd1bfcecbb 100644
index 25b7b85cbd1130c5320e55b3c6b6f81ec228da81..018e4acb2ad6795e6c5059a47023e1b5c8713705 100644
--- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
@@ -4,6 +4,8 @@ import com.mojang.logging.LogUtils;
@@ -46,9 +46,9 @@ index acf2bfe7421774c1a8d8ac1a23b34880df6cab6a..2af822f94306ae3d839e3acbb5a5fedd
return;
}
// Paper end - fix sand duping
@@ -150,7 +152,7 @@ public class FallingBlockEntity extends Entity {
this.move(MoverType.SELF, this.getDeltaMovement());
@@ -149,7 +151,7 @@ public class FallingBlockEntity extends Entity {
this.move(MoverType.SELF, this.getDeltaMovement());
// Paper start - fix sand duping
- if (this.isRemoved()) {
+ if (!LuminolConfig.enableSandDuping && this.isRemoved()) { //Luminol - Add config for sand duping

View File

@@ -1,6 +1,6 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Sat, 27 Jan 2024 07:45:55 +0000
Date: Tue, 6 Feb 2024 01:55:03 +0000
Subject: [PATCH] Add config for void trading
@@ -25,10 +25,10 @@ index 9db3bdd7a7d0b2a110e927ee4781eee489d0da9b..dffa9db569fcef2feec75072fe86c9a6
public static <T> T get(String key,T def){
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index daf8c44ec34fad2330d23e9f32c26ed67597bf0c..fd158c56cb73c2107a073f1cd68a87658c8eb1d9 100644
index 0a2d50b72506115644af5682d72f8ee04e45796b..00593eadeadc74429a05d83e10964781b6311c54 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -3077,7 +3077,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -3056,7 +3056,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
// Spigot Start
if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message
// Paper start - Fix merchant inventory not closing on entity removal

View File

@@ -1,6 +1,6 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Sat, 27 Jan 2024 07:49:42 +0000
Date: Tue, 6 Feb 2024 01:56:30 +0000
Subject: [PATCH] Add config for incorrect tripwire updating fixing
@@ -25,7 +25,7 @@ index dffa9db569fcef2feec75072fe86c9a6ded80aa4..a49da370c91211d4e2274f72d62c911a
public static <T> T get(String key,T def){
diff --git a/src/main/java/net/minecraft/world/level/block/TripWireHookBlock.java b/src/main/java/net/minecraft/world/level/block/TripWireHookBlock.java
index 0f6ea0adb4b99d934e1a3fcb92562dffb2a45f63..023731d23c0610e1a42bf308866509aef464e299 100644
index 7f2dcf6a9e69779e6f898284b58fb1e32902000c..c9177a8c94cb47ac8082404bbe86cbc121a9e064 100644
--- a/src/main/java/net/minecraft/world/level/block/TripWireHookBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/TripWireHookBlock.java
@@ -4,6 +4,8 @@ import com.google.common.base.MoreObjects;

View File

@@ -1,6 +1,6 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Sat, 27 Jan 2024 07:55:57 +0000
Date: Tue, 6 Feb 2024 02:06:42 +0000
Subject: [PATCH] Add config for vanilla random
@@ -25,15 +25,15 @@ index 8d1ce8eae252fcf05b6a62d2dc467d6d503d3df4..89d8ffc947d265e0e81943ad851e868b
public static <T> T get(String key,T def){
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 1cc5acb21363aae7020a0ebf23c00caeab5074b7..5e78570110dd57cac16e073e3051f76460e19540 100644
index 4cc0a97c0c3cef23b10930e204039c4450543907..18c9a35624d6d3c94efd5df8e97c4257fd199d0d 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -575,7 +575,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
@@ -565,7 +565,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
this.bb = Entity.INITIAL_AABB;
this.stuckSpeedMultiplier = Vec3.ZERO;
this.nextStep = 1.0F;
- this.random = SHARED_RANDOM; // Paper
+ this.random = LuminolConfig.useVanillaRandomSource ? RandomSource.create() : SHARED_RANDOM;//Luminol - Add config for vanilla random SHARED_RANDOM; // Paper
- this.random = SHARED_RANDOM; // Paper - Share random for entities to make them more random
+ this.random = LuminolConfig.useVanillaRandomSource ? RandomSource.create() : SHARED_RANDOM;//Luminol - Add config for vanilla random SHARED_RANDOM // Paper - Share random for entities to make them more random
this.remainingFireTicks = -this.getFireImmuneTicks();
this.fluidHeight = new Object2DoubleArrayMap(2);
this.fluidOnEyes = new HashSet();

View File

@@ -1,6 +1,6 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: M2ke4U <79621885+MrHua269@users.noreply.github.com>
Date: Sun, 24 Dec 2023 09:09:49 +0800
From: MrHua269 <novau233@163.com>
Date: Tue, 6 Feb 2024 02:16:52 +0000
Subject: [PATCH] Add logger field to LuminolConfig

View File

@@ -1,6 +1,6 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Sat, 27 Jan 2024 07:59:46 +0000
Date: Tue, 6 Feb 2024 02:17:20 +0000
Subject: [PATCH] Kaiiju region format settings
@@ -75,10 +75,10 @@ index 74573c50c903cfbe5f9617be5b75c21647f05a91..3d526d7cfb313e419de89be1b2756519
public static <T> T get(String key,T def){
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 26b85e3caf2671159b36963296777ecdf70a0231..f53c689db8f330708d1ad683951b113bca11a139 100644
index bf1df7da39dc42bda2e4b54ae3f6856399f5cb10..76522b9fd7c0aaa17ab6df2183dfb30da2a35a68 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -927,7 +927,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -925,7 +925,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Paper start - rewrite chunk system
worldserver.save((ProgressListener) null, flush, worldserver.noSave && !force, close);
if (flush) {
@@ -87,7 +87,7 @@ index 26b85e3caf2671159b36963296777ecdf70a0231..f53c689db8f330708d1ad683951b113b
}
// Paper end - rewrite chunk system
}
@@ -951,7 +951,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -949,7 +949,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
//MinecraftServer.LOGGER.info("ThreadedAnvilChunkStorage ({}): All chunks are saved", worldserver2.getChunkSource().chunkMap.getStorageName()); // Paper - move up
}

View File

@@ -1,6 +1,6 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Sat, 27 Jan 2024 08:05:11 +0000
Date: Tue, 6 Feb 2024 02:43:58 +0000
Subject: [PATCH] Kaiiju Add linear region format
@@ -19,21 +19,6 @@ index 83660616a26d989ce441e17acab103ab166304d8..1bdeb0e9d0c04509d7ed4003f6b79c80
implementation("com.electronwill.night-config:toml:3.6.0") //Luminol - Night config
// Paper start
implementation("org.jline:jline-terminal-jansi:3.21.0")
diff --git a/src/main/java/com/destroystokyo/paper/io/PaperFileIOThread.java b/src/main/java/com/destroystokyo/paper/io/PaperFileIOThread.java
index f2c27e0ac65be4b75c1d86ef6fd45fdb538d96ac..00724993d0448454d14a47652b039b88052b8a4f 100644
--- a/src/main/java/com/destroystokyo/paper/io/PaperFileIOThread.java
+++ b/src/main/java/com/destroystokyo/paper/io/PaperFileIOThread.java
@@ -314,8 +314,8 @@ public final class PaperFileIOThread extends QueueExecutorThread {
public abstract void writeData(final int x, final int z, final CompoundTag compound) throws IOException;
public abstract CompoundTag readData(final int x, final int z) throws IOException;
- public abstract <T> T computeForRegionFile(final int chunkX, final int chunkZ, final Function<RegionFile, T> function);
- public abstract <T> T computeForRegionFileIfLoaded(final int chunkX, final int chunkZ, final Function<RegionFile, T> function);
+ public abstract <T> T computeForRegionFile(final int chunkX, final int chunkZ, final Function<dev.kaiijumc.kaiiju.region.AbstractRegionFile, T> function); // Kaiiju
+ public abstract <T> T computeForRegionFileIfLoaded(final int chunkX, final int chunkZ, final Function<dev.kaiijumc.kaiiju.region.AbstractRegionFile, T> function); // Kaiiju
public static final class InProgressWrite {
public long writeCounter;
diff --git a/src/main/java/dev/kaiijumc/kaiiju/region/AbstractRegionFile.java b/src/main/java/dev/kaiijumc/kaiiju/region/AbstractRegionFile.java
new file mode 100644
index 0000000000000000000000000000000000000000..249303116d3cfadd078ebf0ae6e44bf99eed6a47
@@ -480,10 +465,10 @@ index 0000000000000000000000000000000000000000..e800c6103396530efe5acd0b4081a3cd
+ }
+}
diff --git a/src/main/java/io/papermc/paper/chunk/system/io/RegionFileIOThread.java b/src/main/java/io/papermc/paper/chunk/system/io/RegionFileIOThread.java
index 8a11e10b01fa012b2f98b1c193c53251e848f909..61001e76b38f8647b33e73b5cc15b4b6785cf49a 100644
index 2934f0cf0ef09c84739312b00186c2ef0019a165..b46acbc078f3d3bfb0f3ede3f1cc172f4b48c5df 100644
--- a/src/main/java/io/papermc/paper/chunk/system/io/RegionFileIOThread.java
+++ b/src/main/java/io/papermc/paper/chunk/system/io/RegionFileIOThread.java
@@ -811,7 +811,7 @@ public final class RegionFileIOThread extends PrioritisedQueueExecutorThread {
@@ -816,7 +816,7 @@ public final class RegionFileIOThread extends PrioritisedQueueExecutorThread {
final ChunkDataController taskController) {
final ChunkPos chunkPos = new ChunkPos(chunkX, chunkZ);
if (intendingToBlock) {
@@ -492,7 +477,7 @@ index 8a11e10b01fa012b2f98b1c193c53251e848f909..61001e76b38f8647b33e73b5cc15b4b6
if (file == null) { // null if no regionfile exists
return Boolean.FALSE;
}
@@ -824,7 +824,7 @@ public final class RegionFileIOThread extends PrioritisedQueueExecutorThread {
@@ -829,7 +829,7 @@ public final class RegionFileIOThread extends PrioritisedQueueExecutorThread {
return Boolean.FALSE;
} // else: it either exists or is not known, fall back to checking the loaded region file
@@ -501,7 +486,7 @@ index 8a11e10b01fa012b2f98b1c193c53251e848f909..61001e76b38f8647b33e73b5cc15b4b6
if (file == null) { // null if not loaded
// not sure at this point, let the I/O thread figure it out
return Boolean.TRUE;
@@ -1126,9 +1126,9 @@ public final class RegionFileIOThread extends PrioritisedQueueExecutorThread {
@@ -1131,9 +1131,9 @@ public final class RegionFileIOThread extends PrioritisedQueueExecutorThread {
return this.getCache().doesRegionFileNotExistNoIO(new ChunkPos(chunkX, chunkZ));
}
@@ -513,7 +498,7 @@ index 8a11e10b01fa012b2f98b1c193c53251e848f909..61001e76b38f8647b33e73b5cc15b4b6
synchronized (cache) {
try {
regionFile = cache.getRegionFile(new ChunkPos(chunkX, chunkZ), existingOnly, true);
@@ -1141,19 +1141,19 @@ public final class RegionFileIOThread extends PrioritisedQueueExecutorThread {
@@ -1146,19 +1146,19 @@ public final class RegionFileIOThread extends PrioritisedQueueExecutorThread {
return function.apply(regionFile);
} finally {
if (regionFile != null) {
@@ -537,7 +522,7 @@ index 8a11e10b01fa012b2f98b1c193c53251e848f909..61001e76b38f8647b33e73b5cc15b4b6
}
}
@@ -1161,7 +1161,7 @@ public final class RegionFileIOThread extends PrioritisedQueueExecutorThread {
@@ -1166,7 +1166,7 @@ public final class RegionFileIOThread extends PrioritisedQueueExecutorThread {
return function.apply(regionFile);
} finally {
if (regionFile != null) {
@@ -547,7 +532,7 @@ index 8a11e10b01fa012b2f98b1c193c53251e848f909..61001e76b38f8647b33e73b5cc15b4b6
}
}
diff --git a/src/main/java/io/papermc/paper/world/ThreadedWorldUpgrader.java b/src/main/java/io/papermc/paper/world/ThreadedWorldUpgrader.java
index 513833c2ea23df5b079d157bc5cb89d5c9754c0b..bd377033987bf7ded03016d1d8f05fd039bffbb5 100644
index 9017907c0ec67a37a506f09b7e4499cef7885279..f4ed74401ae574ca3e7867df1e47d0e1af867f10 100644
--- a/src/main/java/io/papermc/paper/world/ThreadedWorldUpgrader.java
+++ b/src/main/java/io/papermc/paper/world/ThreadedWorldUpgrader.java
@@ -84,8 +84,13 @@ public class ThreadedWorldUpgrader {
@@ -592,7 +577,7 @@ index 3d526d7cfb313e419de89be1b275651982be42c7..90a6cfd011aaefe66fda79f887380ab2
public static <T> T get(String key,T def){
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
index 4c160f62336acdbcd835ebbf7f683205a776ce79..d01443026d0d85e017464cdd46d08f37386d46ef 100644
index 21ec49acb3c1241d9286959c42a7f8363f637e4f..5fc083b58f6f120d234513c7c36999f034e1d869 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -211,7 +211,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -613,9 +598,9 @@ index 4c160f62336acdbcd835ebbf7f683205a776ce79..d01443026d0d85e017464cdd46d08f37
this.setServerViewDistance(viewDistance);
// Paper start
this.dataRegionManager = new io.papermc.paper.chunk.SingleThreadChunkRegionManager(this.level, 2, (1.0 / 3.0), 1, 6, "Data", DataRegionData::new, DataRegionSectionData::new);
@@ -822,13 +822,13 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -808,13 +808,13 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
}
// Paper start - chunk status cache "api"
public ChunkStatus getChunkStatusOnDiskIfCached(ChunkPos chunkPos) {
- net.minecraft.world.level.chunk.storage.RegionFile regionFile = regionFileCache.getRegionFileIfLoaded(chunkPos);
+ dev.kaiijumc.kaiiju.region.AbstractRegionFile regionFile = regionFileCache.getRegionFileIfLoaded(chunkPos); // Kaiiju
@@ -629,7 +614,7 @@ index 4c160f62336acdbcd835ebbf7f683205a776ce79..d01443026d0d85e017464cdd46d08f37
if (regionFile == null || !regionFileCache.chunkExists(chunkPos)) {
return null;
@@ -846,7 +846,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -832,7 +832,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
}
public void updateChunkStatusOnDisk(ChunkPos chunkPos, @Nullable CompoundTag compound) throws IOException {
@@ -639,10 +624,10 @@ index 4c160f62336acdbcd835ebbf7f683205a776ce79..d01443026d0d85e017464cdd46d08f37
regionFile.setStatus(chunkPos.x, chunkPos.z, ChunkSerializer.getStatus(compound));
}
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index fd158c56cb73c2107a073f1cd68a87658c8eb1d9..ec95159ba13e75ee8fc495307f19b587d3b80cf1 100644
index 00593eadeadc74429a05d83e10964781b6311c54..b3dde336a8fb38b6ab30019c6d66ef1a47b25d9d 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -454,8 +454,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -449,8 +449,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
private static final class EntityRegionFileStorage extends net.minecraft.world.level.chunk.storage.RegionFileStorage {
@@ -653,7 +638,7 @@ index fd158c56cb73c2107a073f1cd68a87658c8eb1d9..ec95159ba13e75ee8fc495307f19b587
}
protected void write(ChunkPos pos, net.minecraft.nbt.CompoundTag nbt) throws IOException {
@@ -818,7 +818,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -813,7 +813,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
// CraftBukkit end
boolean flag2 = minecraftserver.forceSynchronousWrites();
DataFixer datafixer = minecraftserver.getFixerUpper();
@@ -663,7 +648,7 @@ index fd158c56cb73c2107a073f1cd68a87658c8eb1d9..ec95159ba13e75ee8fc495307f19b587
// this.entityManager = new PersistentEntitySectionManager<>(Entity.class, new ServerLevel.EntityCallbacks(), entitypersistentstorage, this.entitySliceManager); // Paper // Paper - rewrite chunk system
StructureTemplateManager structuretemplatemanager = minecraftserver.getStructureManager();
diff --git a/src/main/java/net/minecraft/util/worldupdate/WorldUpgrader.java b/src/main/java/net/minecraft/util/worldupdate/WorldUpgrader.java
index f2a7cb6ebed7a4b4019a09af2a025f624f6fe9c9..8b8540ff42f3fb224920969ea00d25161986169c 100644
index 77dd632a266f4abed30b87b7909d77857c01e316..b79f324dcf4256dc9a5824a0a8e27a9e790eb781 100644
--- a/src/main/java/net/minecraft/util/worldupdate/WorldUpgrader.java
+++ b/src/main/java/net/minecraft/util/worldupdate/WorldUpgrader.java
@@ -61,7 +61,7 @@ public class WorldUpgrader {
@@ -689,7 +674,7 @@ index f2a7cb6ebed7a4b4019a09af2a025f624f6fe9c9..8b8540ff42f3fb224920969ea00d2516
}
ImmutableMap<ResourceKey<Level>, ChunkStorage> immutablemap1 = builder1.build();
@@ -235,7 +240,7 @@ public class WorldUpgrader {
@@ -241,7 +246,7 @@ public class WorldUpgrader {
File file = this.levelStorage.getDimensionPath(world).toFile();
File file1 = new File(file, "region");
File[] afile = file1.listFiles((file2, s) -> {
@@ -698,7 +683,7 @@ index f2a7cb6ebed7a4b4019a09af2a025f624f6fe9c9..8b8540ff42f3fb224920969ea00d2516
});
if (afile == null) {
@@ -254,7 +259,11 @@ public class WorldUpgrader {
@@ -260,7 +265,11 @@ public class WorldUpgrader {
int l = Integer.parseInt(matcher.group(2)) << 5;
try {
@@ -727,26 +712,23 @@ index 5150d447c9dc2f539446749c8bee102050bab4ed..187ff795192c7eb56dffafa1ff6fa306
}
diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/ChunkStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/ChunkStorage.java
index 4a84ada69c6abc8f2743579d4451e639836274b4..ba2433b636f137c4b282df9fa3718cfff7c94919 100644
index d16d7c2fed89fb1347df7ddd95856e7f08c22e8a..e4200692f6a33a12d00120f7a661de3e57a671dd 100644
--- a/src/main/java/net/minecraft/world/level/chunk/storage/ChunkStorage.java
+++ b/src/main/java/net/minecraft/world/level/chunk/storage/ChunkStorage.java
@@ -37,11 +37,12 @@ public class ChunkStorage implements AutoCloseable {
public final RegionFileStorage regionFileCache;
// Paper end - async chunk loading
@@ -36,9 +36,9 @@ public class ChunkStorage implements AutoCloseable {
@Nullable
private volatile LegacyStructureDataHandler legacyStructureHandler;
- public ChunkStorage(Path directory, DataFixer dataFixer, boolean dsync) {
+ public ChunkStorage(dev.kaiijumc.kaiiju.region.RegionFileFormat format, int linearCompression, Path directory, DataFixer dataFixer, boolean dsync) { // Kaiiju
this.fixerUpper = dataFixer;
// Paper start - async chunk io
// remove IO worker
- this.regionFileCache = new RegionFileStorage(directory, dsync, true); // Paper - nuke IOWorker // Paper - Attempt to recalculate regionfile header if it is corrupt
+
+ this.regionFileCache = new RegionFileStorage(format,linearCompression,directory, dsync, true); // Paper - nuke IOWorker // Paper - Attempt to recalculate regionfile header if it is corrupt
// Paper end - async chunk io
- this.regionFileCache = new RegionFileStorage(directory, dsync, true); // Paper - rewrite chunk system; async chunk IO & Attempt to recalculate regionfile header if it is corrupt
+ this.regionFileCache = new RegionFileStorage(format,linearCompression,directory, dsync, true); // Paper - rewrite chunk system; async chunk IO & Attempt to recalculate regionfile header if it is corrupt //Kaiiju
}
public boolean isOldChunkAround(ChunkPos chunkPos, int checkRadius) {
diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFile.java b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFile.java
index 22de360e6775943c0c8bd5717c78d49b45e70d6d..04c9230a76c0c0e0c69c5a71853a92e05037c7d7 100644
index 6cf83502a954cce9c562ec036bfeddb477d38b73..a450533cd01dab4ae165dc93f6c57553fee831c8 100644
--- a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFile.java
+++ b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFile.java
@@ -26,7 +26,7 @@ import net.minecraft.nbt.NbtIo; // Paper
@@ -785,7 +767,7 @@ index 22de360e6775943c0c8bd5717c78d49b45e70d6d..04c9230a76c0c0e0c69c5a71853a92e0
if (!this.canRecalcHeader) {
return false;
}
@@ -954,10 +965,10 @@ public class RegionFile implements AutoCloseable {
@@ -955,10 +966,10 @@ public class RegionFile implements AutoCloseable {
private static int getChunkIndex(int x, int z) {
return (x & 31) + (z & 31) * 32;
}
@@ -798,7 +780,7 @@ index 22de360e6775943c0c8bd5717c78d49b45e70d6d..04c9230a76c0c0e0c69c5a71853a92e0
final int offset = getChunkIndex(x, z);
boolean previous = this.oversized[offset] == 1;
this.oversized[offset] = (byte) (oversized ? 1 : 0);
@@ -996,7 +1007,7 @@ public class RegionFile implements AutoCloseable {
@@ -997,7 +1008,7 @@ public class RegionFile implements AutoCloseable {
return this.regionFile.getParent().resolve(this.regionFile.getFileName().toString().replaceAll("\\.mca$", "") + "_oversized_" + x + "_" + z + ".nbt");
}
@@ -808,7 +790,7 @@ index 22de360e6775943c0c8bd5717c78d49b45e70d6d..04c9230a76c0c0e0c69c5a71853a92e0
try (DataInputStream out = new DataInputStream(new java.io.BufferedInputStream(new InflaterInputStream(Files.newInputStream(file))))) {
return NbtIo.read((java.io.DataInput) out);
diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
index 31dddd4776d71872d1c471519e4e46432df282f2..402a14e6b20da2d69e0f614b8a27fba9a8f9adcd 100644
index fe312b1aef579cb4bf81bdd967cf72ff880d7505..db9e4386ca95bdaba0a4a4e13e3a90d2bcfbae91 100644
--- a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
+++ b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
@@ -21,9 +21,13 @@ public class RegionFileStorage implements AutoCloseable {
@@ -893,7 +875,7 @@ index 31dddd4776d71872d1c471519e4e46432df282f2..402a14e6b20da2d69e0f614b8a27fba9
@@ -123,28 +131,45 @@ public class RegionFileStorage implements AutoCloseable {
}
// Paper end - cache regionfile does not exist state
if (this.regionCache.size() >= io.papermc.paper.configuration.GlobalConfiguration.get().misc.regionFileCacheSize) { // Paper - configurable
if (this.regionCache.size() >= io.papermc.paper.configuration.GlobalConfiguration.get().misc.regionFileCacheSize) { // Paper - Sanitise RegionFileCache and make configurable
- ((RegionFile) this.regionCache.removeLast()).close();
+ this.regionCache.removeLast().close(); // Kaiiju
}
@@ -943,16 +925,16 @@ index 31dddd4776d71872d1c471519e4e46432df282f2..402a14e6b20da2d69e0f614b8a27fba9
}
// Paper end
return regionfile1;
@@ -172,7 +197,7 @@ public class RegionFileStorage implements AutoCloseable {
@@ -156,7 +181,7 @@ public class RegionFileStorage implements AutoCloseable {
org.apache.logging.log4j.LogManager.getLogger().fatal(msg + " (" + file.toString().replaceAll(".+[\\\\/]", "") + " - " + x + "," + z + ") Go clean it up to remove this message. /minecraft:tp " + (x<<4)+" 128 "+(z<<4) + " - DO NOT REPORT THIS TO PAPER - You may ask for help on Discord, but do not file an issue. These error messages can not be removed.");
}
- private static CompoundTag readOversizedChunk(RegionFile regionfile, ChunkPos chunkCoordinate) throws IOException {
+ private static CompoundTag readOversizedChunk(dev.kaiijumc.kaiiju.region.AbstractRegionFile regionfile, ChunkPos chunkCoordinate) throws IOException { // Kaiiju
synchronized (regionfile) {
try (DataInputStream datainputstream = regionfile.getChunkDataInputStream(chunkCoordinate)) {
CompoundTag oversizedData = regionfile.getOversizedData(chunkCoordinate.x, chunkCoordinate.z);
@@ -219,14 +244,14 @@ public class RegionFileStorage implements AutoCloseable {
@@ -191,14 +216,14 @@ public class RegionFileStorage implements AutoCloseable {
@Nullable
public CompoundTag read(ChunkPos pos) throws IOException {
// CraftBukkit start - SPIGOT-5680: There's no good reason to preemptively create files on read, save that for writing
@@ -969,7 +951,7 @@ index 31dddd4776d71872d1c471519e4e46432df282f2..402a14e6b20da2d69e0f614b8a27fba9
// We add the regionfile parameter to avoid the potential deadlock (on fileLock) if we went back to obtain a regionfile
// if we decide to re-read
// Paper end
@@ -236,7 +261,7 @@ public class RegionFileStorage implements AutoCloseable {
@@ -208,7 +233,7 @@ public class RegionFileStorage implements AutoCloseable {
// Paper start
if (regionfile.isOversized(pos.x, pos.z)) {
@@ -978,7 +960,7 @@ index 31dddd4776d71872d1c471519e4e46432df282f2..402a14e6b20da2d69e0f614b8a27fba9
return readOversizedChunk(regionfile, pos);
}
// Paper end
@@ -250,12 +275,12 @@ public class RegionFileStorage implements AutoCloseable {
@@ -222,12 +247,12 @@ public class RegionFileStorage implements AutoCloseable {
if (this.isChunkData) {
ChunkPos chunkPos = ChunkSerializer.getChunkCoordinate(nbttagcompound);
if (!chunkPos.equals(pos)) {
@@ -994,7 +976,7 @@ index 31dddd4776d71872d1c471519e4e46432df282f2..402a14e6b20da2d69e0f614b8a27fba9
return null;
}
}
@@ -289,13 +314,13 @@ public class RegionFileStorage implements AutoCloseable {
@@ -261,13 +286,13 @@ public class RegionFileStorage implements AutoCloseable {
return nbttagcompound;
} finally { // Paper start
@@ -1010,25 +992,25 @@ index 31dddd4776d71872d1c471519e4e46432df282f2..402a14e6b20da2d69e0f614b8a27fba9
if (regionfile == null) {
return;
}
@@ -325,7 +350,7 @@ public class RegionFileStorage implements AutoCloseable {
}
@@ -298,7 +323,7 @@ public class RegionFileStorage implements AutoCloseable {
protected void write(ChunkPos pos, @Nullable CompoundTag nbt) throws IOException {
- RegionFile regionfile = this.getRegionFile(pos, nbt == null, true); // CraftBukkit // Paper // Paper start - rewrite chunk system
+ dev.kaiijumc.kaiiju.region.AbstractRegionFile regionfile = this.getRegionFile(pos, nbt == null, true); // CraftBukkit // Paper // Paper start - rewrite chunk system // Kaiiju
// Paper start - rewrite chunk system
- RegionFile regionfile = this.getRegionFile(pos, nbt == null, true); // CraftBukkit
+ dev.kaiijumc.kaiiju.region.AbstractRegionFile regionfile = this.getRegionFile(pos, nbt == null, true); // CraftBukkit // Kaiiju
if (nbt == null && regionfile == null) {
return;
}
@@ -375,7 +400,7 @@ public class RegionFileStorage implements AutoCloseable {
}
// Paper end
} finally { // Paper start
@@ -353,7 +378,7 @@ public class RegionFileStorage implements AutoCloseable {
// Paper end - Chunk save reattempt
// Paper start - rewrite chunk system
} finally {
- regionfile.fileLock.unlock();
+ regionfile.getFileLock().unlock(); // Kaiiju
} // Paper end
}
// Paper end - rewrite chunk system
}
@@ -384,7 +409,7 @@ public class RegionFileStorage implements AutoCloseable {
@@ -363,7 +388,7 @@ public class RegionFileStorage implements AutoCloseable {
ObjectIterator objectiterator = this.regionCache.values().iterator();
while (objectiterator.hasNext()) {
@@ -1037,7 +1019,7 @@ index 31dddd4776d71872d1c471519e4e46432df282f2..402a14e6b20da2d69e0f614b8a27fba9
try {
regionfile.close();
@@ -400,7 +425,7 @@ public class RegionFileStorage implements AutoCloseable {
@@ -379,7 +404,7 @@ public class RegionFileStorage implements AutoCloseable {
ObjectIterator objectiterator = this.regionCache.values().iterator();
while (objectiterator.hasNext()) {
@@ -1062,13 +1044,13 @@ index 4aac1979cf57300825a999c876fcf24d3170e68e..3b96582f15d0985b670b5b5a1548800d
this.factory = factory;
this.fixerUpper = dataFixer;
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 6bb19a9a4150f516c32bc155eafe99fc1afb75b1..77900dde881b260b73b87664484cce55e60a9900 100644
index d3bdc355bee762b90a77528e9da96d74e6b174ae..f5e12147b7e387f34b9ef648c9a2a3ec77522496 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -569,7 +569,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
world.getChunk(x, z); // make sure we're at ticket level 32 or lower
return true;
}
- net.minecraft.world.level.chunk.storage.RegionFile file;
+ dev.kaiijumc.kaiiju.region.AbstractRegionFile file; // Kaiiju
try {

View File

@@ -1,6 +1,6 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Sat, 27 Jan 2024 11:36:40 +0000
Date: Tue, 6 Feb 2024 03:05:31 +0000
Subject: [PATCH] Add a simple tpsbar
@@ -318,7 +318,7 @@ index 0000000000000000000000000000000000000000..59c39402d896d0ba75a9ca7e6c74a01a
+ }
+}
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index e5eeb361fc29c831a76f87c60896b5dd23f58736..59de20edb5a770a380c26f13ba1b830e3c0c1875 100644
index 5a71ee8d50818c5d6e7a6a2fee05a5c16108b50a..c16f92ac58bbaac875450e2c019772d13384d1de 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -1,20 +1,16 @@
@@ -353,7 +353,7 @@ index e5eeb361fc29c831a76f87c60896b5dd23f58736..59de20edb5a770a380c26f13ba1b830e
//Util.shutdownExecutors(); // Paper - moved into super
SkullBlockEntity.clear();
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index bd9edb8271e3111431d45eb908d8336e0e7e23bc..90969df697f3f0d6d77d8584924c28a844c1535d 100644
index c8ee0307fa6c13c34a1db80ddf65d8381fd556be..1e5df8a667dad52aef51e4c22e1e0234548a17f6 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -285,6 +285,7 @@ public class ServerPlayer extends Player {
@@ -365,10 +365,10 @@ index bd9edb8271e3111431d45eb908d8336e0e7e23bc..90969df697f3f0d6d77d8584924c28a8
public io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances getViewDistances() {
return this.viewDistances.get();
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 003684843c2a9fc709619c1de8cf73dbb1b25c42..c41537b78922f85e8c7099be0b38f341b8c531a6 100644
index fc301fcf812b79ac7ceae710132a762f101b82b2..91678602a5509b7ee0ff792d1a626e271b7db6b9 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -2284,6 +2284,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2257,6 +2257,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
handle.expToDrop = data.getInt("expToDrop");
handle.keepLevel = data.getBoolean("keepLevel");
}
@@ -379,7 +379,7 @@ index 003684843c2a9fc709619c1de8cf73dbb1b25c42..c41537b78922f85e8c7099be0b38f341
}
}
@@ -2305,6 +2309,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2278,6 +2282,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
data.putLong("lastPlayed", System.currentTimeMillis());
data.putString("lastKnownName", handle.getScoreboardName());

View File

@@ -1,6 +1,6 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Sat, 27 Jan 2024 11:37:04 +0000
Date: Tue, 6 Feb 2024 03:10:04 +0000
Subject: [PATCH] Petal Reduce sensor work
@@ -27,7 +27,7 @@ index 0657fce8aabb956a400b3cead53c28ef52e67fe9..c3a481cb7bea0619b1af0e3203e9d885
public static <T> T get(String key,T def){
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
index 4e770f3b781be4c282d1e81c327fb2fb06b5af1f..f2526900699319f12aa8efa3da19537296f8897a 100644
index a1a0ac986e2052d3669428a29987630bc226d80f..7ca0057037380b9eac49a6415ec05acbb2b70ec0 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -10,6 +10,8 @@ import java.util.Optional;
@@ -42,7 +42,7 @@ index 4e770f3b781be4c282d1e81c327fb2fb06b5af1f..f2526900699319f12aa8efa3da195372
@@ -925,10 +927,11 @@ public abstract class Mob extends LivingEntity implements Targeting {
return;
}
// Paper end
// Paper end - Allow nerfed mobs to jump and float
+ int i = this.tickCount + this.getId(); // Folia - region threading //Luminol - Petal - Move up
+
this.level().getProfiler().push("sensing");

View File

@@ -1,6 +1,6 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Sat, 27 Jan 2024 11:37:52 +0000
Date: Tue, 6 Feb 2024 03:11:28 +0000
Subject: [PATCH] Add config for username check
@@ -25,7 +25,7 @@ index c3a481cb7bea0619b1af0e3203e9d88514e84c62..0929a5a167691bde7dedaa1e2812b34a
if (tpsbarEnabled){
initTpsbar();
diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
index d809dd5f6aa39fcd7583d7db822450297225eb49..2bb775563c6672349aa6b6f1b2821006ec48eb09 100644
index aa4b461bbb2c8c4753f7c9057bab1740de2c0284..4801c59cb3604257fb1016726e4c66ade7295f2e 100644
--- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
@@ -44,6 +44,7 @@ import org.bukkit.craftbukkit.util.Waitable;

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Pufferfish Cache climbing check for activation
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 5e78570110dd57cac16e073e3051f76460e19540..ec20ae65db0b3d835b58b471f90f3862283423e6 100644
index 18c9a35624d6d3c94efd5df8e97c4257fd199d0d..f04517cb4a0c134344481c2779fea5bf49f1482d 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -311,7 +311,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
@@ -310,7 +310,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
public double yo;
public double zo;
private Vec3 position;
@@ -18,10 +18,10 @@ index 5e78570110dd57cac16e073e3051f76460e19540..ec20ae65db0b3d835b58b471f90f3862
private Vec3 deltaMovement;
private float yRot;
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 8d8c80a41e01df4d0fef7d045b9c5d283a8f168d..81cf3721fd93af5ee307226cdea926d3ad443f77 100644
index 28da90b59f60d3f7618a42e149467a3a55c91682..dd50c93283dfce2ed33d3eece48e1829b9cdc9d0 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -142,7 +142,6 @@ import org.bukkit.event.entity.EntityTeleportEvent;
@@ -141,7 +141,6 @@ import org.bukkit.event.entity.EntityTeleportEvent;
import org.bukkit.event.player.PlayerItemConsumeEvent;
// CraftBukkit end
@@ -29,7 +29,7 @@ index 8d8c80a41e01df4d0fef7d045b9c5d283a8f168d..81cf3721fd93af5ee307226cdea926d3
public abstract class LivingEntity extends Entity implements Attackable {
@@ -2013,6 +2012,20 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -2014,6 +2013,20 @@ public abstract class LivingEntity extends Entity implements Attackable {
return this.lastClimbablePos;
}
@@ -51,10 +51,10 @@ index 8d8c80a41e01df4d0fef7d045b9c5d283a8f168d..81cf3721fd93af5ee307226cdea926d3
if (this.isSpectator()) {
return false;
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
index 5f1dee3a1d5a7b0391bad60b53eda1c5586058aa..e960c307434736af5a0fff626d6bccf5cd46f35d 100644
index f8718d91f4c15c74d6e6dd5f60f7f05f45f63655..50fafff765b2494c075784cc5342d086c8dc97b2 100644
--- a/src/main/java/org/spigotmc/ActivationRange.java
+++ b/src/main/java/org/spigotmc/ActivationRange.java
@@ -306,7 +306,7 @@ public class ActivationRange
@@ -305,7 +305,7 @@ public class ActivationRange
if ( entity instanceof LivingEntity )
{
LivingEntity living = (LivingEntity) entity;

View File

@@ -147,7 +147,7 @@ index 0000000000000000000000000000000000000000..aa8467b9dda1f7707e41f50ac7b3e9d7
+ }
+}
diff --git a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java
index e21f4c5aff3a8e97101f6efc1349fbecf326b5ea..c55f51e6db55f9fa66f53eef0e7a56af5f81d742 100644
index 6d8ff6c06af5545634f255ed17dc1e489ece2548..6411aa4ff6bd4cabb25c426fa8f4a7eedb969c03 100644
--- a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java
+++ b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java
@@ -45,6 +45,8 @@ public abstract class FlowingFluid extends Fluid {
@@ -174,7 +174,7 @@ index e21f4c5aff3a8e97101f6efc1349fbecf326b5ea..c55f51e6db55f9fa66f53eef0e7a56af
private final Map<FluidState, VoxelShape> shapes = Maps.newIdentityHashMap();
public FlowingFluid() {}
@@ -252,6 +262,8 @@ public abstract class FlowingFluid extends Fluid {
@@ -251,6 +261,8 @@ public abstract class FlowingFluid extends Fluid {
return false;
}
// Paper end - optimise collisions
@@ -183,7 +183,7 @@ index e21f4c5aff3a8e97101f6efc1349fbecf326b5ea..c55f51e6db55f9fa66f53eef0e7a56af
Object2ByteLinkedOpenHashMap object2bytelinkedopenhashmap;
if (!state.getBlock().hasDynamicShape() && !fromState.getBlock().hasDynamicShape()) {
@@ -259,9 +271,16 @@ public abstract class FlowingFluid extends Fluid {
@@ -258,9 +270,16 @@ public abstract class FlowingFluid extends Fluid {
} else {
object2bytelinkedopenhashmap = null;
}
@@ -200,7 +200,7 @@ index e21f4c5aff3a8e97101f6efc1349fbecf326b5ea..c55f51e6db55f9fa66f53eef0e7a56af
if (object2bytelinkedopenhashmap != null) {
block_a = new Block.BlockStatePairKey(state, fromState, face);
byte b0 = object2bytelinkedopenhashmap.getAndMoveToFirst(block_a);
@@ -272,11 +291,22 @@ public abstract class FlowingFluid extends Fluid {
@@ -271,11 +290,22 @@ public abstract class FlowingFluid extends Fluid {
} else {
block_a = null;
}
@@ -223,7 +223,7 @@ index e21f4c5aff3a8e97101f6efc1349fbecf326b5ea..c55f51e6db55f9fa66f53eef0e7a56af
if (object2bytelinkedopenhashmap != null) {
if (object2bytelinkedopenhashmap.size() == 200) {
object2bytelinkedopenhashmap.removeLastByte();
@@ -284,6 +314,11 @@ public abstract class FlowingFluid extends Fluid {
@@ -283,6 +313,11 @@ public abstract class FlowingFluid extends Fluid {
object2bytelinkedopenhashmap.putAndMoveToFirst(block_a, (byte) (flag ? 1 : 0));
}

View File

@@ -25,10 +25,10 @@ index 0929a5a167691bde7dedaa1e2812b34ad69913d6..de0855656ad3882b182aa5674fd01172
public static <T> T get(String key,T def){
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 81cf3721fd93af5ee307226cdea926d3ad443f77..c224488866c901604de744c59c7dbd3881251199 100644
index dd50c93283dfce2ed33d3eece48e1829b9cdc9d0..81984f462da4acec1e1a6bcbe52ad0d10d6767f4 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -19,6 +19,8 @@ import java.util.Optional;
@@ -18,6 +18,8 @@ import java.util.Optional;
import java.util.UUID;
import java.util.function.Predicate;
import javax.annotation.Nullable;
@@ -37,7 +37,7 @@ index 81cf3721fd93af5ee307226cdea926d3ad443f77..c224488866c901604de744c59c7dbd38
import net.minecraft.BlockUtil;
import net.minecraft.advancements.CriteriaTriggers;
import net.minecraft.commands.arguments.EntityAnchorArgument;
@@ -419,7 +421,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -418,7 +420,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
boolean flag = this instanceof net.minecraft.world.entity.player.Player;
if (!this.level().isClientSide) {

View File

@@ -1,11 +1,11 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: M2ke4U <79621885+MrHua269@users.noreply.github.com>
Date: Sun, 26 Nov 2023 16:07:30 +0800
From: MrHua269 <novau233@163.com>
Date: Tue, 6 Feb 2024 03:17:39 +0000
Subject: [PATCH] Pufferfish Early return optimization for target finding
diff --git a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java
index c157309ac78e7af084d3acb6e8b2bcd469a39d5e..ac5e5676b194a2a99e5cf53eb89c1152cac963b8 100644
index c8a80c1b2fedff22e8a877d466062375ffb2f0d7..3c4f4af85a3f2d4f9f52827164e63727b916c33a 100644
--- a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java
+++ b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java
@@ -75,9 +75,18 @@ public class TargetingConditions {
@@ -13,7 +13,7 @@ index c157309ac78e7af084d3acb6e8b2bcd469a39d5e..ac5e5676b194a2a99e5cf53eb89c1152
if (this.range > 0.0D) {
- double d = this.testInvisible ? targetEntity.getVisibilityPercent(baseEntity) : 1.0D;
- double e = Math.max((this.useFollowRange ? this.getFollowRange(baseEntity) : this.range) * d, 2.0D); // Paper
- double e = Math.max((this.useFollowRange ? this.getFollowRange(baseEntity) : this.range) * d, 2.0D); // Paper - Fix MC-145656
+ // Pufferfish start - check range before getting visibility
+ // d = invisibility percent, e = follow range adjusted for invisibility, f = distance
double f = baseEntity.distanceToSqr(targetEntity.getX(), targetEntity.getY(), targetEntity.getZ());

View File

@@ -1,18 +1,18 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: M2ke4U <79621885+MrHua269@users.noreply.github.com>
Date: Sun, 26 Nov 2023 16:09:27 +0800
From: MrHua269 <novau233@163.com>
Date: Tue, 6 Feb 2024 03:21:56 +0000
Subject: [PATCH] Pufferfish Fix Paper#6045, block goal shouldn't load chunks
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java
index 34f319ad09276c6f68dde449c79351de0d7d86f5..a719af0b512d9ef243d0d54f3b744b1b1a5f2772 100644
index 07519c817cc6de04a98198c43a0c2b02ba3141eb..ee66be6e5aa45ec8448b6d30785a6e71200b09e3 100644
--- a/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java
@@ -119,6 +119,7 @@ public abstract class MoveToBlockGoal extends Goal {
@@ -120,6 +120,7 @@ public abstract class MoveToBlockGoal extends Goal {
for(int m = 0; m <= l; m = m > 0 ? -m : 1 - m) {
for(int n = m < l && m > -l ? l : 0; n <= l; n = n > 0 ? -n : 1 - n) {
mutableBlockPos.setWithOffset(blockPos, m, k - 1, n);
+ if (!this.mob.level().hasChunkAt(mutableBlockPos)) continue; // Pufferfish - if this block isn't loaded, continue
if (this.mob.isWithinRestriction(mutableBlockPos) && this.isValidTarget(this.mob.level(), mutableBlockPos)) {
this.blockPos = mutableBlockPos;
setTargetPosition(mutableBlockPos.immutable()); // Paper
this.mob.movingTarget = mutableBlockPos == BlockPos.ZERO ? null : mutableBlockPos.immutable(); // Paper

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Pufferfish Reduce entity fluid lookups if no fluids
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index c5d038a00d2fcc17ba813c14e355729c4529dd74..abf7fc1e7a05a741e9258af014411d4ac5e6626c 100644
index f04517cb4a0c134344481c2779fea5bf49f1482d..8a3e11b80d8935b54be2a4a815ee58f5d116424e 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -5206,16 +5206,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
@@ -5189,16 +5189,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
}
public boolean updateFluidHeightAndDoFluidPushing(TagKey<Fluid> tag, double speed) {
@@ -34,7 +34,7 @@ index c5d038a00d2fcc17ba813c14e355729c4529dd74..abf7fc1e7a05a741e9258af014411d4a
double d1 = 0.0D;
boolean flag = this.isPushedByFluid();
boolean flag1 = false;
@@ -5223,14 +5225,61 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
@@ -5206,14 +5208,61 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
int k1 = 0;
BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos();
@@ -102,7 +102,7 @@ index c5d038a00d2fcc17ba813c14e355729c4529dd74..abf7fc1e7a05a741e9258af014411d4a
if (d2 >= axisalignedbb.minY) {
flag1 = true;
@@ -5252,9 +5301,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
@@ -5235,9 +5284,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
// CraftBukkit end
}
}
@@ -116,7 +116,7 @@ index c5d038a00d2fcc17ba813c14e355729c4529dd74..abf7fc1e7a05a741e9258af014411d4a
if (vec3d.length() > 0.0D) {
if (k1 > 0) {
diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java
index f0de72afad4bb571153436399386a6a8a70582a6..45b7527341fcb6d24f35318cedb522646b5ee1c2 100644
index 796bbef3544e06b8e7aac7e8ac5f740a2613f4bd..2422ca3ffc6ab7178cacf933b8013f85e7de4bd9 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java
@@ -25,6 +25,7 @@ public class LevelChunkSection {
@@ -143,11 +143,11 @@ index f0de72afad4bb571153436399386a6a8a70582a6..45b7527341fcb6d24f35318cedb52264
}
this.updateBlockCallback(x, y, z, iblockdata1, state); // Paper - optimise collisions
@@ -161,6 +164,7 @@ public class LevelChunkSection {
if (fluid.isRandomlyTicking()) {
this.tickingFluidCount = (short) (this.tickingFluidCount + 1);
}
@@ -162,6 +165,7 @@ public class LevelChunkSection {
if (fluid.isRandomlyTicking()) {
this.tickingFluidCount = (short) (this.tickingFluidCount + 1);
}
+ this.fluidStateCount++; // Pufferfish
}
}
// Paper start - optimise collisions
// Paper start - optimise collisions

View File

@@ -57,10 +57,10 @@ index de0855656ad3882b182aa5674fd0117288268e71..d0c0b4daec59f23a989a8b8f66ea3c70
public static <T> T get(String key,T def){
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index ba93f5edc848a71705677acfd0016a68ac357116..4c7441f4624e71b0689d03b2f8cc39938f69710f 100644
index 8a3e11b80d8935b54be2a4a815ee58f5d116424e..3b42af742edbe01a4f8b8d03b5dce86efabeb6ac 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -808,6 +808,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
@@ -798,6 +798,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
}
public void tick() {
@@ -74,7 +74,7 @@ index ba93f5edc848a71705677acfd0016a68ac357116..4c7441f4624e71b0689d03b2f8cc3993
}
diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java
index dc83dc377aff965222006e3eaaceb57692d2604f..ca7eb18785f13bf4bbbf60acad54f6e00509cb3e 100644
index f921c159c4f7556daf3c8405241de3607ba251ad..8deae3e95a26f4b42b2c2134e22f9649bd7a5391 100644
--- a/src/main/java/net/minecraft/world/entity/EntityType.java
+++ b/src/main/java/net/minecraft/world/entity/EntityType.java
@@ -313,6 +313,7 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT

View File

@@ -1,6 +1,6 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Sat, 27 Jan 2024 12:23:09 +0000
Date: Tue, 6 Feb 2024 03:31:26 +0000
Subject: [PATCH] Pufferfish Dynamic Activation of Brain
@@ -84,10 +84,10 @@ index 11c1a367fbc25cb63738a00ad93fb0b0b3500e7d..fead5b1be39083f3fe28be8c41dc78dc
public static <T> T get(String key,T def){
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index ec95159ba13e75ee8fc495307f19b587d3b80cf1..a07694156d3aefc4939581f7cb74009db6528f9a 100644
index b3dde336a8fb38b6ab30019c6d66ef1a47b25d9d..3508eeb5c779e5f955a44ab8d43b3d1433fde099 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -1003,6 +1003,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -998,6 +998,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
this.timings.entityTick.startTiming(); // Spigot
profiler.startTimer(ca.spottedleaf.leafprofiler.LProfilerRegistry.ENTITY_TICK); try { // Folia - profiler
regionizedWorldData.forEachTickingEntity((entity) -> { // Folia - regionised ticking
@@ -96,23 +96,23 @@ index ec95159ba13e75ee8fc495307f19b587d3b80cf1..a07694156d3aefc4939581f7cb74009d
if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed
entity.discard();
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 4c7441f4624e71b0689d03b2f8cc39938f69710f..67be79d5b458a30d080a4f68803d20b7b3df4c7f 100644
index 3b42af742edbe01a4f8b8d03b5dce86efabeb6ac..874187e6b2c14b11ce63b3b58cf5ddb0f911475d 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -442,6 +442,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
return this.originWorld;
}
// Paper end
+ // Pufferfish start
@@ -482,6 +482,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
// Folia - region ticking
// Paper end - optimise entity tracking
+ //Pufferfish start
+ public boolean activatedPriorityReset = false; // DAB
+ public int activatedPriority = LuminolConfig.maximumActivationPrio; // golf score
+ // Pufferfish end
+
+
public float getBukkitYaw() {
return this.yRot;
}
diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java
index ca7eb18785f13bf4bbbf60acad54f6e00509cb3e..359b2ee9b9f60517cc1051719afb65bde425a563 100644
index 8deae3e95a26f4b42b2c2134e22f9649bd7a5391..c09357c1ef84a29d972119cb496b0ae97f98e4f4 100644
--- a/src/main/java/net/minecraft/world/entity/EntityType.java
+++ b/src/main/java/net/minecraft/world/entity/EntityType.java
@@ -305,6 +305,7 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT
@@ -124,7 +124,7 @@ index ca7eb18785f13bf4bbbf60acad54f6e00509cb3e..359b2ee9b9f60517cc1051719afb65bd
private String descriptionId;
@Nullable
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
index f2526900699319f12aa8efa3da19537296f8897a..0672f9ae2aa22247efde11915cbc3004164d2b30 100644
index 7ca0057037380b9eac49a6415ec05acbb2b70ec0..fcf1f61e3c37ee8d964146f5e33543f5bc478433 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -235,10 +235,10 @@ public abstract class Mob extends LivingEntity implements Targeting {
@@ -162,7 +162,7 @@ index f2526900699319f12aa8efa3da19537296f8897a..0672f9ae2aa22247efde11915cbc3004
this.level().getProfiler().pop();
}
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java
index b738ee2d3801fadfd09313f05ae24593e56b0ec6..9306ab8d2b6eeb73f86d4d94c0065d461905d702 100644
index 676f5485a4ca9252e911213dcda8d51776b637b6..8a045349f36ad4a5578a3ca48721736405255cdb 100644
--- a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java
@@ -11,6 +11,8 @@ import java.util.Set;
@@ -320,7 +320,7 @@ index 937f81a859953498abe73bea560c86e6560e1c33..0a151c679b0dc943598180942d6d4b38
this.level().getProfiler().pop();
super.customServerAiStep();
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
index a7857a7d141a552f800d7becd130e0cf1660e886..8a93eaf8dbabb10c67e94986853103f88291f11d 100644
index 853c777bad19656cd48e9de9015c12e2c078d940..fba0f3725ff3001decdb9efeeab50dd7ce3e4ddc 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -142,6 +142,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -354,7 +354,7 @@ index a7857a7d141a552f800d7becd130e0cf1660e886..8a93eaf8dbabb10c67e94986853103f8
if (this.assignProfessionWhenSpawned) {
this.assignProfessionWhenSpawned = false;
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
index e960c307434736af5a0fff626d6bccf5cd46f35d..1690809e85ad4e65e09097f1db0139137bc335ed 100644
index 50fafff765b2494c075784cc5342d086c8dc97b2..bcb21ed7f9d425d94d62822c32ec77a197ce3dd6 100644
--- a/src/main/java/org/spigotmc/ActivationRange.java
+++ b/src/main/java/org/spigotmc/ActivationRange.java
@@ -1,5 +1,6 @@
@@ -375,7 +375,7 @@ index e960c307434736af5a0fff626d6bccf5cd46f35d..1690809e85ad4e65e09097f1db013913
public class ActivationRange
{
@@ -231,6 +236,25 @@ public class ActivationRange
@@ -230,6 +235,25 @@ public class ActivationRange
}
// Paper end - Configurable marker ticking
ActivationRange.activateEntity(entity, bbByType); // Folia - threaded regions
@@ -401,7 +401,7 @@ index e960c307434736af5a0fff626d6bccf5cd46f35d..1690809e85ad4e65e09097f1db013913
}
// Paper end
}
@@ -247,12 +271,12 @@ public class ActivationRange
@@ -246,12 +270,12 @@ public class ActivationRange
if ( io.papermc.paper.threadedregions.RegionizedServer.getCurrentTick() > entity.activatedTick ) // Folia - threaded regions
{
if ( entity.defaultActivationState )

View File

@@ -1,11 +1,11 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Sat, 27 Jan 2024 12:27:05 +0000
Date: Tue, 6 Feb 2024 03:52:35 +0000
Subject: [PATCH] Gale Variable entity wake-up duration
diff --git a/src/main/java/me/earthme/luminol/LuminolConfig.java b/src/main/java/me/earthme/luminol/LuminolConfig.java
index 4f6af1fa55047e7be9e57c1dd1c60e9d96d12187..793dc5b35e9a0665d486a74ce5b776b43b941ee2 100644
index fead5b1be39083f3fe28be8c41dc78dcac4b59da..aed42e6fa85c8ab5b57e1d09dd840bb49ffe0006 100644
--- a/src/main/java/me/earthme/luminol/LuminolConfig.java
+++ b/src/main/java/me/earthme/luminol/LuminolConfig.java
@@ -56,6 +56,7 @@ public class LuminolConfig {
@@ -25,7 +25,7 @@ index 4f6af1fa55047e7be9e57c1dd1c60e9d96d12187..793dc5b35e9a0665d486a74ce5b776b4
public static <T> T get(String key,T def){
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
index 1690809e85ad4e65e09097f1db0139137bc335ed..ee691edd1ee2c97df0ea925a546a13492254f426 100644
index bcb21ed7f9d425d94d62822c32ec77a197ce3dd6..9cde36cb62b73b96467033901172b22a3c373081 100644
--- a/src/main/java/org/spigotmc/ActivationRange.java
+++ b/src/main/java/org/spigotmc/ActivationRange.java
@@ -76,28 +76,41 @@ public class ActivationRange

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Gale Don't load chunks to activate climbing entities
diff --git a/src/main/java/me/earthme/luminol/LuminolConfig.java b/src/main/java/me/earthme/luminol/LuminolConfig.java
index 793dc5b35e9a0665d486a74ce5b776b43b941ee2..fcd532898e099a809969603941b90fdd415b03c3 100644
index aed42e6fa85c8ab5b57e1d09dd840bb49ffe0006..5a5a868a3715db24635ad5531005b022daa28c7d 100644
--- a/src/main/java/me/earthme/luminol/LuminolConfig.java
+++ b/src/main/java/me/earthme/luminol/LuminolConfig.java
@@ -57,6 +57,7 @@ public class LuminolConfig {
@@ -25,10 +25,10 @@ index 793dc5b35e9a0665d486a74ce5b776b43b941ee2..fcd532898e099a809969603941b90fdd
public static <T> T get(String key,T def){
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 67be79d5b458a30d080a4f68803d20b7b3df4c7f..bf055d7bd246c5a80a60111134f4db15920a46c5 100644
index 874187e6b2c14b11ce63b3b58cf5ddb0f911475d..884e4d34ac1cadfb59a65f7e420030b5f1b965c6 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -5404,6 +5404,16 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
@@ -5387,6 +5387,16 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
return this.feetBlockState;
}
@@ -46,10 +46,10 @@ index 67be79d5b458a30d080a4f68803d20b7b3df4c7f..bf055d7bd246c5a80a60111134f4db15
return this.chunkPosition;
}
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index c224488866c901604de744c59c7dbd3881251199..00990c41986ec717a318f756e1a73a0a94a82b39 100644
index 81984f462da4acec1e1a6bcbe52ad0d10d6767f4..dc80c44f52bb7acaf7d90e1c6f01c4de981f69b4 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -2034,19 +2034,43 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -2035,19 +2035,43 @@ public abstract class LivingEntity extends Entity implements Attackable {
public boolean onClimableCached() {
if (!this.blockPosition().equals(this.lastClimbingPosition)) {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Gale Optimize sun burn tick
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index bf055d7bd246c5a80a60111134f4db15920a46c5..39f86f7007544120d3b83c761dc65f899db3c470 100644
index 884e4d34ac1cadfb59a65f7e420030b5f1b965c6..50986d5309676b8cff3a02313ee383f1b1300b0f 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -310,7 +310,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
@@ -309,7 +309,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
public double xo;
public double yo;
public double zo;
@@ -17,7 +17,7 @@ index bf055d7bd246c5a80a60111134f4db15920a46c5..39f86f7007544120d3b83c761dc65f89
public BlockPos blockPosition; // Pufferfish - private->public
private ChunkPos chunkPosition;
private Vec3 deltaMovement;
@@ -2032,9 +2032,17 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
@@ -2023,9 +2023,17 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
/** @deprecated */
@Deprecated
public float getLightLevelDependentMagicValue() {
@@ -37,7 +37,7 @@ index bf055d7bd246c5a80a60111134f4db15920a46c5..39f86f7007544120d3b83c761dc65f89
this.absMoveTo(x, y, z);
this.setYRot(yaw % 360.0F);
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
index 0672f9ae2aa22247efde11915cbc3004164d2b30..c8dad4bde8d0b40f69c2015b86118306448ca38a 100644
index fcf1f61e3c37ee8d964146f5e33543f5bc478433..b7970a29eb0626718051cd044a4d6092a3b88538 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -1741,13 +1741,29 @@ public abstract class Mob extends LivingEntity implements Targeting {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Kaiiju Vanilla end portal teleportation
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 39f86f7007544120d3b83c761dc65f899db3c470..589810272fef6fa47076b05c266a20402d7d8f0d 100644
index 50986d5309676b8cff3a02313ee383f1b1300b0f..03752939200823c8b3df40f1ec602917da725067 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -4162,12 +4162,17 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
@@ -4150,12 +4150,17 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
targetPos, 16, // load 16 blocks to be safe from block physics
ca.spottedleaf.concurrentutil.executor.standard.PrioritisedExecutor.Priority.HIGH,
(chunks) -> {
@@ -28,7 +28,7 @@ index 39f86f7007544120d3b83c761dc65f899db3c470..589810272fef6fa47076b05c266a2040
);
}
);
@@ -4354,6 +4359,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
@@ -4342,6 +4347,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
if (!this.canPortalAsync(takePassengers)) {
return false;
}
@@ -39,7 +39,7 @@ index 39f86f7007544120d3b83c761dc65f899db3c470..589810272fef6fa47076b05c266a2040
Vec3 initialPosition = this.position();
ChunkPos initialPositionChunk = new ChunkPos(
@@ -4412,7 +4421,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
@@ -4400,7 +4409,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
// place
passengerTree.root.placeInAsync(
originWorld, destination, Entity.TELEPORT_FLAG_LOAD_CHUNK | (takePassengers ? Entity.TELEPORT_FLAG_TELEPORT_PASSENGERS : 0L),

View File

@@ -1,6 +1,6 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Sat, 27 Jan 2024 13:21:55 +0000
Date: Tue, 6 Feb 2024 03:58:19 +0000
Subject: [PATCH] Kaiiju Async path processing
@@ -475,7 +475,7 @@ index 0000000000000000000000000000000000000000..130d61324679c8600faa52255f3ad99f
+ }
+}
diff --git a/src/main/java/me/earthme/luminol/LuminolConfig.java b/src/main/java/me/earthme/luminol/LuminolConfig.java
index 8bf7a0235ed292d6cb3beca9b786a69148e0b4d9..ca54cc28282ac6441098215d6e1a3531c3f68b83 100644
index bfdb0513bf2021fd53910fdfadebb37ebc2f3fef..785dc39724f3fb2e27a9fbbe9ea6b4e489b9e0ec 100644
--- a/src/main/java/me/earthme/luminol/LuminolConfig.java
+++ b/src/main/java/me/earthme/luminol/LuminolConfig.java
@@ -11,6 +11,7 @@ import org.apache.logging.log4j.LogManager;
@@ -515,7 +515,7 @@ index 8bf7a0235ed292d6cb3beca9b786a69148e0b4d9..ca54cc28282ac6441098215d6e1a3531
public static <T> T get(String key,T def){
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
index c8dad4bde8d0b40f69c2015b86118306448ca38a..07397dbfcd85f01e2b6df1180adc1db640717f5e 100644
index b7970a29eb0626718051cd044a4d6092a3b88538..8a7f94dda9ec72a2c254c01087049ce25bb4da0b 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -298,6 +298,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
@@ -788,7 +788,7 @@ index 9d3b32c852d660356e0f16d4cc10072b1c603e64..545f578d77398a00fbc626e048eac566
}
diff --git a/src/main/java/net/minecraft/world/entity/ai/navigation/FlyingPathNavigation.java b/src/main/java/net/minecraft/world/entity/ai/navigation/FlyingPathNavigation.java
index 027eef4ace908147285c8d72b612d16e4f925672..6ba693159dcc0827563b5141d12a15ede43b6eda 100644
index e35c38feb62c3345d82636081decc09db9f061ab..c889494d4bb2a700b00c8cbc85578ceb6c2f5496 100644
--- a/src/main/java/net/minecraft/world/entity/ai/navigation/FlyingPathNavigation.java
+++ b/src/main/java/net/minecraft/world/entity/ai/navigation/FlyingPathNavigation.java
@@ -16,10 +16,26 @@ public class FlyingPathNavigation extends PathNavigation {
@@ -827,7 +827,7 @@ index 027eef4ace908147285c8d72b612d16e4f925672..6ba693159dcc0827563b5141d12a15ed
if (!this.isDone()) {
if (this.canUpdatePath()) {
diff --git a/src/main/java/net/minecraft/world/entity/ai/navigation/GroundPathNavigation.java b/src/main/java/net/minecraft/world/entity/ai/navigation/GroundPathNavigation.java
index c065d372ac5f1663db3c521e996ee03669d0bc31..c560435f92d770f1ad7869abaaf7d680b9a866eb 100644
index b31ba4e2286eaee5028cb4dc236829d1a302a25a..0fae5f72ab584ceb97958bef6d7b7d0629cd88ab 100644
--- a/src/main/java/net/minecraft/world/entity/ai/navigation/GroundPathNavigation.java
+++ b/src/main/java/net/minecraft/world/entity/ai/navigation/GroundPathNavigation.java
@@ -23,10 +23,26 @@ public class GroundPathNavigation extends PathNavigation {
@@ -858,10 +858,10 @@ index c065d372ac5f1663db3c521e996ee03669d0bc31..c560435f92d770f1ad7869abaaf7d680
}
diff --git a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java b/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java
index 147057bfd67d56857b5d3ab1ebd0f0a0c1793a9c..4e104f7ab240ffb53823b14ad6c2506c5e169f98 100644
index 089baec30e0c16149b147a501d68958663519b96..302cc37a7d085028324fae79977657f7e248294f 100644
--- a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java
+++ b/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java
@@ -152,6 +152,10 @@ public abstract class PathNavigation {
@@ -153,6 +153,10 @@ public abstract class PathNavigation {
return null;
} else if (!this.canUpdatePath()) {
return null;
@@ -872,7 +872,7 @@ index 147057bfd67d56857b5d3ab1ebd0f0a0c1793a9c..4e104f7ab240ffb53823b14ad6c2506c
} else if (this.path != null && !this.path.isDone() && positions.contains(this.targetPos)) {
return this.path;
} else {
@@ -178,11 +182,29 @@ public abstract class PathNavigation {
@@ -179,11 +183,29 @@ public abstract class PathNavigation {
PathNavigationRegion pathNavigationRegion = new PathNavigationRegion(this.level, blockPos.offset(-i, -i, -i), blockPos.offset(i, i, i));
Path path = this.pathFinder.findPath(pathNavigationRegion, this.mob, positions, followRange, distance, this.maxVisitedNodesMultiplier);
this.level.getProfiler().pop();
@@ -902,7 +902,7 @@ index 147057bfd67d56857b5d3ab1ebd0f0a0c1793a9c..4e104f7ab240ffb53823b14ad6c2506c
return path;
}
@@ -229,8 +251,8 @@ public abstract class PathNavigation {
@@ -230,8 +252,8 @@ public abstract class PathNavigation {
if (this.isDone()) {
return false;
} else {
@@ -913,7 +913,7 @@ index 147057bfd67d56857b5d3ab1ebd0f0a0c1793a9c..4e104f7ab240ffb53823b14ad6c2506c
return false;
} else {
this.speedModifier = speed;
@@ -253,6 +275,7 @@ public abstract class PathNavigation {
@@ -254,6 +276,7 @@ public abstract class PathNavigation {
if (this.hasDelayedRecomputation) {
this.recomputePath();
}
@@ -921,7 +921,7 @@ index 147057bfd67d56857b5d3ab1ebd0f0a0c1793a9c..4e104f7ab240ffb53823b14ad6c2506c
if (!this.isDone()) {
if (this.canUpdatePath()) {
@@ -279,6 +302,7 @@ public abstract class PathNavigation {
@@ -280,6 +303,7 @@ public abstract class PathNavigation {
}
protected void followThePath() {
@@ -929,7 +929,7 @@ index 147057bfd67d56857b5d3ab1ebd0f0a0c1793a9c..4e104f7ab240ffb53823b14ad6c2506c
Vec3 vec3 = this.getTempMobPos();
this.maxDistanceToWaypoint = this.mob.getBbWidth() > 0.75F ? this.mob.getBbWidth() / 2.0F : 0.75F - this.mob.getBbWidth() / 2.0F;
Vec3i vec3i = this.path.getNextNodePos();
@@ -434,7 +458,7 @@ public abstract class PathNavigation {
@@ -435,7 +459,7 @@ public abstract class PathNavigation {
public boolean shouldRecomputePath(BlockPos pos) {
if (this.hasDelayedRecomputation) {
return false;
@@ -1008,7 +1008,7 @@ index 8db20db72cd51046213625fac46c35854c59ec5d..d40e00a0a8726c920ea43aaa1ed68005
}
}
diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java
index cbb0ebf003f5d832be1937aa886802df3f06b12a..32138d22024c027a00502658aed0c0d6df58ce1a 100644
index 9f1791e60061934fc89a13258f3fab9f67f3a45c..489fab4847118b8ecb92e435d57d224104e7a3b6 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Bee.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java
@@ -1084,7 +1084,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@@ -1064,7 +1064,7 @@ index e88b058c0734e436ef24bab6364b206c13e5a9c2..613c04314d2693af4889a665e17f272b
}
}
diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java
index 485d14d71fb26e6e0d00a43da040bf63d696b66a..b60559381786cf841c581781ef3406ad50195592 100644
index 01897af1e6253b987734a24c052daf2ce1314092..b2f3f65caa92cfd9a8c65e617fde558506ca5a95 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java
@@ -216,7 +216,6 @@ public class Drowned extends Zombie implements RangedAttackMob {
@@ -1161,7 +1161,7 @@ index d3d1ad7901411574b85b0febd1c7ddaa8ad7c9f4..850065df2b95b0967660f246cd007bf9
return pistonMovingBlockEntity != null ? pistonMovingBlockEntity.getCollisionShape(world, pos) : Shapes.empty();
}
diff --git a/src/main/java/net/minecraft/world/level/pathfinder/Path.java b/src/main/java/net/minecraft/world/level/pathfinder/Path.java
index eea4c932d909145e7af848cf76e3f49dbb2deff2..7160459ec8ba81f66a85082a1fe7b06377180afa 100644
index 3049edb5a8b5967e5242a3896b23665888eb3472..0da9acd785cf785d82be7aab0a1e2bfd70c62998 100644
--- a/src/main/java/net/minecraft/world/level/pathfinder/Path.java
+++ b/src/main/java/net/minecraft/world/level/pathfinder/Path.java
@@ -27,6 +27,17 @@ public class Path {
@@ -1191,7 +1191,7 @@ index eea4c932d909145e7af848cf76e3f49dbb2deff2..7160459ec8ba81f66a85082a1fe7b063
return false;
} else if (o.nodes.size() != this.nodes.size()) {
diff --git a/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java b/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java
index 1d51e113b17a5c522fa7812b1c1f38bf790d8335..72dd47dfa7e94317d30ab2da7081aebc3b39588e 100644
index eb18494bd7257fa5eb00dea16cf4d5667b796f2b..b497ea3059f73320c3718db114778a9e32b753e9 100644
--- a/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java
+++ b/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java
@@ -24,37 +24,80 @@ public class PathFinder {
@@ -1264,7 +1264,7 @@ index 1d51e113b17a5c522fa7812b1c1f38bf790d8335..72dd47dfa7e94317d30ab2da7081aebc
- @Nullable
+ //@Nullable // Kaiiju - Always not null
// Paper start - Perf: remove streams and optimize collection - optimize collection
// Paper start - Perf: remove streams and optimize collection
private Path findPath(ProfilerFiller profiler, Node startNode, List<Map.Entry<Target, BlockPos>> positions, float followRange, int distance, float rangeMultiplier) {
profiler.push("find_path");
profiler.markForCharting(MetricCategory.PATH_FINDING);

View File

@@ -1,492 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Sat, 27 Jan 2024 13:24:20 +0000
Subject: [PATCH] Optimize mob spawning(Async mob spawn state calc)
diff --git a/src/main/java/com/destroystokyo/paper/util/misc/AreaMap.java b/src/main/java/com/destroystokyo/paper/util/misc/AreaMap.java
index 41b9405d6759d865e0d14dd4f95163e9690e967d..091b1ae822e1c0517e59572e7a9bda11e998c0ee 100644
--- a/src/main/java/com/destroystokyo/paper/util/misc/AreaMap.java
+++ b/src/main/java/com/destroystokyo/paper/util/misc/AreaMap.java
@@ -26,7 +26,7 @@ public abstract class AreaMap<E> {
// we use linked for better iteration.
// map of: coordinate to set of objects in coordinate
- protected final Long2ObjectOpenHashMap<PooledLinkedHashSets.PooledObjectLinkedOpenHashSet<E>> areaMap = new Long2ObjectOpenHashMap<>(1024, 0.7f);
+ protected Long2ObjectOpenHashMap<PooledLinkedHashSets.PooledObjectLinkedOpenHashSet<E>> areaMap = new Long2ObjectOpenHashMap<>(1024, 0.7f); // Pufferfish - not actually final
protected final PooledLinkedHashSets<E> pooledHashSets;
protected final ChangeCallback<E> addCallback;
@@ -160,7 +160,8 @@ public abstract class AreaMap<E> {
protected abstract PooledLinkedHashSets.PooledObjectLinkedOpenHashSet<E> getEmptySetFor(final E object);
// expensive op, only for debug
- protected void validate(final E object, final int viewDistance) {
+ protected void validate0(final E object, final int viewDistance) { // Pufferfish - rename this thing just in case it gets used I'd rather a compile time error.
+ if (true) throw new UnsupportedOperationException(); // Pufferfish - not going to put in the effort to fix this if it doesn't ever get used.
int entiesGot = 0;
int expectedEntries = (2 * viewDistance + 1);
expectedEntries *= expectedEntries;
diff --git a/src/main/java/com/destroystokyo/paper/util/misc/PlayerAreaMap.java b/src/main/java/com/destroystokyo/paper/util/misc/PlayerAreaMap.java
index 46954db7ecd35ac4018fdf476df7c8020d7ce6c8..1ad890a244bdf6df48a8db68cb43450e08c788a6 100644
--- a/src/main/java/com/destroystokyo/paper/util/misc/PlayerAreaMap.java
+++ b/src/main/java/com/destroystokyo/paper/util/misc/PlayerAreaMap.java
@@ -5,7 +5,7 @@ import net.minecraft.server.level.ServerPlayer;
/**
* @author Spottedleaf
*/
-public final class PlayerAreaMap extends AreaMap<ServerPlayer> {
+public class PlayerAreaMap extends AreaMap<ServerPlayer> { // Pufferfish - not actually final
public PlayerAreaMap() {
super();
diff --git a/src/main/java/gg/pufferfish/pufferfish/util/AsyncPlayerAreaMap.java b/src/main/java/gg/pufferfish/pufferfish/util/AsyncPlayerAreaMap.java
new file mode 100644
index 0000000000000000000000000000000000000000..fdcb62d12164024a5f354d60cc863821a18d1b2a
--- /dev/null
+++ b/src/main/java/gg/pufferfish/pufferfish/util/AsyncPlayerAreaMap.java
@@ -0,0 +1,31 @@
+package gg.pufferfish.pufferfish.util;
+
+import com.destroystokyo.paper.util.misc.PlayerAreaMap;
+import com.destroystokyo.paper.util.misc.PooledLinkedHashSets;
+import java.util.concurrent.ConcurrentHashMap;
+import net.minecraft.server.level.ServerPlayer;
+
+public final class AsyncPlayerAreaMap extends PlayerAreaMap {
+
+ public AsyncPlayerAreaMap() {
+ super();
+ this.areaMap = new Long2ObjectOpenHashMapWrapper<>(new ConcurrentHashMap<>(1024, 0.7f));
+ }
+
+ public AsyncPlayerAreaMap(final PooledLinkedHashSets<ServerPlayer> pooledHashSets) {
+ super(pooledHashSets);
+ this.areaMap = new Long2ObjectOpenHashMapWrapper<>(new ConcurrentHashMap<>(1024, 0.7f));
+ }
+
+ public AsyncPlayerAreaMap(final PooledLinkedHashSets<ServerPlayer> pooledHashSets, final ChangeCallback<ServerPlayer> addCallback,
+ final ChangeCallback<ServerPlayer> removeCallback) {
+ this(pooledHashSets, addCallback, removeCallback, null);
+ }
+
+ public AsyncPlayerAreaMap(final PooledLinkedHashSets<ServerPlayer> pooledHashSets, final ChangeCallback<ServerPlayer> addCallback,
+ final ChangeCallback<ServerPlayer> removeCallback, final ChangeSourceCallback<ServerPlayer> changeSourceCallback) {
+ super(pooledHashSets, addCallback, removeCallback, changeSourceCallback);
+ this.areaMap = new Long2ObjectOpenHashMapWrapper<>(new ConcurrentHashMap<>(1024, 0.7f));
+ }
+
+}
diff --git a/src/main/java/gg/pufferfish/pufferfish/util/Long2ObjectOpenHashMapWrapper.java b/src/main/java/gg/pufferfish/pufferfish/util/Long2ObjectOpenHashMapWrapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..facd55463d44cb7e3d2ca6892982f5497b8dded1
--- /dev/null
+++ b/src/main/java/gg/pufferfish/pufferfish/util/Long2ObjectOpenHashMapWrapper.java
@@ -0,0 +1,40 @@
+package gg.pufferfish.pufferfish.util;
+
+import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
+import java.util.Map;
+import org.jetbrains.annotations.Nullable;
+
+public class Long2ObjectOpenHashMapWrapper<V> extends Long2ObjectOpenHashMap<V> {
+
+ private final Map<Long, V> backingMap;
+
+ public Long2ObjectOpenHashMapWrapper(Map<Long, V> map) {
+ backingMap = map;
+ }
+
+ @Override
+ public V put(Long key, V value) {
+ return backingMap.put(key, value);
+ }
+
+ @Override
+ public V get(Object key) {
+ return backingMap.get(key);
+ }
+
+ @Override
+ public V remove(Object key) {
+ return backingMap.remove(key);
+ }
+
+ @Nullable
+ @Override
+ public V putIfAbsent(Long key, V value) {
+ return backingMap.putIfAbsent(key, value);
+ }
+
+ @Override
+ public int size() {
+ return backingMap.size();
+ }
+}
diff --git a/src/main/java/io/papermc/paper/threadedregions/RegionizedWorldData.java b/src/main/java/io/papermc/paper/threadedregions/RegionizedWorldData.java
index 7ca275826609bcf96f103a8c50beaa47c3b4068b..aae4b59a14fc514a30b133921669c855d1717787 100644
--- a/src/main/java/io/papermc/paper/threadedregions/RegionizedWorldData.java
+++ b/src/main/java/io/papermc/paper/threadedregions/RegionizedWorldData.java
@@ -4,6 +4,7 @@ import com.destroystokyo.paper.util.maplist.ReferenceList;
import com.destroystokyo.paper.util.misc.PlayerAreaMap;
import com.destroystokyo.paper.util.misc.PooledLinkedHashSets;
import com.mojang.logging.LogUtils;
+import gg.pufferfish.pufferfish.util.AsyncPlayerAreaMap;
import io.papermc.paper.chunk.system.scheduling.ChunkHolderManager;
import io.papermc.paper.util.CoordinateUtils;
import io.papermc.paper.util.TickThread;
@@ -14,6 +15,7 @@ import it.unimi.dsi.fastutil.longs.Long2ReferenceMap;
import it.unimi.dsi.fastutil.longs.Long2ReferenceOpenHashMap;
import it.unimi.dsi.fastutil.objects.ObjectLinkedOpenHashSet;
import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet;
+import me.earthme.luminol.LuminolConfig;
import net.minecraft.CrashReport;
import net.minecraft.ReportedException;
import net.minecraft.core.BlockPos;
@@ -58,8 +60,13 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;
import java.util.function.Predicate;
+import java.util.stream.Collectors;
public final class RegionizedWorldData {
@@ -145,6 +152,10 @@ public final class RegionizedWorldData {
into.wanderingTraderSpawnDelay = Math.max(from.wanderingTraderSpawnDelay, into.wanderingTraderSpawnDelay);
into.wanderingTraderSpawnChance = Math.max(from.wanderingTraderSpawnChance, into.wanderingTraderSpawnChance);
}
+
+ //Luminol start - Async mob spawning
+ from.lastAsyncSpawnStateTask = null; //Discard the task currently processing
+ //Luminol end
}
@Override
@@ -302,6 +313,10 @@ public final class RegionizedWorldData {
regionizedWorldData.wanderingTraderSpawnDelay = from.wanderingTraderSpawnDelay;
regionizedWorldData.villageSiegeState = new VillageSiegeState(); // just re set it, as the spawn pos will be invalid
}
+
+ //Luminol start - Async mob spawning
+ from.lastAsyncSpawnStateTask = null; //Reset the task
+ //Luminol end
}
};
@@ -398,6 +413,22 @@ public final class RegionizedWorldData {
public java.util.ArrayDeque<net.minecraft.world.level.block.RedstoneTorchBlock.Toggle> redstoneUpdateInfos;
public final Long2IntOpenHashMap chunksBeingWorkedOn = new Long2IntOpenHashMap();
+ //Luminol start - Asnc mob spawning
+ public volatile CompletableFuture<NaturalSpawner.SpawnState> lastAsyncSpawnStateTask = null;
+ public static ThreadPoolExecutor ASYNC_MOB_SPAWNING_EXECUTOR;
+ public static void initMobSpawningExecutor(){
+ if (LuminolConfig.enableAsyncMobSpawning){
+ ASYNC_MOB_SPAWNING_EXECUTOR = new ThreadPoolExecutor(
+ 1,
+ Integer.MAX_VALUE,
+ 1,
+ TimeUnit.MINUTES,
+ new LinkedBlockingQueue<>()
+ );
+ }
+ }
+ //Luminol end
+
public static final class TempCollisionList<T> {
final UnsafeList<T> list = new UnsafeList<>(64);
boolean inUse;
@@ -430,7 +461,7 @@ public final class RegionizedWorldData {
// Mob spawning
private final PooledLinkedHashSets<ServerPlayer> pooledHashSets = new PooledLinkedHashSets<>();
- public final PlayerAreaMap mobSpawnMap = new PlayerAreaMap(this.pooledHashSets);
+ public final PlayerAreaMap mobSpawnMap = new AsyncPlayerAreaMap(this.pooledHashSets); //Luminol - Async mob spawning
public int catSpawnerNextTick = 0;
public int patrolSpawnerNextTick = 0;
public int phantomSpawnerNextTick = 0;
@@ -578,6 +609,12 @@ public final class RegionizedWorldData {
return this.loadedEntities;
}
+ //Luminol start - Async mob spawning
+ public Iterable<Entity> getLoadedEntitiesCopy(){
+ return Arrays.asList(this.loadedEntities.getRawData()).stream().map(o -> (Entity)o).collect(Collectors.toList());
+ }
+ //Luminol end
+
public Entity[] takeTrackingUnloads() {
final Entity[] ret = Arrays.copyOf(this.toProcessTrackingUnloading.getRawData(), this.toProcessTrackingUnloading.size(), Entity[].class);
diff --git a/src/main/java/me/earthme/luminol/LuminolConfig.java b/src/main/java/me/earthme/luminol/LuminolConfig.java
index ca54cc28282ac6441098215d6e1a3531c3f68b83..af0087be0615d40d036390afc4944ed516180c7d 100644
--- a/src/main/java/me/earthme/luminol/LuminolConfig.java
+++ b/src/main/java/me/earthme/luminol/LuminolConfig.java
@@ -2,6 +2,7 @@ package me.earthme.luminol;
import dev.kaiijumc.kaiiju.region.RegionFileFormat;
import com.electronwill.nightconfig.core.file.CommentedFileConfig;
+import io.papermc.paper.threadedregions.RegionizedWorldData;
import me.earthme.luminol.commands.TpsBarCommand;
import me.earthme.luminol.functions.GlobalServerTpsBar;
import net.minecraft.core.registries.BuiltInRegistries;
@@ -61,6 +62,7 @@ public class LuminolConfig {
public static boolean asyncPathProcessing = false;
public static int asyncPathProcessingMaxThreads = 0;
public static int asyncPathProcessingKeepalive = 60;
+ public static boolean enableAsyncMobSpawning = false;
public static void init() throws IOException {
PARENT_FOLDER.mkdir();
@@ -186,6 +188,8 @@ public class LuminolConfig {
asyncPathProcessingMaxThreads = Math.max(Runtime.getRuntime().availableProcessors() / 4, 1);
if (!asyncPathProcessing)
asyncPathProcessingMaxThreads = 0;
+ enableAsyncMobSpawning = get("optimizations.enable_async_mob_spawning",enableAsyncMobSpawning,"Not recommended to use this because it may cause some thread safe issue");
+ RegionizedWorldData.initMobSpawningExecutor();
}
public static <T> T get(String key,T def){
diff --git a/src/main/java/me/earthme/luminol/utils/AsyncMobSpawnExecutor.java b/src/main/java/me/earthme/luminol/utils/AsyncMobSpawnExecutor.java
new file mode 100644
index 0000000000000000000000000000000000000000..88d5b188ccfb17fe1ae4b08f32565f27569cad5c
--- /dev/null
+++ b/src/main/java/me/earthme/luminol/utils/AsyncMobSpawnExecutor.java
@@ -0,0 +1,71 @@
+package me.earthme.luminol.utils;
+
+import ca.spottedleaf.concurrentutil.collection.MultiThreadedQueue;
+import net.minecraft.server.MinecraftServer;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.concurrent.Executor;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.locks.LockSupport;
+
+public class AsyncMobSpawnExecutor implements Runnable, Executor {
+ private final MultiThreadedQueue<Runnable> allTasks = new MultiThreadedQueue<>();
+ private final Thread worker = new Thread(this);
+ private AtomicBoolean shouldRunNext = new AtomicBoolean(true);
+ private AtomicBoolean isRunning = new AtomicBoolean(false);
+ private AtomicBoolean isIdle = new AtomicBoolean(false);
+
+ public boolean isRunning(){
+ return this.isRunning.get();
+ }
+
+ public void startExecutor(){
+ this.worker.setDaemon(true);
+ this.worker.setContextClassLoader(MinecraftServer.class.getClassLoader());
+ this.worker.start();
+ }
+
+ public void forceTerminate(){
+ this.shouldRunNext.set(false);
+ if (this.isRunning.get()){
+ this.allTasks.clear();
+ LockSupport.unpark(this.worker);
+ }
+ }
+
+ public void dropAllTasks(){
+ this.allTasks.clear();
+ }
+
+ @Override
+ public void run() {
+ this.isRunning.set(true);
+ try {
+ while (this.shouldRunNext.get()){
+ final Runnable task = this.allTasks.poll();
+ if (task != null){
+ this.isIdle.set(false);
+
+ try {
+ task.run();
+ }catch (Exception e){
+ e.printStackTrace(); //TODO - Exception processing?
+ }
+
+ continue;
+ }
+
+ this.isIdle.set(true);
+ LockSupport.park();
+ }
+ }finally {
+ this.isRunning.set(false);
+ }
+ }
+
+ @Override
+ public void execute(@NotNull Runnable command) {
+ this.allTasks.offer(command);
+ LockSupport.unpark(this.worker); //Notify
+ }
+}
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index 88db5ada13329a5fe0d0fb652d2c8a8d561649e8..9d5a1d1aa5c9fae20c4598a2da370fe2b021ec25 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -17,6 +17,9 @@ import java.util.function.BooleanSupplier;
import java.util.function.Consumer;
import java.util.function.Supplier;
import javax.annotation.Nullable;
+
+import io.papermc.paper.threadedregions.RegionizedWorldData;
+import me.earthme.luminol.LuminolConfig;
import net.minecraft.Util;
import net.minecraft.core.BlockPos;
import net.minecraft.core.SectionPos;
@@ -486,32 +489,38 @@ public class ServerChunkCache extends ChunkSource {
int k = this.distanceManager.getNaturalSpawnChunkCount();
// Paper start - per player mob spawning
int naturalSpawnChunkCount = k;
- NaturalSpawner.SpawnState spawnercreature_d; // moved down
+ NaturalSpawner.SpawnState spawnercreature_d = null; // moved down
profiler.startTimer(ca.spottedleaf.leafprofiler.LProfilerRegistry.MOB_SPAWN_ENTITY_COUNT); try { // Folia - profiler
- if ((this.spawnFriendlies || this.spawnEnemies) && this.level.paperConfig().entities.spawning.perPlayerMobSpawns) { // don't count mobs when animals and monsters are disabled
- // re-set mob counts
- for (ServerPlayer player : this.level.getLocalPlayers()) { // Folia - region threading
- // Paper start - per player mob spawning backoff
- for (int ii = 0; ii < ServerPlayer.MOBCATEGORY_TOTAL_ENUMS; ii++) {
- player.mobCounts[ii] = 0;
-
- int newBackoff = player.mobBackoffCounts[ii] - 1; // TODO make configurable bleed // TODO use nonlinear algorithm?
- if (newBackoff < 0) {
- newBackoff = 0;
+ if (!LuminolConfig.enableAsyncMobSpawning) { //Luminol
+ if ((this.spawnFriendlies || this.spawnEnemies) && this.level.paperConfig().entities.spawning.perPlayerMobSpawns) { // don't count mobs when animals and monsters are disabled
+ // re-set mob counts
+ for (ServerPlayer player : this.level.getLocalPlayers()) { // Folia - region threading
+ // Paper start - per player mob spawning backoff
+ for (int ii = 0; ii < ServerPlayer.MOBCATEGORY_TOTAL_ENUMS; ii++) {
+ player.mobCounts[ii] = 0;
+
+ int newBackoff = player.mobBackoffCounts[ii] - 1; // TODO make configurable bleed // TODO use nonlinear algorithm?
+ if (newBackoff < 0) {
+ newBackoff = 0;
+ }
+ player.mobBackoffCounts[ii] = newBackoff;
}
- player.mobBackoffCounts[ii] = newBackoff;
+ // Paper end - per player mob spawning backoff
}
- // Paper end - per player mob spawning backoff
+ spawnercreature_d = NaturalSpawner.createState(naturalSpawnChunkCount, regionizedWorldData.getLoadedEntities(), this::getFullChunk, null, true); // Folia - region threading - note: function only cares about loaded entities, doesn't need all
+ } else {
+ spawnercreature_d = NaturalSpawner.createState(naturalSpawnChunkCount, regionizedWorldData.getLoadedEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false); // Folia - region threading - note: function only cares about loaded entities, doesn't need all
}
- spawnercreature_d = NaturalSpawner.createState(naturalSpawnChunkCount, regionizedWorldData.getLoadedEntities(), this::getFullChunk, null, true); // Folia - region threading - note: function only cares about loaded entities, doesn't need all
- } else {
- spawnercreature_d = NaturalSpawner.createState(naturalSpawnChunkCount, regionizedWorldData.getLoadedEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false); // Folia - region threading - note: function only cares about loaded entities, doesn't need all
+ }//Luminol
+ // Luminol start - Async mob spawning
+ if (!LuminolConfig.enableAsyncMobSpawning){
+ regionizedWorldData.lastAsyncSpawnStateTask = CompletableFuture.completedFuture(spawnercreature_d);
}
} finally { profiler.stopTimer(ca.spottedleaf.leafprofiler.LProfilerRegistry.MOB_SPAWN_ENTITY_COUNT); } // Folia - profiler
// Paper end
this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings
- regionizedWorldData.lastSpawnState = spawnercreature_d; // Folia - region threading
+ //regionizedWorldData.lastSpawnState = spawnercreature_d; // Folia - region threading //Luminol - Async mob spawning
gameprofilerfiller.popPush("spawnAndTick");
boolean flag = this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && !this.level.getLocalPlayers().isEmpty(); // CraftBukkit // Folia - region threadin
@@ -606,7 +615,11 @@ public class ServerChunkCache extends ChunkSource {
chunk1.incrementInhabitedTime(j);
if (spawn && flag && (this.spawnEnemies || this.spawnFriendlies) && this.level.getWorldBorder().isWithinBounds(chunkcoordintpair)) { // Spigot // Paper - optimise chunk tick iteration
++spawnChunkCount; // Folia - profiler
- NaturalSpawner.spawnForChunk(this.level, chunk1, spawnercreature_d, this.spawnFriendlies, this.spawnEnemies, flag1);
+ //Luminol start - Async mob spawning
+ if (regionizedWorldData.lastAsyncSpawnStateTask != null && regionizedWorldData.lastAsyncSpawnStateTask.isDone()){
+ NaturalSpawner.spawnForChunk(this.level, chunk1, regionizedWorldData.lastAsyncSpawnStateTask.join(), this.spawnFriendlies, this.spawnEnemies, flag1);
+ }
+ //Luminol end
}
if (true || this.level.shouldTickBlocksAt(chunkcoordintpair.toLong())) { // Paper - optimise chunk tick iteration
@@ -636,6 +649,37 @@ public class ServerChunkCache extends ChunkSource {
} // Paper - timings
} finally { profiler.stopTimer(ca.spottedleaf.leafprofiler.LProfilerRegistry.MISC_MOB_SPAWN_TICK); } // Folia - profiler
}
+
+ //Luminol start - Async mob spawning
+ if (LuminolConfig.enableAsyncMobSpawning){
+ final Iterable<Entity> cp = regionizedWorldData.getLoadedEntitiesCopy();
+ //Luminol - Copied down
+ if ((this.spawnFriendlies || this.spawnEnemies) && this.level.paperConfig().entities.spawning.perPlayerMobSpawns) { // don't count mobs when animals and monsters are disabled
+ // re-set mob counts
+ for (ServerPlayer player : regionizedWorldData.getLocalPlayers()) { // Folia - region threading
+ // Paper start - per player mob spawning backoff
+ for (int ii = 0; ii < ServerPlayer.MOBCATEGORY_TOTAL_ENUMS; ii++) {
+ player.mobCounts[ii] = 0;
+
+ int newBackoff = player.mobBackoffCounts[ii] - 1; // TODO make configurable bleed // TODO use nonlinear algorithm?
+ if (newBackoff < 0) {
+ newBackoff = 0;
+ }
+ player.mobBackoffCounts[ii] = newBackoff;
+ }
+ // Paper end - per player mob spawning backoff
+ }
+
+ if (regionizedWorldData.lastAsyncSpawnStateTask == null || regionizedWorldData.lastAsyncSpawnStateTask.isDone()){
+ regionizedWorldData.lastAsyncSpawnStateTask = CompletableFuture.supplyAsync(() -> NaturalSpawner.createState(naturalSpawnChunkCount,cp, this::getFullChunk, null, true),RegionizedWorldData.ASYNC_MOB_SPAWNING_EXECUTOR);
+ }
+ } else {
+ if (regionizedWorldData.lastAsyncSpawnStateTask == null || regionizedWorldData.lastAsyncSpawnStateTask.isDone()){
+ regionizedWorldData.lastAsyncSpawnStateTask = CompletableFuture.supplyAsync(() -> NaturalSpawner.createState(naturalSpawnChunkCount,cp, this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false), RegionizedWorldData.ASYNC_MOB_SPAWNING_EXECUTOR);
+ }
+ }
+ }
+ //Luminol end
}
gameprofilerfiller.popPush("broadcast");
@@ -806,7 +850,7 @@ public class ServerChunkCache extends ChunkSource {
@VisibleForDebug
public NaturalSpawner.SpawnState getLastSpawnState() {
io.papermc.paper.threadedregions.RegionizedWorldData worldData = this.level.getCurrentWorldData(); // Folia - region threading
- return worldData == null ? null : worldData.lastSpawnState; // Folia - region threading
+ return worldData.lastAsyncSpawnStateTask != null && worldData.lastAsyncSpawnStateTask.isDone() ? worldData.lastAsyncSpawnStateTask.join() : null; // Folia - region threading //Luminol - Async mob spawning
}
public void removeTicketsOnClosing() {
diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
index 1d082e977442790504e3ca70a90dabd69b522622..6fdfeb6920a6db79eb2d374ad120482a5103ccaf 100644
--- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java
+++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
@@ -1,6 +1,9 @@
package net.minecraft.world.level;
+import ca.spottedleaf.concurrentutil.executor.standard.PrioritisedExecutor;
import com.mojang.logging.LogUtils;
+import io.papermc.paper.threadedregions.RegionizedServer;
+import io.papermc.paper.util.TickThread;
import it.unimi.dsi.fastutil.objects.Object2IntMap;
import it.unimi.dsi.fastutil.objects.Object2IntMaps;
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
@@ -117,6 +120,15 @@ public final class NaturalSpawner {
object2intopenhashmap.addTo(enumcreaturetype, 1);
// Paper start
if (countMobs) {
+ //Luminol start - Async mob spawning
+ if (!TickThread.isTickThread()){
+ RegionizedServer.getInstance().taskQueue.queueTickTaskQueue(chunk.level,chunk.locX,chunk.locZ,()->{
+ chunk.level.getChunkSource().chunkMap.updatePlayerMobTypeMap(entity);
+ });
+ return;
+ }
+ //Luminol end
+
chunk.level.getChunkSource().chunkMap.updatePlayerMobTypeMap(entity);
}
// Paper end

View File

@@ -1,31 +1,31 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Sat, 27 Jan 2024 13:25:30 +0000
Date: Tue, 6 Feb 2024 04:01:44 +0000
Subject: [PATCH] Purpur use alternative keep alive
diff --git a/src/main/java/me/earthme/luminol/LuminolConfig.java b/src/main/java/me/earthme/luminol/LuminolConfig.java
index af0087be0615d40d036390afc4944ed516180c7d..6c60dd4bc09be71f950391adc1d735fe1dc6404a 100644
index 785dc39724f3fb2e27a9fbbe9ea6b4e489b9e0ec..a15bf25fb01fb9cf239ecb8c05d795c61d6a8bb9 100644
--- a/src/main/java/me/earthme/luminol/LuminolConfig.java
+++ b/src/main/java/me/earthme/luminol/LuminolConfig.java
@@ -63,6 +63,7 @@ public class LuminolConfig {
@@ -61,6 +61,7 @@ public class LuminolConfig {
public static boolean asyncPathProcessing = false;
public static int asyncPathProcessingMaxThreads = 0;
public static int asyncPathProcessingKeepalive = 60;
public static boolean enableAsyncMobSpawning = false;
+ public static boolean useAlternateKeepAlive = false;
public static void init() throws IOException {
PARENT_FOLDER.mkdir();
@@ -190,6 +191,7 @@ public class LuminolConfig {
@@ -186,6 +187,7 @@ public class LuminolConfig {
asyncPathProcessingMaxThreads = Math.max(Runtime.getRuntime().availableProcessors() / 4, 1);
if (!asyncPathProcessing)
asyncPathProcessingMaxThreads = 0;
enableAsyncMobSpawning = get("optimizations.enable_async_mob_spawning",enableAsyncMobSpawning,"Not recommended to use this because it may cause some thread safe issue");
RegionizedWorldData.initMobSpawningExecutor();
+ useAlternateKeepAlive = get("optimizations.enable_alternative_keep_alive_handling",useAlternateKeepAlive,"Enabling this sends a keepalive packet once per second to a player, and only kicks for timeout if none of them were responded to in 30 seconds. Responding to any of them in any order will keep the player connected. AKA, it won't kick your players because one packet gets dropped somewhere along the lines(From purpur)");
}
public static <T> T get(String key,T def){
diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
index bdeb70fdcd2985c9ffd7cfb77f75d1bd1eb49a02..87922e561b4949e7b4ea124f3ecdcd94792825a3 100644
index 22f0d91df0a81040d72c499fbff32b3a9d41598f..7ae11e8716d45a53cab24a3966bcb880df69027c 100644
--- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
@@ -51,6 +51,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -49,8 +49,8 @@ index bdeb70fdcd2985c9ffd7cfb77f75d1bd1eb49a02..87922e561b4949e7b4ea124f3ecdcd94
+ keepAlives.clear(); // we got a valid response, lets roll with it and forget the rest
+ }
+ } else
+ // Purpur end
//PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); // CraftBukkit // Paper - This shouldn't be on the main thread
+ // Purpur end
//PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); // CraftBukkit // Paper - handle ServerboundKeepAlivePacket async
if (this.keepAlivePending && packet.getId() == this.keepAliveChallenge) {
int i = (int) (Util.getMillis() - this.keepAliveTime);
@@ -221,6 +232,21 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack

View File

@@ -1,6 +1,6 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Sat, 27 Jan 2024 13:26:53 +0000
Date: Tue, 6 Feb 2024 04:03:25 +0000
Subject: [PATCH] Leaves Protocol Core
@@ -36,7 +36,7 @@ index af86f752c33a2990405fea058b7c41c437ba9d46..bada9fae1e7178162429e1f5a1608b9c
}
diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
index 87922e561b4949e7b4ea124f3ecdcd94792825a3..d459013788b077aacd6acd527b1cb39685d5303f 100644
index 7ae11e8716d45a53cab24a3966bcb880df69027c..53783a2b174a46fd79bc7ae6fc5a8e6fc5e56a24 100644
--- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
@@ -139,6 +139,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -44,7 +44,7 @@ index 87922e561b4949e7b4ea124f3ecdcd94792825a3..d459013788b077aacd6acd527b1cb396
@Override
public void handleCustomPayload(ServerboundCustomPayloadPacket packet) {
+ top.leavesmc.leaves.protocol.core.LeavesProtocolManager.handlePayload(player, packet.payload()); // Leaves - protocol
// Paper start - handle brand payload packet
// Paper start - Brand support
if (packet.payload() instanceof net.minecraft.network.protocol.common.custom.BrandPayload brandPayload) {
this.player.clientBrandName = brandPayload.brand();
@@ -156,6 +157,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -56,7 +56,7 @@ index 87922e561b4949e7b4ea124f3ecdcd94792825a3..d459013788b077aacd6acd527b1cb396
} catch (Exception ex) {
ServerGamePacketListenerImpl.LOGGER.error("Couldn\'t register custom payload", ex);
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 5d4876fc53eb12ee8e4a0159177e05cee847f077..8d776e633f6b61b06c3ed1dcfcd86141a9feab8c 100644
index d13edeff0de64cb77d7668e5b964cabcf9729388..c8c72cefba44ce8587a9ae22f5a87d3199f8ca5f 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -433,6 +433,8 @@ public abstract class PlayerList {
@@ -68,7 +68,7 @@ index 5d4876fc53eb12ee8e4a0159177e05cee847f077..8d776e633f6b61b06c3ed1dcfcd86141
final net.kyori.adventure.text.Component jm = playerJoinEvent.joinMessage();
if (jm != null && !jm.equals(net.kyori.adventure.text.Component.empty())) { // Paper - Adventure
@@ -689,6 +691,7 @@ public abstract class PlayerList {
@@ -688,6 +690,7 @@ public abstract class PlayerList {
return this.remove(entityplayer, net.kyori.adventure.text.Component.translatable("multiplayer.player.left", net.kyori.adventure.text.format.NamedTextColor.YELLOW, io.papermc.paper.configuration.GlobalConfiguration.get().messages.useDisplayNameInQuitMessage ? entityplayer.getBukkitEntity().displayName() : io.papermc.paper.adventure.PaperAdventure.asAdventure(entityplayer.getDisplayName())));
}
public net.kyori.adventure.text.Component remove(ServerPlayer entityplayer, net.kyori.adventure.text.Component leaveMessage) {
@@ -77,7 +77,7 @@ index 5d4876fc53eb12ee8e4a0159177e05cee847f077..8d776e633f6b61b06c3ed1dcfcd86141
ServerLevel worldserver = entityplayer.serverLevel();
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 1d8681ee2c71c06a596a6eff650753a358de22c1..39099a6fcb431faf329fff2774988cf64189b43f 100644
index 57243238d9363cc68c1022871d62b41c424b8a75..23cd0290f8939aec85b5699feb6ac7f12bde14a7 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -469,6 +469,7 @@ public final class CraftServer implements Server {

View File

@@ -1,15 +1,15 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Sat, 27 Jan 2024 13:29:09 +0000
Date: Tue, 6 Feb 2024 04:05:46 +0000
Subject: [PATCH] Leaves PCA sync protocol
diff --git a/src/main/java/me/earthme/luminol/LuminolConfig.java b/src/main/java/me/earthme/luminol/LuminolConfig.java
index 6c60dd4bc09be71f950391adc1d735fe1dc6404a..dc8c9f18289a5e01a4a5ccc99d6693ea98c4162a 100644
index a15bf25fb01fb9cf239ecb8c05d795c61d6a8bb9..da818a35faf396e94192ee9ef18c2e5aaef5077a 100644
--- a/src/main/java/me/earthme/luminol/LuminolConfig.java
+++ b/src/main/java/me/earthme/luminol/LuminolConfig.java
@@ -65,6 +65,10 @@ public class LuminolConfig {
public static boolean enableAsyncMobSpawning = false;
@@ -63,6 +63,10 @@ public class LuminolConfig {
public static int asyncPathProcessingKeepalive = 60;
public static boolean useAlternateKeepAlive = false;
+ public static boolean pcaSyncProtocol = false;
@@ -19,9 +19,9 @@ index 6c60dd4bc09be71f950391adc1d735fe1dc6404a..dc8c9f18289a5e01a4a5ccc99d6693ea
public static void init() throws IOException {
PARENT_FOLDER.mkdir();
@@ -192,6 +196,9 @@ public class LuminolConfig {
enableAsyncMobSpawning = get("optimizations.enable_async_mob_spawning",enableAsyncMobSpawning,"Not recommended to use this because it may cause some thread safe issue");
RegionizedWorldData.initMobSpawningExecutor();
@@ -188,6 +192,9 @@ public class LuminolConfig {
if (!asyncPathProcessing)
asyncPathProcessingMaxThreads = 0;
useAlternateKeepAlive = get("optimizations.enable_alternative_keep_alive_handling",useAlternateKeepAlive,"Enabling this sends a keepalive packet once per second to a player, and only kicks for timeout if none of them were responded to in 30 seconds. Responding to any of them in any order will keep the player connected. AKA, it won't kick your players because one packet gets dropped somewhere along the lines(From purpur)");
+
+ pcaSyncProtocol = get("gameplay.enable_pca_sync_protocol",pcaSyncProtocol);
@@ -85,7 +85,7 @@ index e7115f1635821e0aab32e8aeea6914388dc24639..6593ae2dad5d1f7d8e403d08cd425a64
@Override
public boolean stillValid(Player player) {
diff --git a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
index ca17d9953ec207f64ed7386f116d9db540282a75..e89d248247d3c61fbec0c98c09b586e34d9a245f 100644
index d04fc84eef11adb5ea64077f48794b6ed7fb3ada..192b81ea4973b1fb478574ee798d68e884e8be3c 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
@@ -570,6 +570,16 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
@@ -127,7 +127,7 @@ index 416aa989ebb18a8741cc9d605a1180ab830f6643..b73c3dc28a95279285e911bfed3bc3d3
protected Component getDefaultName() {
return Component.translatable("container.barrel");
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java
index 560a6e7b7888a87011aa48d7c9a17949bf086f8d..9e5dd6d920ab8805f71519a0ff74f1888ec5bc0e 100644
index 56b328c64bea0ffd51930d8ba15fb87a36e6d8a1..218f697bc075140c62f461870aff3121d671480d 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java
@@ -4,6 +4,7 @@ import com.google.common.collect.Lists;
@@ -209,7 +209,7 @@ index 4a62ac73dd89bc3c2aed1e58152e93c5043c6633..2d5230a001b933337d90972357b8c7b4
public boolean stillValid(Player player) {
return Container.stillValidBlockEntity(this, player);
diff --git a/src/main/java/net/minecraft/world/level/block/entity/ChestBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/ChestBlockEntity.java
index d66806565770cb03a21794f99e5c4b0f3040b26a..034bc37a8b50a3c9904f4f53c8758b1b02b458b1 100644
index 3514022d898a24052c917ebf55dcef3e757d6836..8a94c9af960a22a1598c7c9ccb7ecad9a311e619 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/ChestBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/ChestBlockEntity.java
@@ -220,6 +220,16 @@ public class ChestBlockEntity extends RandomizableContainerBlockEntity implement
@@ -305,10 +305,10 @@ index 1fa22445a4ecc8c08dbcf0cc6bd39dc5003604c4..c1492fce06cdc00a8e82977f0c474a54
public int[] getSlotsForFace(Direction side) {
return ShulkerBoxBlockEntity.SLOTS;
diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
index 2c3e1b420303a3c3a9315983fbc7e47423f7d9e4..29a8331e498eba333283b41c3e6a87a7ad97747c 100644
index b00e3b9b628f3d2a2fdbf1d2c77904963c16d3ac..5df29ac0a351a5f29189e548afc52b303031b1a2 100644
--- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
+++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
@@ -45,7 +45,7 @@ import org.bukkit.scheduler.BukkitWorker;
@@ -47,7 +47,7 @@ import org.bukkit.scheduler.BukkitWorker;
*/
public class CraftScheduler implements BukkitScheduler {

View File

@@ -1,14 +1,14 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Sat, 27 Jan 2024 13:31:02 +0000
Date: Tue, 6 Feb 2024 04:06:41 +0000
Subject: [PATCH] Leaves Bladeren protocol
diff --git a/src/main/java/me/earthme/luminol/LuminolConfig.java b/src/main/java/me/earthme/luminol/LuminolConfig.java
index 2589f04a33b99f812cfc9b471398d5fd4afb7012..277623f29ca4a00432d70f40612f3ae247f09144 100644
index da818a35faf396e94192ee9ef18c2e5aaef5077a..63984447d9a6a00a6dc6f0dc1056c8c87b8e110f 100644
--- a/src/main/java/me/earthme/luminol/LuminolConfig.java
+++ b/src/main/java/me/earthme/luminol/LuminolConfig.java
@@ -67,6 +67,7 @@ public class LuminolConfig {
@@ -65,6 +65,7 @@ public class LuminolConfig {
public static boolean pcaSyncProtocol = false;
public static String pcaSyncPlayerEntity = "NOBODY";
@@ -16,7 +16,7 @@ index 2589f04a33b99f812cfc9b471398d5fd4afb7012..277623f29ca4a00432d70f40612f3ae2
public static void init() throws IOException {
@@ -199,6 +200,7 @@ public class LuminolConfig {
@@ -195,6 +196,7 @@ public class LuminolConfig {
pcaSyncProtocol = get("gameplay.enable_pca_sync_protocol",pcaSyncProtocol);
pcaSyncPlayerEntity = get("gameplay.pca_sync_player_entity",pcaSyncPlayerEntity,"Available values: NOBODY,EVERYBODY,OPS,OPS_AND_SELF");

View File

@@ -1,14 +1,14 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Sat, 27 Jan 2024 13:33:13 +0000
Date: Tue, 6 Feb 2024 04:08:12 +0000
Subject: [PATCH] Leaves Bladeren mspt sync protocol
diff --git a/src/main/java/me/earthme/luminol/LuminolConfig.java b/src/main/java/me/earthme/luminol/LuminolConfig.java
index 277623f29ca4a00432d70f40612f3ae247f09144..36e8870f89b58d3f01e671480da4c64a502ab7b8 100644
index 63984447d9a6a00a6dc6f0dc1056c8c87b8e110f..6936497ed6d3d54d429e25673e0ce29465538768 100644
--- a/src/main/java/me/earthme/luminol/LuminolConfig.java
+++ b/src/main/java/me/earthme/luminol/LuminolConfig.java
@@ -68,6 +68,9 @@ public class LuminolConfig {
@@ -66,6 +66,9 @@ public class LuminolConfig {
public static boolean pcaSyncProtocol = false;
public static String pcaSyncPlayerEntity = "NOBODY";
public static boolean bladerenLeavesProtocol = false;
@@ -18,7 +18,7 @@ index 277623f29ca4a00432d70f40612f3ae247f09144..36e8870f89b58d3f01e671480da4c64a
public static void init() throws IOException {
@@ -201,6 +204,8 @@ public class LuminolConfig {
@@ -197,6 +200,8 @@ public class LuminolConfig {
pcaSyncProtocol = get("gameplay.enable_pca_sync_protocol",pcaSyncProtocol);
pcaSyncPlayerEntity = get("gameplay.pca_sync_player_entity",pcaSyncPlayerEntity,"Available values: NOBODY,EVERYBODY,OPS,OPS_AND_SELF");
bladerenLeavesProtocol = get("gameplay.bladeren_leaves_protocol",bladerenLeavesProtocol);

View File

@@ -1,14 +1,14 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Sat, 27 Jan 2024 13:34:42 +0000
Date: Tue, 6 Feb 2024 04:08:50 +0000
Subject: [PATCH] Leaves Syncmatica Protocol
diff --git a/src/main/java/me/earthme/luminol/LuminolConfig.java b/src/main/java/me/earthme/luminol/LuminolConfig.java
index 36e8870f89b58d3f01e671480da4c64a502ab7b8..6626961d57fff6475ec82da57941d8dad6455bc6 100644
index 6936497ed6d3d54d429e25673e0ce29465538768..ec372d91ed60534ecbe0d2b28ba3b9abda800683 100644
--- a/src/main/java/me/earthme/luminol/LuminolConfig.java
+++ b/src/main/java/me/earthme/luminol/LuminolConfig.java
@@ -70,6 +70,9 @@ public class LuminolConfig {
@@ -68,6 +68,9 @@ public class LuminolConfig {
public static boolean bladerenLeavesProtocol = false;
public static boolean msptSyncProtocol = false;
public static int msptSyncTickInterval = 20;
@@ -18,7 +18,7 @@ index 36e8870f89b58d3f01e671480da4c64a502ab7b8..6626961d57fff6475ec82da57941d8da
@@ -206,6 +209,9 @@ public class LuminolConfig {
@@ -202,6 +205,9 @@ public class LuminolConfig {
bladerenLeavesProtocol = get("gameplay.bladeren_leaves_protocol",bladerenLeavesProtocol);
msptSyncProtocol = get("gameplay.bladeren_mspt_sync_protocol",bladerenLeavesProtocol);
msptSyncTickInterval = get("gameplay.bladeren_mspt_sync_interval",msptSyncTickInterval);
@@ -29,10 +29,10 @@ index 36e8870f89b58d3f01e671480da4c64a502ab7b8..6626961d57fff6475ec82da57941d8da
public static <T> T get(String key,T def){
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index f6e4d034379d40b39c2ed3de13fa263bc83758ea..dfeaf0755374fe84367238cc5153bf5326299fbe 100644
index 095134bb3c07ad8daeaf4b28076d60b96b481458..7dbd4dad666a0d43e9116f4e3d56faaec427112b 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -307,6 +307,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -306,6 +306,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
Objects.requireNonNull(server);
this.signedMessageDecoder = SignedMessageChain.Decoder.unsigned(uuid, server::enforceSecureProfile);
this.chatMessageChain = new FutureChain(server.chatExecutor); // CraftBukkit - async chat
@@ -40,7 +40,7 @@ index f6e4d034379d40b39c2ed3de13fa263bc83758ea..dfeaf0755374fe84367238cc5153bf53
}
// CraftBukkit start - add fields
@@ -332,6 +333,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -331,6 +332,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
public final Long disconnectTicketId = Long.valueOf(DISCONNECT_TICKET_ID_GENERATOR.getAndIncrement());
// Folia end - region threading

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Piston fixes from molean server
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 589810272fef6fa47076b05c266a20402d7d8f0d..4cdb0e62a3027ae292e1d818e1a06a47496676af 100644
index 03752939200823c8b3df40f1ec602917da725067..b1a17c730939f39ba81209a368c215c236f203b0 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -1438,7 +1438,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
@@ -1429,7 +1429,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
if (movement.lengthSqr() <= 1.0E-7D) {
return movement;
} else {
@@ -18,7 +18,7 @@ index 589810272fef6fa47076b05c266a20402d7d8f0d..4cdb0e62a3027ae292e1d818e1a06a47
if (i != this.pistonDeltasGameTime) {
Arrays.fill(this.pistonDeltas, 0.0D);
diff --git a/src/main/java/net/minecraft/world/level/block/piston/PistonBaseBlock.java b/src/main/java/net/minecraft/world/level/block/piston/PistonBaseBlock.java
index 1818ab63209017b45a46a80802d500f2d042a208..157255e0fdcd2531ba3635d44bf57a84f454bb9b 100644
index be74adc86f0ca467f3b59e7b57fd47a8f381d86e..3482ed0449478b258d85751ffc90ce677acbc60f 100644
--- a/src/main/java/net/minecraft/world/level/block/piston/PistonBaseBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/piston/PistonBaseBlock.java
@@ -152,7 +152,7 @@ public class PistonBaseBlock extends DirectionalBlock {
@@ -31,7 +31,7 @@ index 1818ab63209017b45a46a80802d500f2d042a208..157255e0fdcd2531ba3635d44bf57a84
}
}
diff --git a/src/main/java/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java b/src/main/java/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java
index a595abb43853cd4c3f5886a83527c6cbe4a3e8f7..2284dfcb09d9a7c6f670e5266a3f2856c2d40e8d 100644
index 1c23597f172f46eec714b510acfedb415bb01bff..3262398db1b053115b83ed6aab15f9fef511d5d3 100644
--- a/src/main/java/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java
@@ -277,7 +277,7 @@ public class PistonMovingBlockEntity extends BlockEntity {

View File

@@ -1,14 +1,14 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Sat, 27 Jan 2024 13:43:43 +0000
Date: Tue, 6 Feb 2024 04:17:43 +0000
Subject: [PATCH] Teleport async if the entity was moving to another region
diff --git a/src/main/java/me/earthme/luminol/LuminolConfig.java b/src/main/java/me/earthme/luminol/LuminolConfig.java
index 6626961d57fff6475ec82da57941d8dad6455bc6..a535ab9432010b15dfb07f206d15c285d1f76597 100644
index ec372d91ed60534ecbe0d2b28ba3b9abda800683..3f560bd27c5a43c5681b50492e04290dda51f37e 100644
--- a/src/main/java/me/earthme/luminol/LuminolConfig.java
+++ b/src/main/java/me/earthme/luminol/LuminolConfig.java
@@ -41,6 +41,8 @@ public class LuminolConfig {
@@ -40,6 +40,8 @@ public class LuminolConfig {
public static boolean enableVoidTrading = false;
public static boolean allowIncorrectTripwireUpdating = false;
public static boolean useVanillaRandomSource = false;
@@ -17,7 +17,7 @@ index 6626961d57fff6475ec82da57941d8dad6455bc6..a535ab9432010b15dfb07f206d15c285
public static RegionFileFormat regionFormatName = RegionFileFormat.ANVIL;
public static int regionFormatLinearCompressionLevel = 1;
@@ -161,6 +163,8 @@ public class LuminolConfig {
@@ -159,6 +161,8 @@ public class LuminolConfig {
enableVoidTrading = get("fixes.enable_void_trading",enableVoidTrading);
allowIncorrectTripwireUpdating = get("fixes.allow_incorrect_trip_wire_updaing",allowIncorrectTripwireUpdating);
useVanillaRandomSource = get("fixes.use_vanilla_random_source",useVanillaRandomSource,"RNG feature related");
@@ -27,7 +27,7 @@ index 6626961d57fff6475ec82da57941d8dad6455bc6..a535ab9432010b15dfb07f206d15c285
regionFormatName = RegionFileFormat.fromString(get("save.region-format.format", regionFormatName.name()));
if (regionFormatName.equals(RegionFileFormat.INVALID)) {
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 4cdb0e62a3027ae292e1d818e1a06a47496676af..235f96fd0f2c74356f986017f514d2805f88ef46 100644
index b1a17c730939f39ba81209a368c215c236f203b0..ea7fe58bd68895dedeed2df1a7f1276d7fe5b70d 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -7,6 +7,7 @@ import com.google.common.collect.Lists;
@@ -38,7 +38,7 @@ index 4cdb0e62a3027ae292e1d818e1a06a47496676af..235f96fd0f2c74356f986017f514d280
import it.unimi.dsi.fastutil.objects.Object2DoubleArrayMap;
import it.unimi.dsi.fastutil.objects.Object2DoubleMap;
import java.util.Arrays;
@@ -1094,9 +1095,39 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
@@ -1084,10 +1085,40 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
}
// Paper end - detailed watchdog information
@@ -47,6 +47,7 @@ index 4cdb0e62a3027ae292e1d818e1a06a47496676af..235f96fd0f2c74356f986017f514d280
+ //Luminol end
+
public void move(MoverType movementType, Vec3 movement) {
final Vec3 originalMovement = movement; // Paper - Expose pre-collision velocity
// Paper start - detailed watchdog information
io.papermc.paper.util.TickThread.ensureTickThread("Cannot move an entity off-main");
+ //Luminol start - Fix high position moving

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Sparkly Paper Optimize canSee checks
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
index d01443026d0d85e017464cdd46d08f37386d46ef..7272b1d5c314465c22df7ffa83a0675e4b1d34d3 100644
index 5fc083b58f6f120d234513c7c36999f034e1d869..369b0eabe2313eea0ce71553baa965bc71794274 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -1422,7 +1422,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1408,7 +1408,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
// Folia end - region threading
// CraftBukkit start - respect vanish API
@@ -18,7 +18,7 @@ index d01443026d0d85e017464cdd46d08f37386d46ef..7272b1d5c314465c22df7ffa83a0675e
}
// CraftBukkit end
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index c41537b78922f85e8c7099be0b38f341b8c531a6..9481456671ee7cb880b4f1a83a41d3d4f7e7bc7f 100644
index 91678602a5509b7ee0ff792d1a626e271b7db6b9..be0e51bfb6d083781693edf3644d637aa07c551f 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -181,7 +181,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -30,7 +30,7 @@ index c41537b78922f85e8c7099be0b38f341b8c531a6..9481456671ee7cb880b4f1a83a41d3d4
private final Set<UUID> unlistedEntities = new HashSet<>(); // Paper - Add Listing API for Player
private static final WeakHashMap<Plugin, WeakReference<Plugin>> pluginWeakReferences = new WeakHashMap<>();
private int hash = 0;
@@ -2143,9 +2143,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2116,9 +2116,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public boolean canSee(org.bukkit.entity.Entity entity) {

View File

@@ -1,14 +1,14 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Sun, 28 Jan 2024 09:29:26 +0000
Date: Tue, 6 Feb 2024 04:21:05 +0000
Subject: [PATCH] Gale Skip entity move if movement is zero
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 235f96fd0f2c74356f986017f514d2805f88ef46..0b90847929c3c89ba5b8ac578f181c67d5209957 100644
index ea7fe58bd68895dedeed2df1a7f1276d7fe5b70d..2016547a88e5f8c0a7f1913c74b22e04cfa9b089 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -320,6 +320,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
@@ -319,6 +319,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
public float yRotO;
public float xRotO;
private AABB bb;
@@ -16,7 +16,7 @@ index 235f96fd0f2c74356f986017f514d2805f88ef46..0b90847929c3c89ba5b8ac578f181c67
public boolean onGround;
public boolean horizontalCollision;
public boolean verticalCollision;
@@ -1100,6 +1101,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
@@ -1090,6 +1091,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
//Luminol end
public void move(MoverType movementType, Vec3 movement) {
@@ -25,10 +25,10 @@ index 235f96fd0f2c74356f986017f514d2805f88ef46..0b90847929c3c89ba5b8ac578f181c67
+ return;
+ }
+ // Gale end - VMP - skip entity move if movement is zero
final Vec3 originalMovement = movement; // Paper - Expose pre-collision velocity
// Paper start - detailed watchdog information
io.papermc.paper.util.TickThread.ensureTickThread("Cannot move an entity off-main");
//Luminol start - Fix high position moving
@@ -4938,6 +4944,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
@@ -4924,6 +4930,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
}
public final void setBoundingBox(AABB boundingBox) {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Gale Check frozen ticks before landing block
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 00990c41986ec717a318f756e1a73a0a94a82b39..be4b3fe916b72a5aec61f70e8776e8ae91d19a6e 100644
index dc80c44f52bb7acaf7d90e1c6f01c4de981f69b4..623304ea71a30d967e5ae3fa4c17f02fe305d37b 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -590,11 +590,10 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -589,11 +589,10 @@ public abstract class LivingEntity extends Entity implements Attackable {
}
protected void tryAddFrost() {
@@ -21,7 +21,7 @@ index 00990c41986ec717a318f756e1a73a0a94a82b39..be4b3fe916b72a5aec61f70e8776e8ae
if (attributemodifiable == null) {
return;
@@ -604,7 +603,6 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -603,7 +602,6 @@ public abstract class LivingEntity extends Entity implements Attackable {
attributemodifiable.addTransientModifier(new AttributeModifier(LivingEntity.SPEED_MODIFIER_POWDER_SNOW_UUID, "Powder snow slow", (double) f, AttributeModifier.Operation.ADDITION));
}

View File

@@ -99,7 +99,7 @@ public class Main {
```
diff --git a/src/main/java/io/papermc/paper/util/MCUtil.java b/src/main/java/io/papermc/paper/util/MCUtil.java
index 8ec8084195e0400de76460b445012d605fe05724..e8fed9c43073eb443af289c524935cfaccf8e12c 100644
index cb22cac2b8c4eaf705b76fd4a9d8b82fb8eb0140..f24132f5ab6362829e88559304173bd9a259caa3 100644
--- a/src/main/java/io/papermc/paper/util/MCUtil.java
+++ b/src/main/java/io/papermc/paper/util/MCUtil.java
@@ -165,13 +165,11 @@ public final class MCUtil {

View File

@@ -1,11 +1,11 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Mon, 29 Jan 2024 13:29:14 +0000
Date: Tue, 6 Feb 2024 04:26:57 +0000
Subject: [PATCH] Leaves fakeplayer support
diff --git a/src/main/java/io/papermc/paper/threadedregions/RegionShutdownThread.java b/src/main/java/io/papermc/paper/threadedregions/RegionShutdownThread.java
index 2b48833023771fa965f131890ade98e9da3f5976..75c16116f684d434c1aa554d8ed13a638751772a 100644
index 3f3fd8b1881106f893ffb677272e50d77cbb6626..60be05f46fc19c8dc69afd8f1eb9dc7a6ae8e01d 100644
--- a/src/main/java/io/papermc/paper/threadedregions/RegionShutdownThread.java
+++ b/src/main/java/io/papermc/paper/threadedregions/RegionShutdownThread.java
@@ -124,6 +124,8 @@ public final class RegionShutdownThread extends TickThread {
@@ -18,10 +18,10 @@ index 2b48833023771fa965f131890ade98e9da3f5976..75c16116f684d434c1aa554d8ed13a63
LOGGER.info("Awaiting scheduler termination for 60s");
if (TickRegions.getScheduler().halt(true, TimeUnit.SECONDS.toNanos(60L))) {
diff --git a/src/main/java/me/earthme/luminol/LuminolConfig.java b/src/main/java/me/earthme/luminol/LuminolConfig.java
index 6f5ddab2f98f71501af9a07f98ab7146f980997f..c6cce369373fbc46fb4f87a3b2f9d8ba827264f1 100644
index 3f560bd27c5a43c5681b50492e04290dda51f37e..6d2318f31a38d5111679ab1bc8f7a474d44f86ed 100644
--- a/src/main/java/me/earthme/luminol/LuminolConfig.java
+++ b/src/main/java/me/earthme/luminol/LuminolConfig.java
@@ -75,7 +75,17 @@ public class LuminolConfig {
@@ -73,7 +73,17 @@ public class LuminolConfig {
public static boolean syncmaticaProtocol = false;
public static boolean syncmaticaQuota = false;
public static int syncmaticaQuotaLimit = 32767;
@@ -40,7 +40,7 @@ index 6f5ddab2f98f71501af9a07f98ab7146f980997f..c6cce369373fbc46fb4f87a3b2f9d8ba
public static void init() throws IOException {
@@ -92,6 +102,23 @@ public class LuminolConfig {
@@ -90,6 +100,23 @@ public class LuminolConfig {
MAIN_CONFIG.save();
}
@@ -64,7 +64,7 @@ index 6f5ddab2f98f71501af9a07f98ab7146f980997f..c6cce369373fbc46fb4f87a3b2f9d8ba
public static void initTpsbar(){
if (tpsbarEnabled){
GlobalServerTpsBar.init();
@@ -216,6 +243,7 @@ public class LuminolConfig {
@@ -212,6 +239,7 @@ public class LuminolConfig {
syncmaticaProtocol = get("gameplay.syncmatica_protocol",syncmaticaProtocol);
syncmaticaQuota = get("gameplay.syncmatica_protocol_quota",syncmaticaQuota);
syncmaticaQuotaLimit = get("gameplay.syncmatica_protocol_quota_limit",syncmaticaQuotaLimit);
@@ -73,7 +73,7 @@ index 6f5ddab2f98f71501af9a07f98ab7146f980997f..c6cce369373fbc46fb4f87a3b2f9d8ba
public static <T> T get(String key,T def){
diff --git a/src/main/java/net/minecraft/advancements/critereon/SimpleCriterionTrigger.java b/src/main/java/net/minecraft/advancements/critereon/SimpleCriterionTrigger.java
index 00bf770559d9c628119658cb027eb0b970c04e1b..7284df7d0d4242f55ecd63df2c137ec3e7c2f25c 100644
index a327973e37b5b8d4e15683ef24548482ac3dc3d5..65d82963d611a6dbbd7ca58d363854e4fad59230 100644
--- a/src/main/java/net/minecraft/advancements/critereon/SimpleCriterionTrigger.java
+++ b/src/main/java/net/minecraft/advancements/critereon/SimpleCriterionTrigger.java
@@ -42,6 +42,7 @@ public abstract class SimpleCriterionTrigger<T extends SimpleCriterionTrigger.Si
@@ -85,7 +85,7 @@ index 00bf770559d9c628119658cb027eb0b970c04e1b..7284df7d0d4242f55ecd63df2c137ec3
Set<CriterionTrigger.Listener<T>> set = (Set) playerAdvancements.criterionData.get(this); // Paper - fix AdvancementDataPlayer leak
if (set != null && !set.isEmpty()) {
diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java
index 43f7097599dc82cd8e9fedebe4ae2e83be068c5c..a4ee6ea0166ee6950d7d8db6eab33772979f7d5c 100644
index 14c82f0903d08e289cec49d095af986b83b500aa..f8e9d43336cc2ff26ad0c47479ce07c5e5eda5c2 100644
--- a/src/main/java/net/minecraft/network/Connection.java
+++ b/src/main/java/net/minecraft/network/Connection.java
@@ -365,6 +365,14 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> {
@@ -104,19 +104,19 @@ index 43f7097599dc82cd8e9fedebe4ae2e83be068c5c..a4ee6ea0166ee6950d7d8db6eab33772
if (this.packetListener != null) {
throw new IllegalStateException("Listener already set");
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index f53c689db8f330708d1ad683951b113bca11a139..788aa9c481b159c60f0b5eebbe1ba3d77e422d24 100644
index 76522b9fd7c0aaa17ab6df2183dfb30da2a35a68..e491559873b2d4f8da2e90b85fe070c8b93d90f3 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -714,6 +714,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -712,6 +712,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
// Paper end
// Paper end - Configurable player collision
+ top.leavesmc.leaves.bot.ServerBot.loadAllBot(); // Leaves - load resident bot
+
this.server.enablePlugins(org.bukkit.plugin.PluginLoadOrder.POSTWORLD);
this.server.getPluginManager().callEvent(new ServerLoadEvent(ServerLoadEvent.LoadType.STARTUP));
this.connection.acceptConnections();
@@ -1007,6 +1009,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1005,6 +1007,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Folia end - region threading
public void stopServer() {
@@ -125,7 +125,7 @@ index f53c689db8f330708d1ad683951b113bca11a139..788aa9c481b159c60f0b5eebbe1ba3d7
// halt scheduler
// don't wait, we may be on a scheduler thread
diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java
index f655e0ae4a287886d0291cd0089bad2000249d0f..2694f899241ad8ce06d3bcba78550af5626561ce 100644
index 24e5993b281448734eb67c7a8439a349bbf9fd72..677c4d5360509f212ccbe4ff7418e0e7ee1fbb59 100644
--- a/src/main/java/net/minecraft/server/PlayerAdvancements.java
+++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java
@@ -221,6 +221,11 @@ public class PlayerAdvancements {
@@ -141,10 +141,10 @@ index f655e0ae4a287886d0291cd0089bad2000249d0f..2694f899241ad8ce06d3bcba78550af5
AdvancementProgress advancementprogress = this.getOrStartProgress(advancement);
boolean flag1 = advancementprogress.isDone();
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
index 7272b1d5c314465c22df7ffa83a0675e4b1d34d3..85d99fbe5ff8e2c6ae93a15f66ef9524ea1a748b 100644
index 369b0eabe2313eea0ce71553baa965bc71794274..2740c40914850057403fb8cc1fe91a1889c4efaa 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -1436,6 +1436,13 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1422,6 +1422,13 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
}
} else if (this.seenBy.remove(player.connection)) {
this.serverEntity.removePairing(player);
@@ -159,7 +159,7 @@ index 7272b1d5c314465c22df7ffa83a0675e4b1d34d3..85d99fbe5ff8e2c6ae93a15f66ef9524
}
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 47fbda55317e27d9f5fac583f529ae1215f43052..7cc601e86e90a6b893fb9d76af0161531e9408d7 100644
index fe37f189809c3d4614d816d17f198f6bc3ff2782..3baf7f920334931dd53cd174c462c2e52d315ced 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -189,6 +189,7 @@ import org.bukkit.event.player.PlayerTeleportEvent;
@@ -170,7 +170,7 @@ index 47fbda55317e27d9f5fac583f529ae1215f43052..7cc601e86e90a6b893fb9d76af016153
// CraftBukkit end
public class ServerPlayer extends Player {
@@ -833,21 +834,25 @@ public class ServerPlayer extends Player {
@@ -833,21 +834,26 @@ public class ServerPlayer extends Player {
--this.invulnerableTime;
}
@@ -178,11 +178,6 @@ index 47fbda55317e27d9f5fac583f529ae1215f43052..7cc601e86e90a6b893fb9d76af016153
- if (--containerUpdateDelay <= 0) {
- this.containerMenu.broadcastChanges();
- containerUpdateDelay = this.level().paperConfig().tickRates.containerUpdate;
- }
- // Paper end
- if (!this.level().isClientSide && this.containerMenu != this.inventoryMenu && (this.isImmobile() || !this.containerMenu.stillValid(this))) { // Paper - auto close while frozen
- this.closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason.CANT_USE); // Paper
- this.containerMenu = this.inventoryMenu;
+ // Leaves start - skip bot
+ if (!(this instanceof ServerBot)) {
+ // Paper start - Configurable container update tick rate
@@ -190,11 +185,16 @@ index 47fbda55317e27d9f5fac583f529ae1215f43052..7cc601e86e90a6b893fb9d76af016153
+ this.containerMenu.broadcastChanges();
+ containerUpdateDelay = this.level().paperConfig().tickRates.containerUpdate;
+ }
+ // Paper end
+ if (!this.level().isClientSide && this.containerMenu != this.inventoryMenu && (this.isImmobile() || !this.containerMenu.stillValid(this))) { // Paper - auto close while frozen
+ this.closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason.CANT_USE); // Paper
+ // Paper end - Configurable container update tick rate
+ if (!this.level().isClientSide && this.containerMenu != this.inventoryMenu && (this.isImmobile() || !this.containerMenu.stillValid(this))) { // Paper - Prevent opening inventories when frozen
+ this.closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason.CANT_USE); // Paper - Inventory close reason
+ this.containerMenu = this.inventoryMenu;
+ }
+
}
- // Paper end - Configurable container update tick rate
- if (!this.level().isClientSide && this.containerMenu != this.inventoryMenu && (this.isImmobile() || !this.containerMenu.stillValid(this))) { // Paper - Prevent opening inventories when frozen
- this.closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason.CANT_USE); // Paper - Inventory close reason
- this.containerMenu = this.inventoryMenu;
}
+ // Leaves end - skip bot
@@ -206,7 +206,7 @@ index 47fbda55317e27d9f5fac583f529ae1215f43052..7cc601e86e90a6b893fb9d76af016153
if (this.levitationStartPos != null) {
CriteriaTriggers.LEVITATION.trigger(this, this.levitationStartPos, this.tickCount - this.levitationStartTime);
}
@@ -1072,7 +1077,7 @@ public class ServerPlayer extends Player {
@@ -1072,7 +1078,7 @@ public class ServerPlayer extends Player {
List<DefaultDrop> loot = new java.util.ArrayList<>(this.getInventory().getContainerSize()); // Paper - Restore vanilla drops behavior
boolean keepInventory = this.level().getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) || this.isSpectator();
@@ -215,7 +215,7 @@ index 47fbda55317e27d9f5fac583f529ae1215f43052..7cc601e86e90a6b893fb9d76af016153
for (ItemStack item : this.getInventory().getContents()) {
if (!item.isEmpty() && !EnchantmentHelper.hasVanishingCurse(item)) {
loot.add(new DefaultDrop(item, stack -> this.drop(stack, true, false, false))); // Paper - Restore vanilla drops behavior; drop function taken from Inventory#dropAll (don't fire drop event)
@@ -1733,6 +1738,13 @@ public class ServerPlayer extends Player {
@@ -1733,6 +1739,13 @@ public class ServerPlayer extends Player {
this.lastSentHealth = -1.0F;
this.lastSentFood = -1;
@@ -230,10 +230,10 @@ index 47fbda55317e27d9f5fac583f529ae1215f43052..7cc601e86e90a6b893fb9d76af016153
PlayerChangedWorldEvent changeEvent = new PlayerChangedWorldEvent(this.getBukkitEntity(), worldserver1.getWorld());
this.level().getCraftServer().getPluginManager().callEvent(changeEvent);
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index dfeaf0755374fe84367238cc5153bf5326299fbe..835f51aa807c09a85b7b1e81f9b616f3f3ae90f4 100644
index 7dbd4dad666a0d43e9116f4e3d56faaec427112b..cb4acce1c458331f7e1db423a446f8b337bdfe57 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -298,7 +298,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -297,7 +297,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
public ServerGamePacketListenerImpl(MinecraftServer server, Connection connection, ServerPlayer player, CommonListenerCookie clientData) {
super(server, connection, clientData, player); // CraftBukkit
this.chunkSender = new PlayerChunkSender(connection.isMemoryConnection());
@@ -249,7 +249,7 @@ index dfeaf0755374fe84367238cc5153bf5326299fbe..835f51aa807c09a85b7b1e81f9b616f3
player.connection = this;
player.getTextFilter().join();
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 8d776e633f6b61b06c3ed1dcfcd86141a9feab8c..a232d24a399daec57ac73eb4bfe480a405ada523 100644
index c8c72cefba44ce8587a9ae22f5a87d3199f8ca5f..f3b71d9761d4ef1a6b9a8d07cd46ea921235efe0 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -121,6 +121,8 @@ import org.bukkit.event.player.PlayerRespawnEvent.RespawnReason;
@@ -283,9 +283,9 @@ index 8d776e633f6b61b06c3ed1dcfcd86141a9feab8c..a232d24a399daec57ac73eb4bfe480a4
final net.kyori.adventure.text.Component jm = playerJoinEvent.joinMessage();
if (jm != null && !jm.equals(net.kyori.adventure.text.Component.empty())) { // Paper - Adventure
@@ -1090,6 +1107,13 @@ public abstract class PlayerList {
@@ -1088,6 +1105,13 @@ public abstract class PlayerList {
}
// Paper end
// Paper end - Add PlayerPostRespawnEvent
+ // Leaves start - bot support
+ if (me.earthme.luminol.LuminolConfig.fakeplayerSupport) {
@@ -297,7 +297,7 @@ index 8d776e633f6b61b06c3ed1dcfcd86141a9feab8c..a232d24a399daec57ac73eb4bfe480a4
// CraftBukkit end
return entityplayer1;
}
@@ -1205,12 +1229,17 @@ public abstract class PlayerList {
@@ -1203,12 +1227,17 @@ public abstract class PlayerList {
public String[] getPlayerNamesArray() {
List<ServerPlayer> players = new java.util.ArrayList<>(this.players); // Folia start - region threading
@@ -316,7 +316,7 @@ index 8d776e633f6b61b06c3ed1dcfcd86141a9feab8c..a232d24a399daec57ac73eb4bfe480a4
return astring;
}
@@ -1721,4 +1750,16 @@ public abstract class PlayerList {
@@ -1719,4 +1748,16 @@ public abstract class PlayerList {
public boolean isAllowCheatsForAllPlayers() {
return this.allowCheatsForAllPlayers;
}
@@ -334,10 +334,10 @@ index 8d776e633f6b61b06c3ed1dcfcd86141a9feab8c..a232d24a399daec57ac73eb4bfe480a4
+ // Leaves end - fakeplayer support
}
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 0b90847929c3c89ba5b8ac578f181c67d5209957..00574a968b358138c5f97659c17bfd964d2d4930 100644
index 2016547a88e5f8c0a7f1913c74b22e04cfa9b089..11e992e88dc9e7a268535d356eab1e60db57b7ac 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -1508,7 +1508,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
@@ -1499,7 +1499,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
return offsetFactor;
}
@@ -347,7 +347,7 @@ index 0b90847929c3c89ba5b8ac578f181c67d5209957..00574a968b358138c5f97659c17bfd96
final boolean xZero = movement.x == 0.0;
final boolean yZero = movement.y == 0.0;
diff --git a/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java b/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
index 67e4a0eea8312cf6389a374c12e5fd054ec6284b..f073828656012c0497bb8748b286d7fa0e30d1f6 100644
index 702949d3d4c46222d2ef8227a559acd54d399bc0..7eb451df26f7bb7886e0392df485844558cca94f 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
@@ -61,7 +61,7 @@ public class FishingHook extends Projectile {
@@ -397,7 +397,7 @@ index 48f634a7521d31c1e9dfd3cfc83139d428dbd37a..7cef5c518207752f7e1bfdd5bbec55fe
FeatureFlagSet featureflagset = player.level().enabledFeatures();
diff --git a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java
index bded2c58c6b44b918d89d8a18e3af632c2b9e18d..b82ccd618b013a7f45711c6402ee0a6eaaf3ac0c 100644
index b52455178290dd27478da4c062863562942ae2ba..1bc7a0265e3f55c4cdf051af76775876ae2c7b20 100644
--- a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java
+++ b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java
@@ -70,6 +70,11 @@ public class PhantomSpawner implements CustomSpawner {
@@ -413,7 +413,7 @@ index bded2c58c6b44b918d89d8a18e3af632c2b9e18d..b82ccd618b013a7f45711c6402ee0a6e
if (randomsource.nextInt(j) >= world.paperConfig().entities.behavior.playerInsomniaStartTicks) { // Paper - Ability to control player's insomnia and phantoms
BlockPos blockposition1 = blockposition.above(20 + randomsource.nextInt(15)).east(-10 + randomsource.nextInt(21)).south(-10 + randomsource.nextInt(21));
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 39099a6fcb431faf329fff2774988cf64189b43f..52d7f6db00ee7b6361d59c8eeadafb292255695f 100644
index 23cd0290f8939aec85b5699feb6ac7f12bde14a7..ad339a085f8e5fc86cfe4c4064f56080adc8427d 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -259,6 +259,7 @@ import org.yaml.snakeyaml.constructor.SafeConstructor;
@@ -432,12 +432,12 @@ index 39099a6fcb431faf329fff2774988cf64189b43f..52d7f6db00ee7b6361d59c8eeadafb29
// Paper start - Folia region threading API
private final io.papermc.paper.threadedregions.scheduler.FoliaRegionScheduler regionizedScheduler = new io.papermc.paper.threadedregions.scheduler.FoliaRegionScheduler(); // Folia - region threading
@@ -3279,4 +3281,11 @@ public final class CraftServer implements Server {
@@ -3274,4 +3276,11 @@ public final class CraftServer implements Server {
}
// Paper end
+
+ // Leaves start - Bot API
+ //Leaves start - Bot API
+ @Override
+ public CraftBotManager getBotManager() {
+ return botManager;
@@ -445,7 +445,7 @@ index 39099a6fcb431faf329fff2774988cf64189b43f..52d7f6db00ee7b6361d59c8eeadafb29
+ // Leaves end - Bot API
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index 39cb7a0a58ea24f48f7e621f696f0dbfea229ea3..8c55ad871a7155436745630ed1bc18d2758a3aec 100644
index 5adbfb278aed3c32b6d4992b8932cc3dafd8f9cc..1aba799113d9848256ed83a44c904d8a59b2e114 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -54,6 +54,8 @@ import org.bukkit.plugin.Plugin;

View File

@@ -17,10 +17,10 @@ index 1bdeb0e9d0c04509d7ed4003f6b79c806dc55eed..c0199b93a69a2d0b99d7c61a1bdb55fc
// Paper end
implementation("org.apache.logging.log4j:log4j-iostreams:2.19.0") // Paper - remove exclusion
diff --git a/src/main/java/me/earthme/luminol/LuminolConfig.java b/src/main/java/me/earthme/luminol/LuminolConfig.java
index c6cce369373fbc46fb4f87a3b2f9d8ba827264f1..a83e7c5bde1ea4ca152e4581c7f60e149951f78d 100644
index 6d2318f31a38d5111679ab1bc8f7a474d44f86ed..39b089fa8e347f5efba3be071164d831d4dc95c2 100644
--- a/src/main/java/me/earthme/luminol/LuminolConfig.java
+++ b/src/main/java/me/earthme/luminol/LuminolConfig.java
@@ -35,6 +35,7 @@ public class LuminolConfig {
@@ -34,6 +34,7 @@ public class LuminolConfig {
public static boolean disableUsernameCheck = false;
public static boolean disableOfflineModeWarning = false;
public static boolean fixSpectorTeleportFolia = false;
@@ -28,7 +28,7 @@ index c6cce369373fbc46fb4f87a3b2f9d8ba827264f1..a83e7c5bde1ea4ca152e4581c7f60e14
public static boolean safeTeleportation = true;
public static boolean enableSandDuping = false;
@@ -180,6 +181,7 @@ public class LuminolConfig {
@@ -178,6 +179,7 @@ public class LuminolConfig {
disableUsernameCheck = get("misc.disable_username_check",disableUsernameCheck,"Disable username check that can accept usernames with other characters(such as Chinese).Not recommended to use");
fixSpectorTeleportFolia = get("misc.fix_folia_spector_teleport",fixSpectorTeleportFolia);
disableOfflineModeWarning = get("misc.disable_offline_mode_warning",disableOfflineModeWarning);
@@ -37,7 +37,7 @@ index c6cce369373fbc46fb4f87a3b2f9d8ba827264f1..a83e7c5bde1ea4ca152e4581c7f60e14
if (tpsbarEnabled){
initTpsbar();
diff --git a/src/main/java/net/minecraft/server/network/ServerConnectionListener.java b/src/main/java/net/minecraft/server/network/ServerConnectionListener.java
index 35bf160d10b56fb84d4cb845b61c1d61337e48ca..4de318f879aae2bf2859b19522111444a0f27550 100644
index 6e95017f4c36208abdf344e3b7d55efe2d5b4e10..96237f8665d58be4fd86524daa0160cc7f9f5c1f 100644
--- a/src/main/java/net/minecraft/server/network/ServerConnectionListener.java
+++ b/src/main/java/net/minecraft/server/network/ServerConnectionListener.java
@@ -20,9 +20,11 @@ import io.netty.channel.epoll.EpollServerSocketChannel;
@@ -64,7 +64,7 @@ index 35bf160d10b56fb84d4cb845b61c1d61337e48ca..4de318f879aae2bf2859b19522111444
import net.minecraft.network.BandwidthDebugMonitor;
@@ -73,6 +77,10 @@ public class ServerConnectionListener {
}
// Paper end
// Paper end - prevent blocking on adding a new connection while the server is ticking
+ //Luminol start - io_uring support
+ public static final Supplier<IOUringEventLoopGroup> SERVER_IO_URING_WORKER_GROUP = Suppliers.memoize(() -> new IOUringEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty IO_URING Server IO #%d").setDaemon(true).setUncaughtExceptionHandler(new net.minecraft.DefaultUncaughtExceptionHandlerWithName(LOGGER)).build()));

View File

@@ -1,15 +1,15 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Thu, 1 Feb 2024 09:41:59 +0000
Date: Tue, 6 Feb 2024 04:33:45 +0000
Subject: [PATCH] Prevent teleportAsync calling during moving event being
handled
diff --git a/src/main/java/me/earthme/luminol/LuminolConfig.java b/src/main/java/me/earthme/luminol/LuminolConfig.java
index a83e7c5bde1ea4ca152e4581c7f60e149951f78d..b94af7029256f68c1092e3e18221f4a8417d4f89 100644
index 39b089fa8e347f5efba3be071164d831d4dc95c2..9f0a45c1fba3e14c15bbb33f5f96b8674496de29 100644
--- a/src/main/java/me/earthme/luminol/LuminolConfig.java
+++ b/src/main/java/me/earthme/luminol/LuminolConfig.java
@@ -44,6 +44,8 @@ public class LuminolConfig {
@@ -43,6 +43,8 @@ public class LuminolConfig {
public static boolean useVanillaRandomSource = false;
public static boolean fixLargePosMoving = false;
public static boolean warnOnLargeMovingDetected = true;
@@ -18,7 +18,7 @@ index a83e7c5bde1ea4ca152e4581c7f60e149951f78d..b94af7029256f68c1092e3e18221f4a8
public static RegionFileFormat regionFormatName = RegionFileFormat.ANVIL;
public static int regionFormatLinearCompressionLevel = 1;
@@ -194,6 +196,8 @@ public class LuminolConfig {
@@ -192,6 +194,8 @@ public class LuminolConfig {
useVanillaRandomSource = get("fixes.use_vanilla_random_source",useVanillaRandomSource,"RNG feature related");
fixLargePosMoving = get("fixes.fix_large_pos_moving", fixLargePosMoving,"Fix an entity moving issue on folia which is not fixed yet");
warnOnLargeMovingDetected = get("fixes.warn_on_large_pos_moving",warnOnLargeMovingDetected);
@@ -28,7 +28,7 @@ index a83e7c5bde1ea4ca152e4581c7f60e149951f78d..b94af7029256f68c1092e3e18221f4a8
regionFormatName = RegionFileFormat.fromString(get("save.region-format.format", regionFormatName.name()));
if (regionFormatName.equals(RegionFileFormat.INVALID)) {
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 7cc601e86e90a6b893fb9d76af0161531e9408d7..088422dabe469f62f1d3d136d5ac104582fdc0f2 100644
index 3baf7f920334931dd53cd174c462c2e52d315ced..3dd6f29e55b02939db8b4509967cba685c83ae18 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -334,6 +334,10 @@ public class ServerPlayer extends Player {
@@ -43,10 +43,10 @@ index 7cc601e86e90a6b893fb9d76af0161531e9408d7..088422dabe469f62f1d3d136d5ac1045
super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile);
this.chatVisibility = ChatVisiblity.FULL;
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 835f51aa807c09a85b7b1e81f9b616f3f3ae90f4..48da486fc85e3220cb5c91ae14490f8ac51d0a88 100644
index cb4acce1c458331f7e1db423a446f8b337bdfe57..c4521696c589c56f325036db34e1d452a97cb326 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -685,7 +685,9 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -684,7 +684,9 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
Location oldTo = to.clone();
PlayerMoveEvent event = new PlayerMoveEvent(player, from, to);
@@ -56,7 +56,7 @@ index 835f51aa807c09a85b7b1e81f9b616f3f3ae90f4..48da486fc85e3220cb5c91ae14490f8a
// If the event is cancelled we move the player back to their old location.
if (event.isCancelled()) {
@@ -1619,7 +1621,9 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -1634,7 +1636,9 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
Location oldTo = to.clone();
PlayerMoveEvent event = new PlayerMoveEvent(player, from, to);
@@ -67,10 +67,10 @@ index 835f51aa807c09a85b7b1e81f9b616f3f3ae90f4..48da486fc85e3220cb5c91ae14490f8a
// If the event is cancelled we move the player back to their old location.
if (event.isCancelled()) {
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 00574a968b358138c5f97659c17bfd964d2d4930..64737ec024b02882ebb727fd80532e9b8af666fc 100644
index 11e992e88dc9e7a268535d356eab1e60db57b7ac..0b3d1b18b2be65ba662f65687b06771de3bf6e54 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -4004,6 +4004,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
@@ -3992,6 +3992,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
java.util.function.Consumer<Entity> teleportComplete) {
io.papermc.paper.util.TickThread.ensureTickThread(this, "Cannot teleport entity async");
@@ -133,7 +133,7 @@ index d514ec1e4cbdc579c3a61533998437903afdc8b6..c547376967360402d22657d25e110036
// CraftBukkit end
if (this.getMinecartType() == AbstractMinecart.Type.RIDEABLE && this.getDeltaMovement().horizontalDistanceSqr() > 0.01D) {
diff --git a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
index a849f88f015cee3cb1f9d84e44708dd3a45c27ac..85534b9cd689143e5e978c1efca85d0e79331144 100644
index db6aa75d642f4a7258f197933671907faf79c8f2..b7c792f75dda1c62ee3730b8204c347848710a9c 100644
--- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
+++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
@@ -2,6 +2,8 @@ package net.minecraft.world.entity.vehicle;