Skip to content

Commit 7b84ebc

Browse files
Add publish for paper plugin
1 parent e38beb1 commit 7b84ebc

File tree

9 files changed

+81
-24
lines changed

9 files changed

+81
-24
lines changed

.github/workflows/publish.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: Gradle Publish
2+
3+
on:
4+
release:
5+
types:
6+
- published
7+
8+
jobs:
9+
gradle-publish-paper:
10+
name: Publish Paper Plugin
11+
runs-on: ubuntu-latest
12+
permissions:
13+
packages: write
14+
15+
steps:
16+
- uses: actions/[email protected]
17+
- uses: gradle/wrapper-validation-action@v3
18+
- name: Set up JDK
19+
uses: actions/setup-java@v4
20+
with:
21+
distribution: adopt
22+
java-version: 21
23+
- name: Build with Gradle
24+
run: ./gradlew --build-cache test build
25+
- name: Publish
26+
run: ./gradlew :plugin-paper:publishMavenPublicationToEldonexusRepository
27+
env:
28+
NEXUS_USERNAME: ${{ secrets.NEXUS_USERNAME }}
29+
NEXUS_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}

bot/src/main/java/de/chojo/gamejam/server/TeamServer.java

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,9 @@ private void writeTemplate() throws IOException {
125125

126126
var sourceDir = Path.of(configuration.serverTemplate().templateDir());
127127
var symlinks = configuration.serverTemplate().symLinks()
128-
.stream()
129-
.map(sourceDir::resolve)
130-
.collect(Collectors.toSet());
128+
.stream()
129+
.map(sourceDir::resolve)
130+
.collect(Collectors.toSet());
131131
try (var files = Files.walk(sourceDir)) {
132132
for (var sourceTarget : files.toList()) {
133133
// skip root dir
@@ -153,6 +153,7 @@ private void writeTemplate() throws IOException {
153153

154154
/**
155155
* Delete all the server data.
156+
*
156157
* @return true when server was deleted.
157158
* @throws IOException
158159
*/
@@ -196,7 +197,8 @@ public boolean start() {
196197
.start();
197198
running = true;
198199
} catch (IOException e) {
199-
throw new RuntimeException(e);
200+
log.error("Could not start server", e);
201+
return false;
200202
}
201203
return true;
202204
}
@@ -370,8 +372,8 @@ public boolean replaceWorld(Path newWorld) {
370372
public boolean deleteDirectory(Path path) {
371373
try (var files = Files.walk(path)) {
372374
files.sorted(Comparator.reverseOrder())
373-
.map(Path::toFile)
374-
.forEach(File::delete);
375+
.map(Path::toFile)
376+
.forEach(File::delete);
375377
} catch (NoSuchFileException e) {
376378
return true;
377379
} catch (IOException e) {
@@ -411,18 +413,18 @@ public CompletableFuture<MessageEmbed> detailStatus(EventContext context) {
411413
} else {
412414
if (running()) {
413415
builder.setDescription("teamserver.message.detailstatus.existing.description")
414-
.addField("word.ports", "$word.server$: %d%n$word.api$: %d".formatted(port, apiPort), true);
416+
.addField("word.ports", "$word.server$: %d%n$word.api$: %d".formatted(port, apiPort), true);
415417
stats().ifPresent(stats -> {
416418
var memory = stats.memory();
417419
builder.addField("word.memory", "$word.used$ %d%n$word.total$: %d%n$word.max$: %d".formatted(memory.usedMb(), memory.totalMb(), memory.maxMb()), true)
418-
.addField("word.tps", "1 $word.min$: %.2f%n5 $word.min$: %.2f%n 15 $word.min$: %.2f%n$word.averageticktime$ %.2f".formatted(
419-
stats.tps()[0], stats.tps()[1], stats.tps()[2], stats.averageTickTime()), true)
420-
.addField("word.players", String.valueOf(stats.onlinePlayers()), true)
421-
.addField("word.system", "$word.activethreads$: %d".formatted(stats.activeThreads()), true);
420+
.addField("word.tps", "1 $word.min$: %.2f%n5 $word.min$: %.2f%n 15 $word.min$: %.2f%n$word.averageticktime$ %.2f".formatted(
421+
stats.tps()[0], stats.tps()[1], stats.tps()[2], stats.averageTickTime()), true)
422+
.addField("word.players", String.valueOf(stats.onlinePlayers()), true)
423+
.addField("word.system", "$word.activethreads$: %d".formatted(stats.activeThreads()), true);
422424
});
423425
} else {
424426
builder.setDescription("word.serversetup")
425-
.addField("word.ports", "word.notrunning", true);
427+
.addField("word.ports", "word.notrunning", true);
426428
}
427429
}
428430

plugin-api/src/main/java/de/chojo/pluginjam/payload/Registration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@
66

77
package de.chojo.pluginjam.payload;
88

9-
public record Registration(int id, String name, int port, int apiPort) {
9+
public record Registration(int id, String name, String host, int port, int apiPort) {
1010
}

plugin-paper/build.gradle.kts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ plugins {
22
java
33
alias(libs.plugins.pluginyml)
44
alias(libs.plugins.shadow)
5+
`maven-publish`
56
}
67

78
group = "de.chojo"
@@ -37,6 +38,24 @@ tasks {
3738
}
3839
}
3940

41+
publishing {
42+
repositories {
43+
maven {
44+
name = "Eldonexus"
45+
url = uri("https://eldonexus.de/repository/maven-releases")
46+
credentials {
47+
username = System.getenv("NEXUS_USERNAME")
48+
password = System.getenv("NEXUS_PASSWORD")
49+
}
50+
}
51+
}
52+
publications {
53+
create<MavenPublication>("maven") {
54+
from(components["java"])
55+
}
56+
}
57+
}
58+
4059
bukkit {
4160
name = "PluginJam"
4261
main = "de.chojo.pluginjam.PluginJam"

plugin-paper/src/main/java/de/chojo/pluginjam/velocity/ReportService.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.google.gson.Gson;
1010
import de.chojo.pluginjam.payload.Registration;
1111
import org.bukkit.plugin.Plugin;
12+
import org.eclipse.jetty.http.HttpStatus;
1213
import org.slf4j.Logger;
1314

1415
import java.net.URI;
@@ -30,6 +31,7 @@ public class ReportService implements Runnable {
3031
private final int velocityPort;
3132
private final int apiPort;
3233
private final String velocityHost;
34+
private final String host = System.getenv("HOSTNAME");
3335

3436
private ReportService(Plugin plugin) {
3537
this.plugin = plugin;
@@ -55,22 +57,23 @@ public void run() {
5557

5658
private void register() {
5759
log.info("Registering server at velocity instance");
58-
var registration = new Registration(id, name, plugin.getServer().getPort(), apiPort);
60+
var registration = new Registration(id, name, host, plugin.getServer().getPort(), apiPort);
5961
var builder = HttpRequest.newBuilder(apiUrl("v1", "server"))
6062
.POST(HttpRequest.BodyPublishers.ofString(gson.toJson(registration)))
6163
.build();
64+
log.info("Posting to {}", builder.uri().toString());
6265
client.sendAsync(builder, HttpResponse.BodyHandlers.discarding())
6366
.whenComplete((res, err) -> {
64-
if (err == null) {
65-
log.info("Registered server at velocity instance");
67+
if (err == null && res.statusCode() == HttpStatus.ACCEPTED_202) {
68+
log.info("Registered server at velocity instance.");
6669
} else {
6770
log.error("Could not register", err);
6871
}
6972
});
7073
}
7174

7275
private void ping() {
73-
var registration = new Registration(id, name, plugin.getServer().getPort(), apiPort);
76+
var registration = new Registration(id, name, host, plugin.getServer().getPort(), apiPort);
7477
var builder = HttpRequest.newBuilder(apiUrl("v1", "server"))
7578
.method("PATCH", HttpRequest.BodyPublishers.ofString(gson.toJson(registration)))
7679
.build();
@@ -84,9 +87,9 @@ private void ping() {
8487

8588
private void unregister() {
8689
log.info("Unregistering server at velocity instance.");
87-
var builder = HttpRequest.newBuilder(queryApiUrl("id=%s&port=%s".formatted(id,
90+
var builder = HttpRequest.newBuilder(queryApiUrl("id=%s&port=%s&host=%s".formatted(id,
8891
plugin.getServer()
89-
.getPort()),
92+
.getPort(), host),
9093
"v1", "server"))
9194
.DELETE()
9295
.build();

plugin-velocity/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ plugins {
33
alias(libs.plugins.shadow)
44
}
55

6+
version = "1.0.0"
7+
68
repositories {
79
mavenCentral()
810
maven("https://repo.papermc.io/repository/maven-public/")

plugin-velocity/src/main/java/de/chojo/pluginjam/servers/ServerRegistry.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
import java.time.temporal.ChronoUnit;
1818
import java.util.Collection;
1919
import java.util.HashMap;
20-
import java.util.List;
2120
import java.util.Map;
2221
import java.util.concurrent.ScheduledExecutorService;
2322
import java.util.concurrent.TimeUnit;
@@ -71,7 +70,7 @@ public void register(Registration registration) {
7170
ids.put(registration.id(), registration);
7271
ports.put(registration.port(), registration);
7372

74-
proxy.registerServer(new ServerInfo(registration.name(), new InetSocketAddress("localhost", registration.port())));
73+
proxy.registerServer(new ServerInfo(registration.name(), new InetSocketAddress(registration.host(), registration.port())));
7574
ping(registration);
7675
}
7776

@@ -87,7 +86,7 @@ public void ping(Registration registration) {
8786

8887
public void unregister(Registration registration) {
8988
var removed = ids.remove(registration.id());
90-
if(removed == null){
89+
if (removed == null) {
9190
log.warn("Unregistered server {} from port {}, but this server is not known.", registration.id(), registration.port());
9291
return;
9392
}

plugin-velocity/src/main/java/de/chojo/pluginjam/web/Api.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ public static Api create(ServerRegistry registry) {
3232
var classLoader = Thread.currentThread().getContextClassLoader();
3333
Thread.currentThread().setContextClassLoader(PluginJam.class.getClassLoader());
3434
var javalin = Javalin.create();
35-
javalin.start("0.0.0.0", Integer.parseInt(System.getProperty("javalin.port", "30000")));
35+
int port = Integer.parseInt(System.getProperty("javalin.port", "30000"));
36+
javalin.start("0.0.0.0", port);
3637
Thread.currentThread().setContextClassLoader(classLoader);
3738
var api = new Api(registry, javalin);
3839
api.ignite();

plugin-velocity/src/main/java/de/chojo/pluginjam/web/server/Server.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,12 @@ public void buildRoutes() {
3838
delete("", ctx -> {
3939
var id = ctx.queryParam("id");
4040
var port = ctx.queryParam("port");
41-
var registration = new Registration(Integer.parseInt(id), "", Integer.parseInt(port), 0);
41+
var host = ctx.queryParam("host");
42+
var registration = new Registration(Integer.parseInt(id), "", host, Integer.parseInt(port), 0);
4243
registry.unregister(registration);
4344
ctx.status(HttpCode.ACCEPTED);
4445
});
46+
4547
get("", ctx -> {
4648
ctx.json(registry.server());
4749
ctx.status(HttpCode.OK);

0 commit comments

Comments
 (0)