Skip to content

Commit c145fca

Browse files
committed
Fix UnsupportedOperationException in Folia (fixes #842)
1 parent b0856b5 commit c145fca

2 files changed

Lines changed: 16 additions & 16 deletions

File tree

src/main/java/net/coreprotect/paper/listener/CopperGolemChestListener.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import net.coreprotect.config.Config;
3131
import net.coreprotect.config.ConfigHandler;
3232
import net.coreprotect.listener.player.InventoryChangeListener;
33+
import net.coreprotect.thread.Scheduler;
3334
import net.coreprotect.utility.ItemUtils;
3435

3536
public final class CopperGolemChestListener implements Listener {
@@ -322,11 +323,11 @@ private void unindexEmptySkip(TransactionKey containerKey, UUID golemId) {
322323
}
323324

324325
private void scheduleCloseFinalize(UUID golemId, OpenInteraction interaction, TransactionKey containerKey, int attempt) {
325-
plugin.getServer().getScheduler().runTaskLater(plugin, () -> finalizeContainerClose(golemId, interaction, containerKey, attempt), CLOSE_FINALIZE_DELAY_TICKS);
326+
Scheduler.scheduleSyncDelayedTask(plugin, () -> finalizeContainerClose(golemId, interaction, containerKey, attempt), interaction.location, (int) CLOSE_FINALIZE_DELAY_TICKS);
326327
}
327328

328329
private void scheduleUntrackedCopperChestCloseFinalize(UUID golemId, Location containerLocation, Material containerType, int attempt) {
329-
plugin.getServer().getScheduler().runTaskLater(plugin, () -> finalizeUntrackedCopperChestClose(golemId, containerLocation, containerType, attempt), CLOSE_FINALIZE_DELAY_TICKS);
330+
Scheduler.scheduleSyncDelayedTask(plugin, () -> finalizeUntrackedCopperChestClose(golemId, containerLocation, containerType, attempt), containerLocation, (int) CLOSE_FINALIZE_DELAY_TICKS);
330331
}
331332

332333
private void finalizeContainerClose(UUID golemId, OpenInteraction interaction, TransactionKey containerKey, int attempt) {

src/main/java/net/coreprotect/thread/Scheduler.java

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import java.util.concurrent.TimeUnit;
44

5-
import org.bukkit.Bukkit;
65
import org.bukkit.Location;
76
import org.bukkit.entity.Entity;
87
import org.bukkit.scheduler.BukkitTask;
@@ -21,10 +20,10 @@ public static void scheduleSyncDelayedTask(CoreProtect plugin, Runnable task, Ob
2120
if (regionData instanceof Location) {
2221
Location location = (Location) regionData;
2322
if (delay == 0) {
24-
Bukkit.getServer().getRegionScheduler().run(plugin, location, value -> task.run());
23+
plugin.getServer().getRegionScheduler().run(plugin, location, value -> task.run());
2524
}
2625
else {
27-
Bukkit.getServer().getRegionScheduler().runDelayed(plugin, location, value -> task.run(), delay);
26+
plugin.getServer().getRegionScheduler().runDelayed(plugin, location, value -> task.run(), delay);
2827
}
2928
}
3029
else if (regionData instanceof Entity) {
@@ -38,19 +37,19 @@ else if (regionData instanceof Entity) {
3837
}
3938
else {
4039
if (delay == 0) {
41-
Bukkit.getServer().getGlobalRegionScheduler().run(plugin, value -> task.run());
40+
plugin.getServer().getGlobalRegionScheduler().run(plugin, value -> task.run());
4241
}
4342
else {
44-
Bukkit.getServer().getGlobalRegionScheduler().runDelayed(plugin, value -> task.run(), delay);
43+
plugin.getServer().getGlobalRegionScheduler().runDelayed(plugin, value -> task.run(), delay);
4544
}
4645
}
4746
}
4847
else {
4948
if (delay == 0) {
50-
Bukkit.getServer().getScheduler().runTask(plugin, task);
49+
plugin.getServer().getScheduler().runTask(plugin, task);
5150
}
5251
else {
53-
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, task, delay);
52+
plugin.getServer().getScheduler().runTaskLater(plugin, task, delay);
5453
}
5554
}
5655
}
@@ -59,36 +58,36 @@ public static Object scheduleSyncRepeatingTask(CoreProtect plugin, Runnable task
5958
if (ConfigHandler.isFolia) {
6059
if (regionData instanceof Location) {
6160
Location location = (Location) regionData;
62-
return Bukkit.getServer().getRegionScheduler().runAtFixedRate(plugin, location, value -> task.run(), delay, period);
61+
return plugin.getServer().getRegionScheduler().runAtFixedRate(plugin, location, value -> task.run(), delay, period);
6362
}
6463
else if (regionData instanceof Entity) {
6564
Entity entity = (Entity) regionData;
6665
return entity.getScheduler().runAtFixedRate(plugin, value -> task.run(), task, delay, period);
6766
}
6867
else {
69-
return Bukkit.getServer().getGlobalRegionScheduler().runAtFixedRate(plugin, value -> task.run(), delay, period);
68+
return plugin.getServer().getGlobalRegionScheduler().runAtFixedRate(plugin, value -> task.run(), delay, period);
7069
}
7170
}
7271
else {
73-
return Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, task, delay, period);
72+
return plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, task, delay, period);
7473
}
7574
}
7675

7776
public static void scheduleAsyncDelayedTask(CoreProtect plugin, Runnable task, int delay) {
7877
if (ConfigHandler.isFolia) {
7978
if (delay == 0) {
80-
Bukkit.getServer().getAsyncScheduler().runNow(plugin, value -> task.run());
79+
plugin.getServer().getAsyncScheduler().runNow(plugin, value -> task.run());
8180
}
8281
else {
83-
Bukkit.getServer().getAsyncScheduler().runDelayed(plugin, value -> task.run(), (delay * 50L), TimeUnit.MILLISECONDS);
82+
plugin.getServer().getAsyncScheduler().runDelayed(plugin, value -> task.run(), (delay * 50L), TimeUnit.MILLISECONDS);
8483
}
8584
}
8685
else {
8786
if (delay == 0) {
88-
Bukkit.getServer().getScheduler().runTaskAsynchronously(plugin, task);
87+
plugin.getServer().getScheduler().runTaskAsynchronously(plugin, task);
8988
}
9089
else {
91-
Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(plugin, task, delay);
90+
plugin.getServer().getScheduler().runTaskLaterAsynchronously(plugin, task, delay);
9291
}
9392
}
9493
}

0 commit comments

Comments
 (0)