Updated Upstream(Folia)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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());
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 )
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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 {
|
||||
@@ -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 {
|
||||
|
||||
@@ -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");
|
||||
@@ -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);
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
@@ -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
|
||||
@@ -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) {
|
||||
@@ -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) {
|
||||
@@ -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));
|
||||
}
|
||||
@@ -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 {
|
||||
@@ -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;
|
||||
@@ -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()));
|
||||
@@ -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;
|
||||
Reference in New Issue
Block a user