mirror of
https://github.com/PaperMC/Folia.git
synced 2025-04-19 02:29:21 +08:00
Compare commits
1 Commits
23ed0843b0
...
a0dc21b3d9
Author | SHA1 | Date | |
---|---|---|---|
|
a0dc21b3d9 |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,71 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
||||
Date: Thu, 20 Mar 2025 11:01:42 -0700
|
||||
Subject: [PATCH] fixup! Region Threading Base
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
index 6c2d9c9621f665412f1a8ccc41083fb0e3a07ed5..935ac76cec67ea661a392ff02396aa7aefd56268 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
@@ -3125,7 +3125,7 @@ public final class CraftServer implements Server {
|
||||
@Override
|
||||
public double[] getTPS() {
|
||||
// Folia start - region threading
|
||||
- ca.spottedleaf.concurrentutil.scheduler.SchedulerThreadPool.SchedulableTick task = io.papermc.paper.threadedregions.TickRegionScheduler.getCurrentTickingTask();
|
||||
+ io.papermc.paper.threadedregions.ScheduledTaskThreadPool.SchedulableTick task = io.papermc.paper.threadedregions.TickRegionScheduler.getCurrentTickingTask();
|
||||
if (task == null) {
|
||||
// might be on the shutdown thread, try retrieving the current region
|
||||
if (io.papermc.paper.threadedregions.TickRegionScheduler.getCurrentRegion() != null) {
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
index c9afcd46f6a1b74b82ed68f1df6188369cf53a73..d3832c3cf089ee78f542bcc6f0b9c6a760fae9eb 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
@@ -227,6 +227,47 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
private static final boolean DISABLE_CHANNEL_LIMIT = System.getProperty("paper.disableChannelLimit") != null; // Paper - add a flag to disable the channel limit
|
||||
private long lastSaveTime; // Paper - getLastPlayed replacement API
|
||||
|
||||
+ // Folia start - region threading
|
||||
+ private final ca.spottedleaf.concurrentutil.collection.MultiThreadedQueue<Runnable> packetQueue = new ca.spottedleaf.concurrentutil.collection.MultiThreadedQueue<>();
|
||||
+ // used only to notify tasks for packets
|
||||
+ private volatile io.papermc.paper.threadedregions.RegionizedWorldData lastRegion;
|
||||
+
|
||||
+ public void stopAcceptingPackets() {
|
||||
+ this.packetQueue.preventAdds();
|
||||
+ }
|
||||
+
|
||||
+ public void updateRegion(io.papermc.paper.threadedregions.RegionizedWorldData region) {
|
||||
+ this.lastRegion = region;
|
||||
+ if (region != null && this.hasPackets()) {
|
||||
+ region.regionData.setHasPackets();
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ public boolean hasPackets() {
|
||||
+ return !this.packetQueue.isEmpty();
|
||||
+ }
|
||||
+
|
||||
+ public boolean executeOnePacket() {
|
||||
+ final Runnable run = this.packetQueue.poll();
|
||||
+ if (run != null) {
|
||||
+ run.run();
|
||||
+ return true;
|
||||
+ }
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ public void addPacket(Runnable runnable) {
|
||||
+ if (!this.packetQueue.add(runnable)) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ io.papermc.paper.threadedregions.RegionizedWorldData region = this.lastRegion;
|
||||
+ if (region != null) {
|
||||
+ region.regionData.setHasPackets();
|
||||
+ }
|
||||
+ }
|
||||
+ // Folia end - region threading
|
||||
+
|
||||
public CraftPlayer(CraftServer server, ServerPlayer entity) {
|
||||
super(server, entity);
|
||||
|
Loading…
x
Reference in New Issue
Block a user