Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions src/main/java/com/drtshock/playervaults/Metrics.java
Original file line number Diff line number Diff line change
Expand Up @@ -188,9 +188,10 @@ public void run() {
timer.cancel();
return;
}
// Nevertheless we want our code to run in the Bukkit main thread, so we have to use the Bukkit scheduler
// Nevertheless we want our code to run on the server thread, so we have to use the scheduler
// Don't be afraid! The connection to the bStats server is still async, only the stats collection is sync ;)
Bukkit.getScheduler().runTask(plugin, () -> submitData());
// Scheduler routes to Folia's global region scheduler when running under Folia.
com.drtshock.playervaults.util.Scheduler.run(() -> submitData());
}
}, 1000 * 60 * 5, 1000 * 60 * 30);
// Submit the data every 30 minutes, first time after 5 minutes to give other plugins enough time to start
Expand Down
76 changes: 35 additions & 41 deletions src/main/java/com/drtshock/playervaults/PlayerVaults.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import com.drtshock.playervaults.tasks.Cleanup;
import com.drtshock.playervaults.util.ComponentDispatcher;
import com.drtshock.playervaults.util.Permission;
import com.drtshock.playervaults.util.Scheduler;
import com.drtshock.playervaults.vaultmanagement.EconomyOperations;
import com.drtshock.playervaults.vaultmanagement.VaultManager;
import com.drtshock.playervaults.vaultmanagement.VaultViewInfo;
Expand All @@ -59,7 +60,6 @@
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable;
import dev.kitteh.cardboardbox.CardboardBox;
import sun.misc.Unsafe;

Expand Down Expand Up @@ -186,17 +186,14 @@ public void onEnable() {
debug("setup economy", time);

if (getConf().getPurge().isEnabled()) {
getServer().getScheduler().runTaskAsynchronously(this, new Cleanup(getConf().getPurge().getDaysSinceLastEdit()));
Scheduler.runAsync(new Cleanup(getConf().getPurge().getDaysSinceLastEdit()));
}

new BukkitRunnable() {
@Override
public void run() {
if (saveQueued) {
saveSignsFile();
}
Scheduler.runTimer(task -> {
if (saveQueued) {
saveSignsFile();
}
}.runTaskTimer(this, 20, 20);
}, 20, 20);

this.metrics = new Metrics(this, 6905);
Plugin vault = getServer().getPluginManager().getPlugin("Vault");
Expand Down Expand Up @@ -296,42 +293,39 @@ public void run() {

this.updateCheck = new Gson().toJson(update);
if (!HelpMeCommand.likesCats) return;
new BukkitRunnable() {
@Override
public void run() {
try {
URL url = new URL("https://update.plugin.party/check");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setDoOutput(true);
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Accept", "application/json");
try (OutputStream out = con.getOutputStream()) {
out.write(PlayerVaults.this.updateCheck.getBytes(StandardCharsets.UTF_8));
}
String reply = new BufferedReader(new InputStreamReader(con.getInputStream(), StandardCharsets.UTF_8)).lines().collect(Collectors.joining("\n"));
Response response = new Gson().fromJson(reply, Response.class);
if (response.isSuccess()) {
if (response.isUpdateAvailable()) {
PlayerVaults.this.updateResponse = response;
if (response.isUrgent()) {
PlayerVaults.this.getServer().getOnlinePlayers().forEach(PlayerVaults.this::updateNotification);
}
PlayerVaults.this.getLogger().warning("Update available: " + response.getLatestVersion() + (response.getMessage() == null ? "" : (" - " + response.getMessage())));
Scheduler.runTimerAsync(task -> {
try {
URL url = new URL("https://update.plugin.party/check");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setDoOutput(true);
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Accept", "application/json");
try (OutputStream out = con.getOutputStream()) {
out.write(PlayerVaults.this.updateCheck.getBytes(StandardCharsets.UTF_8));
}
String reply = new BufferedReader(new InputStreamReader(con.getInputStream(), StandardCharsets.UTF_8)).lines().collect(Collectors.joining("\n"));
Response response = new Gson().fromJson(reply, Response.class);
if (response.isSuccess()) {
if (response.isUpdateAvailable()) {
PlayerVaults.this.updateResponse = response;
if (response.isUrgent()) {
PlayerVaults.this.getServer().getOnlinePlayers().forEach(PlayerVaults.this::updateNotification);
}
PlayerVaults.this.getLogger().warning("Update available: " + response.getLatestVersion() + (response.getMessage() == null ? "" : (" - " + response.getMessage())));
}
} else {
if (response.getMessage().equals("INVALID")) {
task.cancel();
} else if (response.getMessage().equals("TOO_FAST")) {
// Nothing for now
} else {
if (response.getMessage().equals("INVALID")) {
this.cancel();
} else if (response.getMessage().equals("TOO_FAST")) {
// Nothing for now
} else {
PlayerVaults.this.getLogger().warning("Failed to check for updates: " + response.getMessage());
}
PlayerVaults.this.getLogger().warning("Failed to check for updates: " + response.getMessage());
}
} catch (Exception ignored) {
}
} catch (Exception ignored) {
}
}.runTaskTimerAsynchronously(this, 1, 20 /* ticks */ * 60 /* seconds in a minute */ * 60 /* minutes in an hour*/);
}, 1, 20 /* ticks */ * 60 /* seconds in a minute */ * 60 /* minutes in an hour*/);
}

private void metricsLine(String name, Callable<Integer> callable) {
Expand Down Expand Up @@ -764,4 +758,4 @@ public <T extends Throwable> T addException(T t) {
}
return t;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import com.drtshock.playervaults.PlayerVaults;
import com.drtshock.playervaults.converters.*;
import com.drtshock.playervaults.util.Permission;
import com.drtshock.playervaults.util.Scheduler;
import com.drtshock.playervaults.vaultmanagement.VaultOperations;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
Expand Down Expand Up @@ -72,7 +73,7 @@ public boolean onCommand(final CommandSender sender, Command command, String lab
} else {
// Fork into background
this.plugin.getTL().convertBackground().title().send(sender);
PlayerVaults.getInstance().getServer().getScheduler().runTaskLaterAsynchronously(PlayerVaults.getInstance(), () -> {
Scheduler.runLaterAsync(() -> {
int converted = 0;
VaultOperations.setLocked(true);
for (Converter converter : applicableConverters) {
Expand Down
36 changes: 14 additions & 22 deletions src/main/java/com/drtshock/playervaults/commands/HelpMeCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import com.drtshock.playervaults.PlayerVaults;
import com.drtshock.playervaults.util.ComponentDispatcher;
import com.drtshock.playervaults.util.Permission;
import com.drtshock.playervaults.util.Scheduler;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.event.ClickEvent;
import net.kyori.adventure.text.minimessage.MiniMessage;
Expand All @@ -30,7 +31,6 @@
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import org.bukkit.scheduler.BukkitRunnable;
import org.kitteh.pastegg.PasteBuilder;
import org.kitteh.pastegg.PasteContent;
import org.kitteh.pastegg.PasteFile;
Expand Down Expand Up @@ -77,7 +77,7 @@ public boolean onCommand(final CommandSender sender, Command command, String lab
mainInfo.append(" ").append(plugin.getDescription().getAuthors()).append('\n');
}

new BukkitRunnable() {
Scheduler.runAsync(new Runnable() {
private final PasteBuilder builder = new PasteBuilder().name("PlayerVaultsX Debug")
.visibility(Visibility.UNLISTED)
.expires(ZonedDateTime.now(ZoneOffset.UTC).plusDays(3));
Expand Down Expand Up @@ -106,31 +106,23 @@ public void run() {
}
add("config.conf", getFile(dataPath.resolve("config.conf")));
PasteBuilder.PasteResult result = builder.build();
new BukkitRunnable() {
@Override
public void run() {
if (result.getPaste().isPresent()) {
String delKey = result.getPaste().get().getDeletionKey().orElse("No deletion key");
String url = "https://paste.gg/anonymous/" + result.getPaste().get().getId();
ComponentDispatcher.send(sender, Component.text("URL generated: ").append(Component.text().clickEvent(ClickEvent.openUrl(url)).content(url)));
ComponentDispatcher.send(sender, MiniMessage.miniMessage().deserialize((sender instanceof Player ? "<rainbow>" : "<green>") + "Deletion key:</rainbow> " + delKey));
} else {
ComponentDispatcher.send(sender, MiniMessage.miniMessage().deserialize("<red>Failed to generate output. See console for details."));
PlayerVaults.getInstance().getLogger().warning("Received: " + result.getMessage());
}
Scheduler.run(() -> {
if (result.getPaste().isPresent()) {
String delKey = result.getPaste().get().getDeletionKey().orElse("No deletion key");
String url = "https://paste.gg/anonymous/" + result.getPaste().get().getId();
ComponentDispatcher.send(sender, Component.text("URL generated: ").append(Component.text().clickEvent(ClickEvent.openUrl(url)).content(url)));
ComponentDispatcher.send(sender, MiniMessage.miniMessage().deserialize((sender instanceof Player ? "<rainbow>" : "<green>") + "Deletion key:</rainbow> " + delKey));
} else {
ComponentDispatcher.send(sender, MiniMessage.miniMessage().deserialize("<red>Failed to generate output. See console for details."));
PlayerVaults.getInstance().getLogger().warning("Received: " + result.getMessage());
}
}.runTask(PlayerVaults.getInstance());
});
} catch (Exception e) {
PlayerVaults.getInstance().getLogger().log(Level.SEVERE, "Failed to execute debug command", e);
new BukkitRunnable() {
@Override
public void run() {
ComponentDispatcher.send(sender, MiniMessage.miniMessage().deserialize("<red>Failed to generate output. See console for details."));
}
}.runTask(PlayerVaults.getInstance());
Scheduler.run(() -> ComponentDispatcher.send(sender, MiniMessage.miniMessage().deserialize("<red>Failed to generate output. See console for details.")));
}
}
}.runTaskAsynchronously(PlayerVaults.getInstance());
});
}
return true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@
package com.drtshock.playervaults.listeners;

import com.drtshock.playervaults.PlayerVaults;
import com.drtshock.playervaults.util.Scheduler;
import com.drtshock.playervaults.vaultmanagement.VaultManager;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.scheduler.BukkitRunnable;

import java.util.UUID;

Expand All @@ -37,12 +37,7 @@ public class VaultPreloadListener implements Listener {
public void onPlayerJoin(PlayerJoinEvent event) {
PlayerVaults.getInstance().updateNotification(event.getPlayer());
final UUID uuid = event.getPlayer().getUniqueId();
new BukkitRunnable() {
@Override
public void run() {
vm.cachePlayerVaultFile(uuid.toString());
}
}.runTaskAsynchronously(PlayerVaults.getInstance());
Scheduler.runAsync(() -> vm.cachePlayerVaultFile(uuid.toString()));
}

@EventHandler(priority = EventPriority.MONITOR)
Expand Down
Loading