v1.2.4: Remove roguelike perks, update bStats to 3.2.1, add new game modes and lpschem system
- Removed roguelike perk system (double jump, magnet, shield, second chance) - Updated bStats dependency to 3.2.1 with proper relocation - Changed bStats plugin ID to 29754 - Added new game modes: Speedrun, Gravity Shift, Hardcore - Implemented .lpschem format with GZIP + JSON compression - Added JumpValidator for physics-based jump validation - Added JumpType system (neo-jump, head-hitter, fence, trapdoor, ladder) - Implemented Ghost system for recording/playback top players - Added loparkour-vilib as local dependency - Updated config with new mode settings and removed roguelike section - Cleaned up TODO.md roadmap
This commit is contained in:
parent
aecb03ccf8
commit
8aeb547897
68 changed files with 6186 additions and 163 deletions
|
|
@ -0,0 +1,56 @@
|
|||
package dev.efnilite.vilib.util;
|
||||
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import java.net.URI;
|
||||
import java.net.http.HttpClient;
|
||||
import java.net.http.HttpRequest;
|
||||
import java.net.http.HttpResponse;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class UpdateChecker {
|
||||
|
||||
public static void check(Plugin plugin, int resourceId) {
|
||||
Task.create(plugin)
|
||||
.async()
|
||||
.execute(() -> {
|
||||
HttpClient client = HttpClient.newHttpClient();
|
||||
HttpRequest request = HttpRequest.newBuilder()
|
||||
.uri(URI.create("https://api.spiget.org/v2/resources/%s/versions/latest".formatted(resourceId)))
|
||||
.build();
|
||||
|
||||
plugin.getLogger().info("Checking for updates");
|
||||
|
||||
var tag = client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
|
||||
.thenApply(HttpResponse::body)
|
||||
.thenApply(UpdateChecker::parseLatestTag)
|
||||
.join();
|
||||
|
||||
if (tag.isEmpty()) {
|
||||
plugin.getLogger().info("Failed to check for updates");
|
||||
return;
|
||||
}
|
||||
|
||||
var version = plugin.getDescription().getVersion();
|
||||
if (!version.equals(tag)) {
|
||||
plugin.getLogger().info("A new version is available: %s -> %s".formatted(version, tag));
|
||||
plugin.getLogger().info("Download at https://spigotmc.org/resources/%s".formatted(resourceId));
|
||||
} else {
|
||||
plugin.getLogger().info("No new version found");
|
||||
}
|
||||
})
|
||||
.run();
|
||||
}
|
||||
|
||||
private static String parseLatestTag(String responseBody) {
|
||||
Pattern pattern = Pattern.compile("\"name\": ?\"(.*?)\"");
|
||||
Matcher matcher = pattern.matcher(responseBody);
|
||||
|
||||
if (matcher.find()) {
|
||||
return matcher.group(1);
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue