Konvertierung der Map von Minecraft 1.12 auf 1.13 durchführen

Vor einigen Wochen erschien Version 1.13 des Open-Word-Spieles Minecraft. Im Zuge dieser Aktualisierung wurden unter anderem die Daten der Blöcke verändert. Beim Erzeugen der Weltkarte über die freie Minecraft-Rendersoftware Mapcrafter traten nach dem Update Probleme auf.

Nur die bereits konvertierten Chunks werden gerendert

Während der Server ohne Probleme lief, wurden in der Karte nur bestimmte Chunks gerendert. Der Grund hierfür war das nur die Chunks in das neue Format der Version 1.13 konvertiert wurden, die von den Spielern auf dem Server besucht worden waren. Alle anderen Chunks lagen noch im Format der Version 1.12 vor. Eine Lösung für dieses Problem schafft der mit 1.13 neu eingeführte Kommandozeilen-Parameter –forceUpgrade des Minecraft-Servers. Wenn man diesen entsprechend startet:

java -Xmx4096M -Xms2048M -jar minecraft_server.jar nogui --forceUpgrade

beginnt der Server alle Chunks in das neue Format zu überführen:

[06:42:34] [Server thread/INFO]: Starting minecraft server version 1.13.1
...
[06:42:34] [Server thread/INFO]: Forcing world upgrade!
[06:42:34] [Server thread/INFO]: Counting chunks...
[06:42:48] [Server thread/INFO]: Upgrading structure data...
[06:42:48] [Server thread/INFO]: 0% completed (0 / 1630135 chunks)...
[06:42:49] [Server thread/INFO]: 0% completed (0 / 1630135 chunks)...
..
[08:52:58] [Server thread/INFO]: 99% completed (1629866 / 1630135 chunks)...
[08:52:59] [Server thread/INFO]: 99% completed (1630017 / 1630135 chunks)...
[08:53:00] [pool-4-thread-1/INFO]: World optimizaton finished after 7812721 ms

Je nach der Größe der eigenen Welt kann dieser Vorgang durchaus einige Stunden in Anspruch nehmen. Nachdem alle Chunks konvertiert wurden, funktioniert das Rendering der Weltkarte wieder wie gewohnt.

Font für Social Icons

Mittlerweile gibt es unzählige sogenannte Social Icons für Dienste wie Facebook, GitHub oder Twitter. In vielen Fällen benötigt man ein solches Social Icon auf einer Webseite oder in einem Dokument. Natürlich kann man sich nun die entsprechenden Bilder bei den jeweiligen Anbietern, über die Presse- bzw. Markenportale beziehen. Bei mehreren Anbietern kann dies allerdings eine zeitintensive Tätigkeit sein.

Der Font Socicon in Aktion

Mit dem Font Socicon, welcher unter socicon.com bezogen werden kann, hat man alle diese Social Icons in einem Font zusammengefasst. Dieser kann direkt auf Webseiten eingebunden oder lokal installiert werden. Lizenziert ist der Font unter der SIL Open Font License 1.1.

Quelltext einer Mediawiki-Seite anzeigen

Vor einiger Zeit hatte ich einen Twitter-Bot entwickelt welcher als Datenquelle unter anderem die Wikipedia nutzt. Dazu nutzt der Bot unter anderem eine Bibliothek um auf die MediaWiki-API zuzugreifen. Nun stellte ich fest das die Nutzung der API in diesem Fall allerdings überdimensioniert war. Stattdessen ist es möglich sich für eine beliebige MediaWiki-Seite denn Quelltext anzeigen zu lassen. Die URL sieht dabei wie folgt aus:

https://de.wikipedia.org/wiki/Machinima?action=raw

Durch den Parameter action=raw wird der Quelltext anstatt des HTML-Renderings ausgegeben und kann somit ausgewertet werden.

HttpWebResponse.GetRequestStream hängt sich auf

Bei der gestern vorgestellten Twitter-Bibliothek bemerkte ich nach einigem Testen ein Problem. Folgender Quellcode:

var twitter=new TinyTwitter.TinyTwitter(oauth);
twitter.UpdateStatus(".");
twitter.UpdateStatus("..");
twitter.UpdateStatus("..");
twitter.UpdateStatus("....");
twitter.UpdateStatus(".....");

funktionierte nicht wie gewünscht. Anstatt auf Twitter diese fünf Tweets angezeigt zu bekommen, schaffen es nur die ersten zwei Tweets durch die API. Das Problem ergab sich hierbei daraus das sich die .NET Framework-Methode HttpWebResponse.GetRequestStream einfach aufhängte bzw. nicht mehr reagierte. Problematisch daran ist, das man als Entwickler keine Rückmeldung bekommt, warum das ganze schief läuft. Nach einiger Recherche stellte ich dann fest, das HttpWebResponse.GetRequestStream nur dann erneut aufgerufen werden darf, wenn der vorherige Aufruf der Methode abgeschlossen ist. Im Falle der TinyTwitter Bibliothek, habe ich das Problem durch Aufruf der Methode Abort (nachdem die angefragten Informationen angekommen sind) im HttpWebResponse-Objekt gelöst.

Leichtgewichtige Twitter-API-Bibliothek für C#

Die meisten Bibliotheken welche Zugang zur Twitter-API in C# (.NET/Mono) bereitstellen haben ein Problem. Sie sind schlicht zu groß. Meist bestehen sie aus einem dutzend Bibliotheken und werden mit der Zeit immer unhandlicher. So war auf der Suche nach einer leichtgewichtigen Bibliothek für den Zugriff auf das Twitter-API. Fündig wurde ich mit TinyTwitter.

TinyTwitter auf GitHub

TinyTwitter auf GitHub

Diese Bibliothek besteht im Kern aus einer Datei und lässt sich einfach verwenden. Um einen Tweet zu senden, recht folgender Code:

var oauth = new OAuthInfo
{
    AccessToken = "YOUR ACCESS TOKEN",
    AccessSecret = "YOUR ACCES SECRET",
    ConsumerKey = "YOUR CONSUMER KEY",
    ConsumerSecret = "YOUR CONSUMER SECRET"
};

var twitter = new TinyTwitter(oauth);

twitter.UpdateStatus("I'm tweeting.");

Zu finden ist die Bibliothek auf GitHub. Lizenziert ist TinyTwitter unter der Apache Lizenz und damit freie Software.