Fix Paper startup before worlds load and add 0.5.0 artifacts

This commit is contained in:
scoped committed 2026-09-30 16:58:45 -04:00
1 parent c0daa0507a
commit 434ed5338a
21 files changed
+60 -17

No files matched your search

Generated
+4 -4
View File
@@ -3999,7 +3999,7 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]] [[package]]
name = "scopenet-core" name = "scopenet-core"
version = "0.4.0" version = "0.5.0"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"base64 0.22.1", "base64 0.22.1",
@@ -4021,7 +4021,7 @@ dependencies = [
[[package]] [[package]]
name = "scopenet-launcher" name = "scopenet-launcher"
version = "0.4.0" version = "0.5.0"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"base64 0.22.1", "base64 0.22.1",
@@ -4047,7 +4047,7 @@ dependencies = [
[[package]] [[package]]
name = "scopenet-panel" name = "scopenet-panel"
version = "0.4.0" version = "0.5.0"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"argon2", "argon2",
@@ -4083,7 +4083,7 @@ dependencies = [
[[package]] [[package]]
name = "scopenet-shared" name = "scopenet-shared"
version = "0.4.0" version = "0.5.0"
dependencies = [ dependencies = [
"md-5", "md-5",
"serde", "serde",
+1 -1
View File
@@ -3,7 +3,7 @@ resolver = "2"
members = ["crates/shared", "crates/core", "panel/server", "launcher/src-tauri"] members = ["crates/shared", "crates/core", "panel/server", "launcher/src-tauri"]
[workspace.package] [workspace.package]
version = "0.4.0" version = "0.5.0"
edition = "2021" edition = "2021"
repository = "https://github.com/scopeddlol/SCOPENET-MC" repository = "https://github.com/scopeddlol/SCOPENET-MC"
+6 -1
View File
@@ -4,8 +4,13 @@
repositories { repositories {
maven { url = 'https://repo.bluecolored.de/releases' } maven { url = 'https://repo.bluecolored.de/releases' }
} }
configurations.compileClasspath {
attributes {
attribute(org.gradle.api.attributes.java.TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, 21)
}
}
dependencies { dependencies {
implementation project(':common') implementation project(':common')
compileOnly 'de.bluecolored.bluemap:BlueMapAPI:2.7.4' compileOnly 'de.bluecolored:bluemap-api:2.7.4'
implementation 'com.google.code.gson:gson:2.10.1' implementation 'com.google.code.gson:gson:2.10.1'
} }
+1 -1
View File
@@ -1,6 +1,6 @@
allprojects { allprojects {
group = 'net.scopenet' group = 'net.scopenet'
version = providers.gradleProperty('releaseVersion').getOrElse('0.4.0') version = providers.gradleProperty('releaseVersion').getOrElse('0.5.0')
repositories { mavenCentral() } repositories { mavenCentral() }
} }
subprojects { subprojects {
+1 -1
View File
@@ -24,6 +24,6 @@ jar {
from project(':common').sourceSets.main.output from project(':common').sourceSets.main.output
from project(':api').sourceSets.main.output from project(':api').sourceSets.main.output
from project(':bluemap').sourceSets.main.output from project(':bluemap').sourceSets.main.output
from { configurations.runtimeClasspath.findAll { it.name.endsWith('.jar') && !it.name.startsWith('common-') }.collect { zipTree(it) } } from { configurations.runtimeClasspath.findAll { it.name.endsWith('.jar') && !it.name.startsWith('common-') && !it.name.startsWith('api-') && !it.name.startsWith('bluemap-') }.collect { zipTree(it) } }
exclude 'META-INF/*.SF', 'META-INF/*.RSA', 'META-INF/*.DSA' exclude 'META-INF/*.SF', 'META-INF/*.RSA', 'META-INF/*.DSA'
} }
@@ -27,6 +27,7 @@ public final class ScopenetPlugin extends JavaPlugin implements Listener {
private ClientLinkBridge clientLink; private ClientLinkBridge clientLink;
private EssentialsHandler essentialsHandler; private EssentialsHandler essentialsHandler;
private GuildHandler guildHandler; private GuildHandler guildHandler;
private boolean liveMapStarted;
@Override public void onEnable() { @Override public void onEnable() {
// Install the deny-by-default listener even if configuration is invalid. // Install the deny-by-default listener even if configuration is invalid.
@@ -52,7 +53,9 @@ public final class ScopenetPlugin extends JavaPlugin implements Listener {
// Central Live Map: mirror chunks and player positions to the panel. // Central Live Map: mirror chunks and player positions to the panel.
if (getConfig().getBoolean("livemap.enabled", true)) { if (getConfig().getBoolean("livemap.enabled", true)) {
integration.enableLiveMap(Bukkit.getWorlds().get(0).getWorldFolder().toPath()); // STARTUP plugins enable before Paper loads any worlds. WorldLoadEvent starts
// the map on a fresh boot; this also handles enabling after worlds exist.
for (World world : Bukkit.getWorlds()) startLiveMap(world);
Bukkit.getScheduler().runTaskTimer(this, this::snapshotPlayers, 40, 20); Bukkit.getScheduler().runTaskTimer(this, this::snapshotPlayers, 40, 20);
} }
@@ -118,11 +121,23 @@ public final class ScopenetPlugin extends JavaPlugin implements Listener {
getLogger().info(" - Essentials: " + (settings.essentialsEnabled() ? "ENABLED" : "DISABLED")); getLogger().info(" - Essentials: " + (settings.essentialsEnabled() ? "ENABLED" : "DISABLED"));
getLogger().info(" - Economy: " + (settings.economyEnabled() ? "ENABLED" : "DISABLED")); getLogger().info(" - Economy: " + (settings.economyEnabled() ? "ENABLED" : "DISABLED"));
} catch (Exception e) { } catch (Exception e) {
getLogger().severe("SCOPENET is blocking joins: " + e.getMessage()); getLogger().log(java.util.logging.Level.SEVERE, "SCOPENET is blocking joins", e);
for (Player player : Bukkit.getOnlinePlayers()) player.kickPlayer(Integration.UNAVAILABLE); for (Player player : Bukkit.getOnlinePlayers()) player.kickPlayer(Integration.UNAVAILABLE);
} }
} }
@EventHandler
public void worldLoaded(org.bukkit.event.world.WorldLoadEvent event) {
startLiveMap(event.getWorld());
}
private void startLiveMap(World world) {
if (liveMapStarted || integration == null || world.getEnvironment() != World.Environment.NORMAL
|| !getConfig().getBoolean("livemap.enabled", true)) return;
integration.enableLiveMap(world.getWorldFolder().toPath());
liveMapStarted = true;
}
private Settings readSettings() { private Settings readSettings() {
return Settings.of( return Settings.of(
getConfig().getString("panel-url", ""), getConfig().getString("panel-url", ""),
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"name": "scopenet-launcher", "name": "scopenet-launcher",
"private": true, "private": true,
"version": "0.4.0", "version": "0.5.0",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
+8 -2
View File
@@ -10,9 +10,15 @@ use std::sync::{Mutex, RwLock};
/// Values baked in at build time by CI (see `.github/workflows/release.yml`). /// Values baked in at build time by CI (see `.github/workflows/release.yml`).
pub mod build { pub mod build {
/// Default panel URL for this build. /// Default panel URL for this build.
pub const PANEL_URL: Option<&str> = option_env!("SCOPENET_PANEL_URL"); pub const PANEL_URL: Option<&str> = match option_env!("SCOPENET_PANEL_URL") {
Some(u) if !u.is_empty() => Some(u),
_ => Some("https://scopenetmcpanel.scopedd.lol"),
};
/// `owner/repo` used to check GitHub releases for updates. /// `owner/repo` used to check GitHub releases for updates.
pub const REPO: Option<&str> = option_env!("SCOPENET_REPO"); pub const REPO: Option<&str> = match option_env!("SCOPENET_REPO") {
Some(r) if !r.is_empty() => Some(r),
_ => Some("scopeddlol/SCOPENET-MC"),
};
/// When set to "1", players can't change the panel URL. /// When set to "1", players can't change the panel URL.
pub const LOCK_PANEL: Option<&str> = option_env!("SCOPENET_LOCK_PANEL"); pub const LOCK_PANEL: Option<&str> = option_env!("SCOPENET_LOCK_PANEL");
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"$schema": "https://schema.tauri.app/config/2", "$schema": "https://schema.tauri.app/config/2",
"productName": "SCOPENET Launcher", "productName": "SCOPENET Launcher",
"version": "0.4.0", "version": "0.5.0",
"identifier": "net.scopenet.launcher", "identifier": "net.scopenet.launcher",
"build": { "build": {
"beforeDevCommand": "npm run dev", "beforeDevCommand": "npm run dev",
+10 -2
View File
@@ -90,9 +90,17 @@ export async function init() {
theme(); theme();
pickSelected(); pickSelected();
subscribe(); subscribe();
app.ready = true;
invoke('show_window').catch(() => {}); invoke('show_window').catch(() => {});
if (app.panelUrl) await refresh(); if (app.panelUrl && !app.manifest) {
try {
await refresh();
} finally {
app.ready = true;
}
} else {
app.ready = true;
if (app.panelUrl) await refresh();
}
if (boot.settings.check_updates && boot.app.repo) { if (boot.settings.check_updates && boot.app.repo) {
invoke<UpdateInfo | null>('check_update').then((u) => (app.update = u)).catch(() => {}); invoke<UpdateInfo | null>('check_update').then((u) => (app.update = u)).catch(() => {});
} }
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"name": "scopenet-panel-web", "name": "scopenet-panel-web",
"private": true, "private": true,
"version": "0.4.0", "version": "0.5.0",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
+9
View File
@@ -0,0 +1,9 @@
5e931abbb8b037c8de349afdd0b4165c23059e58672f7e0a11a27c4f70db6bed scopenet-client-fabric-1.20.1-0.5.0.jar
cb8690f842f0efb7a336c568a12e11c5bc9da2986ab68f337d4ca211c99cecb5 scopenet-fabric-1.20.1-0.5.0.jar
e1e6650e05f5a66655f88be8e892095e79ddf8cd5502affea9bd68033e33cc21 scopenet-fabric-1.21.1-0.5.0.jar
a54a1478c0740eb4aef20797037738355e3482ac1f4eaaa9b408d16e2303b7ed scopenet-fabric-26.3-0.5.0.jar
d9a22725d0b2554f31e010a6f596a73c023b339490ef982b5d53e8f866a8c447 scopenet-forge-1.20.1-0.5.0.jar
49098a90919fdea02f4eec26e332cd6a51fc7bb398ba1d55f87528f52610e250 scopenet-forge-1.21.1-0.5.0.jar
31e5076947f33ad1ec0037d92736b28eb8a47e4be84a6bacbf1dfd11308f579a scopenet-forge-26.3-0.5.0.jar
4963fad47421c8c4c9ff96cfa44fd808a5ecda2da1c2b08b0c18c43eaef5cb1c scopenet-paper-0.5.0.jar
3ade714b0869b9fbb0e6175280b69d5bb6531543ce8ce48c7f231f170081dd5f SCOPENET Launcher_0.5.0_x64-setup.exe
Binary file not shown.