UglyTech - TheRock und Contao

TheRock (Source)

Mit TheRock protokollieren wir Aktionen von Usern auf unserem Server und können dann so Griefs und andere Widrigkeiten beheben. Ehemals haben wir das Plugin LogBlock genutzt. Leider wurde dieses Plugin mit immer mehr Funktionalitäten ausgestattet, die wir nicht benötigten, und dadurch immer langsamer, weswegen wir uns für eine Eigenentwicklung entschieden. Der Name, was bei unseren Plugins immer so eine Sache ist, kommt vom Film "The Rock - Fels der Entscheidung" und ist aber eher unser Fels in der Brandung. Sprengt einer alles in die Luft, so zeichnet TheRock dies auf und wir können ein Backup der gesprengten Bereiche einspielen.

Damit dies funktioniert, lauscht das Plugin auf alle Weltveränderungen und speichert sie in einer großen Datenbank. Einen Ausschnitt konntet ihr im ersten Artikel lesen. Wollen wir eine Aktion wieder rückgängig machen, suchen wir in der Datenbank nach den Aktionen des Users und machen alle Aktionen vom User rückgängig. Hier soll auszugsweise erläutert werden, wie dies funktioniert.

Wir speichern immer für einen Monat alle Änderungen der Nutzer. Dies sind im Moment ca. 500.000 für die Hauptwelt. Dies ist relativ viel, muss aber in wenigen Millisekunden durchsucht werden. Es müssen die Einträge gefunden werden, die einen bestimmten Areal in der Welt entsprechen. Dazu werden die Koordinaten vergleichen. Wie geht das so fix? Datenbanken.

Datenbanken sind Programme, die sehr effizient und effektiv Daten verwalten können. Und davon viele. Der Megabytebereich ist langweilig, wirklich interessant werden Datenbanken beim Gigabyte oder Terabyte bereich. Sie müssen viele Anfragen pro Sekunde abfertigen können, die auch in Millionen von Einträgen die jeweils richtigen zurückliefern. Dazu werden bestimmte Anfragesprachen entworfen wie z.B. das bekannt SQL - Structured Query Language. "SELECT * FROM world_the_end WHERE x=1

AND y=1 AND z=1;" liefert alle Blockänderungen an den Koordinaten 1 1 1 zurück. Die Organisation dieser Daten ist ebenfalls wichtig. Keys, Hashtables, B-Trees und allerlei komische Sachen erwarten den unverfrorenen Ugly beim Erkunden von Datenbanken.

Verwirrt? Ja, das sind Datenbanken. Sie sind ein eigener Bereich für sich. Warum wir darüber reden? Weil TheRock mehr Datenbank als Plugin ist. Es speichert und liest nur in der Datenbank nach, mehr nicht. Es ist eher eine einfacher Art, auf die Datenbank zuzugreifen. Ein wenig enttäuschend, aber so ist die Welt der Magie immer, wenn man den Trick erfährt.

TheRock selber wird mit dem Minecraft-API einige Änderungen durchleben müssen. Bisher speichern wir für Items und Blöcke die ID ab, jedoch verschwinden die IDs mit Version 1.8 wohl völlig und werden durch möglichst eineindeutige Namen ersetzt. Auch werden wir sehen, ob wir die Anbindung zur Datenbank anders lösen können um dies ein wenig performanter zu gestalten.

ContaoTwo (Source)

ContaoTwo ist unser Synchronisierungsplugin mit der Website. Eigentlich ContaoThird, weil es nun zum dritten Mal neugeschrieben wurde, aber dazu später. Contao ist ein Content Management System - CMS - und dient zum Erstellen und vorallem Pflegen von Websiten. In einem CMS konzentriert man sich auf die Inhalte von Website und nimmt eher Vorlagen, statt die Website von Grund auf zu Programmieren. Contao wird bei uns eingesetzt und erspart den Redakteuren eine Menge Arbeit. Sie müssten sonst HTML, CSS und Co können um ihre Beiträge hier zu veröffentlichen. Hier mal ein Screenshot von einem euch vielleicht bekannten Artikel in der Entstehung:

Contao hat auch Nutzergruppen und hier kommt das Plugin zum Spiel. Wenn ihr Payuser werdet oder euch auf dem Server registriert, seid ihr erstmal nur auf der Website ein User mit einer Gruppe. Das Plugin liest diese Gruppe aus der Datenbank aus und synchronisiert diese mit der Gruppe auf dem Minecraftserver. So werdet ihr Pay, wenn ihr auf der Website bezahlt werdet.

Warum nun ContaoThird? Das Plugin ist hässlich und stark aufgebläht. Zum Einen steht in der Datenbank als Gruppe nicht "Pay", "Admin" oder "Guest", sondern so: "a:2:{i:0;s:1:". Kann ich euch auch nicht sagen, was es bedeutet, wir fassen diese Stelle im Quellcode auch nie an. Wir friemeln dieses Zeichenwirrwar auseinander und bekommen irgendwann eure Gruppe. Es hat etwas damit zu tun, dass Contao PHP ist und PHP macht halt so ein schönes Zeug. Irgendwie.

Aber das schlimme folgt erst jetzt. ContaoTwo kümmert sich gar nicht um die Nutzergruppen, sondern synchronisiert diese nur. Die Nutzergruppen auf der Minecraftserver werden von drei anderen Plugins verwaltet. Ja, drei. Reihenfolge ist die: ContaoTwo -[gt] MinestarCore -[gt] FalseBookCore -[gt] GroupManager. ContaoTwo macht die Synchronisieren, OK. MinestarCore war mal ne tolle Idee, in späteren Artikeln mehr dazu. FalseBookCore kümmert sich um ein Gruppencaching, später mehr. GroupManager jedoch ist eigentlich das Plugin, was die Nutzergruppen verwaltet mit ihren Rechten. Möchte Contao nun was ändern, weil es registiert, dass User UglyTech nun Pay ist, so fragt er MinestarCore an. MinestareCore reicht an FalseBookCore weiter und FalseBookCore an GroupManager und dann nochmal zurück. Wie der Passierschein A38 von Asterix.

Contao macht noch andere tolle Sachen. Es speichert eure Verwarnungen ab, hoffentlich habt ihr keine, und erfasst eure Blockstatistiken. Ach ja, und es kümmert sich noch um die Färbung des Chats nach jeweiligen Gruppen. hängt alles nur so lose mit einander zusammen? Korrekt, willkommen bei Contao!

Doch hoffentlich nicht mehr alzu lange! Contao wird stark entschlackt. Mit dem API wird Contao nur noch die Synchronisierung zwischen Website und Minecraftserver übernehmen. Statistikerfassung, Chateinfärbung und Verwarnungen werden ausgelagert und ein anderes Plugin kümmert sich darum. Auch wird die Schnittstelle hübscher programmiert und vielleicht schaffen wir es dann, statt "Default" ein "Gast" zu haben.

In dem Sinne, ihr wart tolle Gäste heute und bis zum nächsten Mal!

Weitere Artikel

Gamescom 2014 - Minestar.de on Tour 2
Minestar Weekly - 33. KW
UglyTech - Die Plugin Schmiede
Gamescom 2014 - Minestar.de on Tour
Minestar Weekly - 32. KW
UglyTech - Unser Minecraft Server II

Navigation

  1. Dashboard
  2. Blog
  3. Forum
  1. Datenschutzerklärung
  2. Impressum

Aktueller Ort

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen.