From 1be0af7b1ba54e8fc002cf7e40d72bb3f1371c4e Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Sun, 23 Nov 2025 00:33:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=80=9F=E7=8E=87=E9=99=90?= =?UTF-8?q?=E5=88=B6=E4=B8=8D=E5=AD=98=E5=9C=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bukkit/build.gradle.kts | 39 +++++++++++++++++++ core/build.gradle.kts | 39 +++++++++++++++++++ .../pack/host/impl/SelfHostHttpServer.java | 5 +-- .../craftengine/core/util/LazyReference.java | 7 ++++ 4 files changed, 87 insertions(+), 3 deletions(-) diff --git a/bukkit/build.gradle.kts b/bukkit/build.gradle.kts index 0d7569af6..6dea04b48 100644 --- a/bukkit/build.gradle.kts +++ b/bukkit/build.gradle.kts @@ -111,12 +111,21 @@ tasks { publishing { repositories { maven { + name = "releases" url = uri("https://repo.momirealms.net/releases") credentials(PasswordCredentials::class) { username = System.getenv("REPO_USERNAME") password = System.getenv("REPO_PASSWORD") } } + maven { + name = "snapshot" + url = uri("https://repo.momirealms.net/snapshots") + credentials(PasswordCredentials::class) { + username = System.getenv("REPO_USERNAME") + password = System.getenv("REPO_PASSWORD") + } + } } publications { create("mavenJava") { @@ -137,5 +146,35 @@ publishing { } } } + create("mavenJavaSnapshot") { + groupId = "net.momirealms" + artifactId = "craft-engine-bukkit" + version = "${rootProject.properties["project_version"]}-SNAPSHOT" + artifact(tasks["sourcesJar"]) + from(components["shadow"]) + pom { + name = "CraftEngine API" + url = "https://github.com/Xiao-MoMi/craft-engine" + licenses { + license { + name = "GNU General Public License v3.0" + url = "https://www.gnu.org/licenses/gpl-3.0.html" + distribution = "repo" + } + } + } + } } } + +tasks.register("publishRelease") { + group = "publishing" + description = "Publishes to the release repository" + dependsOn("publishMavenJavaPublicationToReleaseRepository") +} + +tasks.register("publishSnapshot") { + group = "publishing" + description = "Publishes to the snapshot repository" + dependsOn("publishMavenJavaSnapshotPublicationToSnapshotRepository") +} \ No newline at end of file diff --git a/core/build.gradle.kts b/core/build.gradle.kts index be15d9371..6c138b529 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -116,12 +116,21 @@ tasks { publishing { repositories { maven { + name = "releases" url = uri("https://repo.momirealms.net/releases") credentials(PasswordCredentials::class) { username = System.getenv("REPO_USERNAME") password = System.getenv("REPO_PASSWORD") } } + maven { + name = "snapshot" + url = uri("https://repo.momirealms.net/snapshots") + credentials(PasswordCredentials::class) { + username = System.getenv("REPO_USERNAME") + password = System.getenv("REPO_PASSWORD") + } + } } publications { create("mavenJava") { @@ -142,5 +151,35 @@ publishing { } } } + create("mavenJavaSnapshot") { + groupId = "net.momirealms" + artifactId = "craft-engine-core" + version = "${rootProject.properties["project_version"]}-SNAPSHOT" + artifact(tasks["sourcesJar"]) + from(components["shadow"]) + pom { + name = "CraftEngine API" + url = "https://github.com/Xiao-MoMi/craft-engine" + licenses { + license { + name = "GNU General Public License v3.0" + url = "https://www.gnu.org/licenses/gpl-3.0.html" + distribution = "repo" + } + } + } + } } +} + +tasks.register("publishRelease") { + group = "publishing" + description = "Publishes to the release repository" + dependsOn("publishMavenJavaPublicationToReleaseRepository") +} + +tasks.register("publishSnapshot") { + group = "publishing" + description = "Publishes to the snapshot repository" + dependsOn("publishMavenJavaSnapshotPublicationToSnapshotRepository") } \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/SelfHostHttpServer.java b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/SelfHostHttpServer.java index 755afe7dc..9a88c719c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/SelfHostHttpServer.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/SelfHostHttpServer.java @@ -294,9 +294,8 @@ public class SelfHostHttpServer { } private boolean checkIpRateLimit(String clientIp) { - Bucket rateLimiter = ipRateLimiters.get(clientIp, k -> - Bucket.builder().addLimit(limitPerIp).build() - ); + if (limitPerIp == null) return true; + Bucket rateLimiter = ipRateLimiters.get(clientIp, k -> Bucket.builder().addLimit(limitPerIp).build()); assert rateLimiter != null; return rateLimiter.tryConsume(1); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/LazyReference.java b/core/src/main/java/net/momirealms/craftengine/core/util/LazyReference.java index 1a1fcfe89..bba794fd8 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/LazyReference.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/LazyReference.java @@ -6,6 +6,8 @@ public interface LazyReference { T get(); + boolean initialized(); + static LazyReference lazyReference(final Supplier supplier) { return new LazyReference<>() { private T value; @@ -17,6 +19,11 @@ public interface LazyReference { } return this.value; } + + @Override + public boolean initialized() { + return this.value != null; + } }; } }