Skip to content

Commit beeaff2

Browse files
authored
Implement Folia Support (UniversalScheduler) (#245)
1 parent ae6e7b0 commit beeaff2

40 files changed

Lines changed: 1405 additions & 222 deletions

build.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
plugins {
22
java
3-
id("com.gradleup.shadow") version("8.3.5")
3+
id("com.gradleup.shadow") version("9.4.1")
44
id("com.github.ben-manes.versions") version("0.51.0")
55
}
66

@@ -21,6 +21,7 @@ repositories {
2121
maven("https://repo.momirealms.net/releases/")
2222
maven("https://repo.nexomc.com/releases/")
2323
maven("https://repo.oraxen.com/releases")
24+
maven("https://repo.papermc.io/repository/maven-public/")
2425
maven("https://jitpack.io")
2526
}
2627

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ adventure-minimessage = "4.24.0"
2222

2323
[libraries]
2424
# Compile only
25-
spigot = { module = "org.spigotmc:spigot-api", version.ref = "spigot" }
25+
spigot = { module = "io.papermc.paper:paper-api", version.ref = "spigot" }
2626
vault = { module = "com.github.milkbowl:VaultAPI", version.ref = "vault" }
2727
authlib = { module = "com.mojang:authlib", version.ref = "authlib" }
2828
headdb = { module = "com.arcaniax:HeadDatabase-API", version.ref = "headdb" }

gradle/wrapper/gradle-wrapper.jar

2.66 KB
Binary file not shown.

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

gradlew

Lines changed: 6 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gradlew.bat

Lines changed: 3 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/java/com/extendedclip/deluxemenus/DeluxeMenus.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
import com.extendedclip.deluxemenus.nbt.NbtProvider;
1616
import com.extendedclip.deluxemenus.persistentmeta.PersistentMetaHandler;
1717
import com.extendedclip.deluxemenus.placeholder.Expansion;
18+
import com.extendedclip.deluxemenus.scheduler.UniversalScheduler;
19+
import com.extendedclip.deluxemenus.scheduler.scheduling.schedulers.TaskScheduler;
1820
import com.extendedclip.deluxemenus.updatechecker.UpdateChecker;
1921
import com.extendedclip.deluxemenus.utils.DebugLevel;
2022
import com.extendedclip.deluxemenus.utils.Messages;
@@ -35,7 +37,13 @@
3537
import org.bukkit.plugin.java.JavaPlugin;
3638
import org.jetbrains.annotations.NotNull;
3739

38-
import java.util.*;
40+
import java.util.Arrays;
41+
import java.util.Collection;
42+
import java.util.HashMap;
43+
import java.util.Map;
44+
import java.util.Objects;
45+
import java.util.Optional;
46+
import java.util.TreeMap;
3947
import java.util.function.Function;
4048
import java.util.logging.Level;
4149
import java.util.stream.Collectors;
@@ -59,6 +67,9 @@ public class DeluxeMenus extends JavaPlugin {
5967
private final GeneralConfig generalConfig = new GeneralConfig(this);
6068
private DeluxeMenusConfig menuConfig;
6169

70+
@NotNull
71+
private final TaskScheduler scheduler = UniversalScheduler.getScheduler(this);
72+
6273
@Override
6374
public void onLoad() {
6475
if (NbtProvider.isAvailable()) {
@@ -113,7 +124,7 @@ public void onEnable() {
113124
public void onDisable() {
114125
Bukkit.getMessenger().unregisterOutgoingPluginChannel(this, "BungeeCord");
115126

116-
Bukkit.getScheduler().cancelTasks(this);
127+
scheduler.cancelTasks(this);
117128

118129
if (this.audiences != null) {
119130
this.audiences.close();
@@ -217,6 +228,10 @@ public GeneralConfig getGeneralConfig() {
217228
return generalConfig;
218229
}
219230

231+
public @NotNull TaskScheduler getScheduler() {
232+
return scheduler;
233+
}
234+
220235
private boolean hookIntoPlaceholderAPI() {
221236
final boolean canHook = Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null;
222237
if (!canHook) {

src/main/java/com/extendedclip/deluxemenus/action/ClickAction.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ public void setDelay(@Nullable final String delay) {
7676
this.delay = delay;
7777
}
7878

79-
8079
/**
8180
* Get the unparsed chance of this action.
8281
*

src/main/java/com/extendedclip/deluxemenus/action/ClickActionTask.java

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,32 @@
44
import com.extendedclip.deluxemenus.menu.Menu;
55
import com.extendedclip.deluxemenus.menu.MenuHolder;
66
import com.extendedclip.deluxemenus.persistentmeta.PersistentMetaHandler;
7-
import com.extendedclip.deluxemenus.utils.*;
7+
import com.extendedclip.deluxemenus.scheduler.UniversalRunnable;
8+
import com.extendedclip.deluxemenus.scheduler.scheduling.schedulers.TaskScheduler;
9+
import com.extendedclip.deluxemenus.utils.AdventureUtils;
10+
import com.extendedclip.deluxemenus.utils.DebugLevel;
11+
import com.extendedclip.deluxemenus.utils.ExpUtils;
12+
import com.extendedclip.deluxemenus.utils.SoundUtils;
13+
import com.extendedclip.deluxemenus.utils.StringUtils;
14+
import com.extendedclip.deluxemenus.utils.VersionHelper;
815
import net.kyori.adventure.text.minimessage.MiniMessage;
916
import org.bukkit.Bukkit;
1017
import org.bukkit.Sound;
1118
import org.bukkit.entity.Player;
12-
import org.bukkit.scheduler.BukkitRunnable;
1319
import org.jetbrains.annotations.NotNull;
1420

15-
import java.util.*;
21+
import java.util.Arrays;
22+
import java.util.HashMap;
23+
import java.util.List;
24+
import java.util.Map;
25+
import java.util.Optional;
26+
import java.util.UUID;
1627
import java.util.logging.Level;
1728

18-
public class ClickActionTask extends BukkitRunnable {
29+
public class ClickActionTask extends UniversalRunnable {
1930

2031
private final DeluxeMenus plugin;
32+
private final TaskScheduler scheduler;
2133
private final UUID uuid;
2234
private final ActionType actionType;
2335
private final String exec;
@@ -36,6 +48,7 @@ public ClickActionTask(
3648
final boolean parsePlaceholdersAfterArguments
3749
) {
3850
this.plugin = plugin;
51+
this.scheduler = plugin.getScheduler();
3952
this.uuid = uuid;
4053
this.actionType = actionType;
4154
this.exec = exec;
@@ -56,7 +69,6 @@ public void run() {
5669
? holder.get().getPlaceholderPlayer()
5770
: player;
5871

59-
6072
final String executable = StringUtils.replacePlaceholdersAndArguments(
6173
this.exec,
6274
this.arguments,
@@ -105,7 +117,7 @@ public void run() {
105117
break;
106118

107119
case CONSOLE:
108-
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), executable);
120+
scheduler.runTask(() -> Bukkit.dispatchCommand(Bukkit.getConsoleSender(), executable));
109121
break;
110122

111123
case MINI_MESSAGE:
@@ -435,7 +447,6 @@ public void run() {
435447
}
436448
}
437449

438-
439450
try {
440451
volume = Float.parseFloat(parts[1]);
441452
} catch (final NumberFormatException exception) {
@@ -497,17 +508,17 @@ public void run() {
497508
}
498509
break;
499510

500-
case PLAY_SOUND:
501-
if (sound == null) {
502-
plugin.debug(
503-
DebugLevel.HIGHEST,
504-
Level.WARNING,
505-
"Sound name given for sound action: " + executable + ", is not a valid sound!"
506-
);
511+
case PLAY_SOUND:
512+
if (sound == null) {
513+
plugin.debug(
514+
DebugLevel.HIGHEST,
515+
Level.WARNING,
516+
"Sound name given for sound action: " + executable + ", is not a valid sound!"
517+
);
518+
break;
519+
}
520+
player.playSound(player.getLocation(), sound, volume, pitch);
507521
break;
508-
}
509-
player.playSound(player.getLocation(), sound, volume, pitch);
510-
break;
511522
}
512523
break;
513524

@@ -519,5 +530,4 @@ public void run() {
519530
private boolean isRaw(ActionType actionType) {
520531
return actionType == ActionType.PLAY_RAW_SOUND || actionType == ActionType.BROADCAST_RAW_SOUND || actionType == ActionType.BROADCAST_WORLD_RAW_SOUND;
521532
}
522-
523-
}
533+
}

src/main/java/com/extendedclip/deluxemenus/command/DeluxeMenusCommand.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.extendedclip.deluxemenus.DeluxeMenus;
44
import com.extendedclip.deluxemenus.command.subcommand.*;
5-
import com.extendedclip.deluxemenus.utils.DebugLevel;
65
import com.extendedclip.deluxemenus.utils.Messages;
76
import net.kyori.adventure.text.Component;
87
import net.kyori.adventure.text.TextReplacementConfig;

0 commit comments

Comments
 (0)