Entwickle ein Plugin für Paper, das die API von mc-api.io verwendet, um Spielerinformationen abzurufen und im Spiel darzustellen.
Das Plugin soll externe REST-APIs sauber integrieren, HTTP-Requests asynchron verarbeiten und die erhaltenen JSON-Daten strukturiert im Spiel ausgeben.
- Java 17 oder höher
- Paper API 1.20+
- Maven oder Gradle
- HTTP-Requests ausschließlich asynchron
- Keine API-Abfragen im Main Thread
- Saubere Fehlerbehandlung
- Strukturierte Service- und Model-Klassen
- JSON-Verarbeitung mit Gson
- Alle Nachrichten müssen über
MessageUtilausgegeben werden
Dokumentation:
Beispiel-Endpoints:
https://mc-api.io/api/v1/profile/<spielername>
https://mc-api.io/api/v1/name-history/<uuid>
Zeigt folgende Informationen an:
- UUID
- aktueller Spielername
- Skin-URL
- Profil-URL
- Zeitpunkt der Abfrage
- Fehlernachricht bei ungültigem Spieler oder API-Fehler
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Name: Notch
Skin: https://textures.minecraft.net/...
Profil: https://namemc.com/profile/...
Abgerufen: 16.05.2026 18:30
Zeigt bekannte Namenshistorien eines Spielers an.
1. LukasDev
2. TheLukasDev
3. LukasDev_
nitromc.command.mcinfo
nitromc.command.namehistory
name: NitroApiPlugin
version: 1.0.0
main: net.nitromc.api.NitroApiPlugin
api-version: '1.20'
commands:
mcinfo:
description: Zeigt Spielerinformationen an
usage: /mcinfo <spielername>
permission: nitromc.command.mcinfo
namehistory:
description: Zeigt die Namenshistorie eines Spielers an
usage: /namehistory <spielername>
permission: nitromc.command.namehistory
permissions:
nitromc.command.mcinfo:
default: op
nitromc.command.namehistory:
default: opsrc/main/java/net/nitromc/api/
├── NitroApiPlugin.java
├── command/
│ ├── McInfoCommand.java
│ └── NameHistoryCommand.java
├── service/
│ └── McApiService.java
├── model/
│ ├── PlayerProfile.java
│ └── NameHistoryEntry.java
└── util/
└── MessageUtil.java
Die API-Kommunikation soll vollständig gekapselt werden.
Beispiele:
- Spielerprofil abrufen
- UUID ermitteln
- Namenshistorie laden
- HTTP-Fehler behandeln
- Timeouts setzen
- JSON-Daten in Models umwandeln
CompletableFuturefür Async-Verarbeitung verwenden
Folgendes ist verpflichtend:
-
Keine blockierenden HTTP-Requests im Server-Thread
-
Verwendung von:
CompletableFuture- Bukkit Async Scheduler
- oder Java HttpClient async APIs
Beispiel:
HttpClient.newHttpClient()
.sendAsync(request, HttpResponse.BodyHandlers.ofString())Die bereitgestellte Klasse MessageUtil muss für sämtliche Nachrichten verwendet werden.
Erlaubt:
MessageUtil.send(sender, "&aErfolgreich geladen!");Nicht erlaubt:
sender.sendMessage(...);<dependency>
<groupId>io.papermc.paper</groupId>
<artifactId>paper-api</artifactId>
<version>1.20.4-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>- Caching-System
- Config-Datei
- klickbare Chat-Komponenten
- Retry-System bei API-Fehlern
- Logging
- Unit-Tests
- Rate-Limit Handling
Das Repository muss enthalten:
- vollständigen Source Code
README.mdplugin.ymlpom.xmloderbuild.gradle- Installationsanleitung
- kurze Erklärung der API-Nutzung
- Beispielausgaben oder Screenshots
Bewertet werden:
- API-Verständnis
- Async-Handling
- Fehlerbehandlung
- Strukturierung
- Clean Code
- Lesbarkeit
- korrekte Nutzung von
MessageUtil - sinnvolle Objektmodellierung
- saubere Trennung von Command-, Service- und Model-Schicht