Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion content/blog/de/otis-spielerstammdaten-minecraft.md
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ Dadurch das wir zustandlos arbeiten, sind Anfragen als kostbar zu betrachten, da

## Abschluss

Durch dieses Projekt haben wir eine gute Basis geschaffen, andere Projekte anzugehen und tieferes Verständnis aufzubauen für Architektur und Kommunikation. Gerne kann Otis als Projekt für andere (Minecraft) Projekte verwendet werden, um Stabilität, Einheitlichkeit und Wartbarkeit zu erreichen. Sollte es Fragen geben, kann man sich gerne auf dem Discord unterhalten. Über konstruktives Feedback für diesen Blog Beitrag sind wir froh, da er diesen Blog Beitrag verbessert.
Durch dieses Projekt haben wir eine gute Basis geschaffen, andere Projekte anzugehen und tieferes Verständnis aufzubauen für Architektur und Kommunikation. Gerne kann Otis als Projekt für andere (Minecraft) Projekte verwendet werden, um Stabilität, Einheitlichkeit und Wartbarkeit zu erreichen. Die Schnittstelle, der Einsatz und die Lizenz sind auf der [Projektseite](/de/projects/otis) zusammengefasst. Sollte es Fragen geben, kann man sich gerne auf dem Discord unterhalten. Über konstruktives Feedback für diesen Blog Beitrag sind wir froh, da er diesen Blog Beitrag verbessert.


---
Expand Down
2 changes: 1 addition & 1 deletion content/blog/en/otis-regular-data-minecraft.md
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ Otis also cannot solve communication problems: teams must still align on how to

Otis provides a clean, scalable, maintainable foundation for player master data inside a Minecraft ecosystem. By centralizing essential information, it reduces duplication, simplifies development, improves GDPR compliance, and decreases operational risk across the network.

It is not a one‑size‑fits‑all solution for every scenario, but it creates the stability needed for reliable downstream services. As we continue building additional components, Otis serves as the backbone of a modern, maintainable infrastructure.
It is not a one‑size‑fits‑all solution for every scenario, but it creates the stability needed for reliable downstream services. As we continue building additional components, Otis serves as the backbone of a modern, maintainable infrastructure. The interface, use cases and license are summarised on the [project page](/en/projects/otis).

Feedback is always welcome, and discussions around Otis happen openly on Discord.

Expand Down
56 changes: 56 additions & 0 deletions content/projects/de/otis.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
slug: 'otis'
translationKey: 'otis'
title: 'Otis: Spielerstammdaten für Minecraft-Netzwerke'
summary: 'Ein Micronaut-REST-Dienst, der Mojang-UUIDs, Spielernamen, Sprache und Beitrittszeiten zentral speichert.'
status: 'active'
releasedAt: '2025-08-06'
publishedAt: '2026-10-11'
updatedAt: '2026-10-11'
platforms:
- 'Velocity'
license: 'Apache-2.0'
links:
source: 'https://github.com/OneLiteFeatherNET/Otis'
issues: 'https://github.com/OneLiteFeatherNET/Otis/issues'
maintainers:
- 'themeinerlp'
alternates:
- hreflang: 'de'
href: 'https://onelitefeather.net/de/projects/otis'
- hreflang: 'en'
href: 'https://onelitefeather.net/en/projects/otis'
- hreflang: 'x-default'
href: 'https://onelitefeather.net/en/projects/otis'
---

## Was ist das?

Otis ist ein REST-Dienst auf Basis von [Micronaut](https://micronaut.io/). Er speichert Spielerstammdaten in einer Datenbank, und Plugins, Erweiterungen und Dienste aus unserem Ökosystem fragen sie per HTTP ab. Statt dass jedes Projekt eigene Spielerdaten führt, gibt es eine zentrale Quelle. Interne Dienste können so auch mit Spielern arbeiten, die gerade offline sind. Warum es Otis gibt und wie der Dienst aufgebaut ist, erklärt der [Blogbeitrag zu Spielerstammdaten](/de/blog/otis-zentrale-spielerstammdaten-minecraft).

Otis ist keine universelle Spielerdatenbank. Es speichert nur die Felder, die unser Team als fachlich relevant einstuft.

## Was Otis speichert

Pro Spieler hält Otis die Mojang-UUID, eine interne UUID für die Verwaltung der Dienste im Ökosystem, den Spielernamen, die Sprache (Standard `en-US`), den Zeitpunkt des ersten und des letzten Beitritts sowie eine Map mit Profil-Texturen.

Das Velocity-Plugin legt beim ersten Beitritt einen Datensatz an und aktualisiert ihn beim Beitritt und Verlassen des Servers.

## Schnittstelle

- `/otis` legt ein Profil an (`POST`), liest es per UUID (`GET /byId/{owner}`) oder Namen (`GET /byName/{name}`), löscht es (`DELETE /delete/{owner}`) und listet alle auf (`GET /all`).
- `/search` prüft, ob zu einer UUID oder einem Namen ein Profil existiert.

## Was du vor dem Einsatz wissen solltest

- **Unbekannte Spieler werden nicht nachgeschlagen.** Ist ein Spieler nicht registriert, wäre ein Aufruf bei einem Drittanbieter nötig. Otis kann diesen Fall derzeit nicht behandeln.
- **Otis kann ausfallen.** Der aufrufende Dienst muss selbst damit umgehen, wenn Otis nicht erreichbar ist.
- **Java 25 ist erforderlich.** Das Build zielt auf Java 25.
- **Eine Compose-Datei startet MariaDB.** Die Datei liegt im Repository unter `docker/` und startet eine MariaDB-Instanz.
- **Fehler folgen RFC 9457.** Seit Version 1.17.0 liefert Otis Fehler als Problem Details nach RFC 9457. Clients, die Fehlerantworten auswerten, solltest du prüfen.
- **Releases laufen regelmäßig.** Das erste öffentliche Release ist v1.0.1 vom August 2025, das neueste v1.17.0 vom Oktober 2026.
- **Die README ist die Referenz.** Eine eigene Dokumentationsseite gibt es noch nicht.

## Mehr dazu im Blog

Der Beitrag [Otis: Spielerstammdaten für Minecraft](/de/blog/otis-zentrale-spielerstammdaten-minecraft) beschreibt die Architektur, die Probleme dahinter und die Grenzen des Dienstes.
56 changes: 56 additions & 0 deletions content/projects/en/otis.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
slug: 'otis'
translationKey: 'otis'
title: 'Otis: Central player data for Minecraft networks'
summary: 'A Micronaut REST service that stores Mojang UUIDs, player names, languages and join times in one place.'
status: 'active'
releasedAt: '2025-08-06'
publishedAt: '2026-10-11'
updatedAt: '2026-10-11'
platforms:
- 'Velocity'
license: 'Apache-2.0'
links:
source: 'https://github.com/OneLiteFeatherNET/Otis'
issues: 'https://github.com/OneLiteFeatherNET/Otis/issues'
maintainers:
- 'themeinerlp'
alternates:
- hreflang: 'de'
href: 'https://onelitefeather.net/de/projects/otis'
- hreflang: 'en'
href: 'https://onelitefeather.net/en/projects/otis'
- hreflang: 'x-default'
href: 'https://onelitefeather.net/en/projects/otis'
---

## What is this?

Otis is a REST service built on [Micronaut](https://micronaut.io/). It stores player master data in a database, and plugins, extensions and services from our ecosystem query it over HTTP. Instead of every project keeping its own player data, there is one central source. Internal services can then work with players who are offline. The [blog post on player data](/en/blog/otis-central-player-data-minecraft) explains why Otis exists and how the service is built.

Otis is not a universal player database. It only stores the fields our team considers relevant.

## What Otis stores

For each player, Otis keeps the Mojang UUID, an internal UUID for managing the services in the ecosystem, the player name, the language (default `en-US`), the timestamps of the first and last join, and a map of profile textures.

The Velocity plugin creates a record when a player joins for the first time and updates it when the player joins or leaves the server.

## Interface

- `/otis` creates a profile (`POST`), reads it by UUID (`GET /byId/{owner}`) or by name (`GET /byName/{name}`), deletes it (`DELETE /delete/{owner}`) and lists all profiles (`GET /all`).
- `/search` checks whether a profile exists for a UUID or a name.

## What to know before you use it

- **Unknown players are not looked up.** If a player is not registered, a call to a third-party service would be needed. Otis cannot handle this case at the moment.
- **Otis can be unavailable.** The calling service has to handle the case where Otis cannot be reached.
- **Java 25 is required.** The build targets Java 25.
- **A Compose file starts MariaDB.** It lives in the repository under `docker/` and starts a MariaDB instance.
- **Errors follow RFC 9457.** Since version 1.17.0, Otis returns errors as problem details under RFC 9457. Clients that read error responses should check their handling.
- **Releases come regularly.** The first public release is v1.0.1 from August 2025, the latest is v1.17.0 from October 2026.
- **The README is the reference.** There is no dedicated documentation site yet.

## More in the blog

The post [Otis: Central player data for Minecraft](/en/blog/otis-central-player-data-minecraft) covers the architecture, the problems behind it and the limits of the service.
Loading