Java-Bibliothek für das Minecraft-Protokoll

Wenn sich der Minecraft-Client mit dem entsprechenden Server verbindet, so kommunizieren diese über ein festgelegtes Protokoll. Mit einer eigenen Implementation dieses Protokolls ist es möglich sich mit einem Minecraft-Server zu verbinden und entsprechende Aktionen durchzuführen. Zum Beispiel könnte diese Möglichkeit genutzt werden um einen Bot für Minecraft zu schreiben. Eine solche Implementation des Minecraft-Protokolls ist die Java-Bibliothek MCProtocolLib von Steven Smith.

Central City auf meinem eigenen Minecraft-Server

Ein minimales Beispiel, für den Login auf dem Server (basierend auf einem Unit-Test der Bibliothek), mit besagter Bibliothek könnte dabei wie folgt aussehen:

public class SimpleBot {

    private static final String HOST = "example.org";
    private static final int PORT = 25565;
    private static final Proxy PROXY = Proxy.NO_PROXY;
    private static final Proxy AUTH_PROXY = Proxy.NO_PROXY;
    private static final String USERNAME = "user@example.org;
    private static final String PASSWORD = "password";

    public static void main(String[] args) throws FileNotFoundException, RequestException {

        MinecraftProtocol protocol = new MinecraftProtocol(USERNAME, PASSWORD);
        Client client = new Client(HOST, PORT, protocol, new TcpSessionFactory(PROXY));
        client.getSession().setFlag(MinecraftConstants.AUTH_PROXY_KEY, AUTH_PROXY);

        client.getSession().addListener(new SessionAdapter() {
            @Override
            public void packetReceived(PacketReceivedEvent event) {
                if(event.getPacket() instanceof ServerJoinGamePacket) {
                    event.getSession().send(new ClientChatPacket("Hello, World!"));
                } else if(event.getPacket() instanceof ServerChatPacket) {
                    Message message = event.getPacket().getMessage();
                    System.out.println("Received Message: " + message.getFullText());
                    if(message instanceof TranslationMessage) {
                        System.out.println("Received Translation Components: " + Arrays.toString(((TranslationMessage) message).getTranslationParams()));
                    }

                    event.getSession().disconnect("Finished");
                }
            }

            @Override
            public void disconnected(DisconnectedEvent event) {
                System.out.println("Disconnected: " + Message.fromString(event.getReason()).getFullText());
                if(event.getCause() != null) {
                    event.getCause().printStackTrace();
                }
            }
        });

        client.getSession().connect();
    }
}

In diesem Beispiel wird sich mit dem Server verbunden und nach erfolgreicher Verbindung eine Chatnachricht gesendet. Danach loggt sich der Bot wieder aus. Der Quelltext der Bibliothek ist auf GitHub zu finden. Das Projekt ist unter der MIT-Lizenz lizenziert und damit freie Software.

Speedtest unter Ubuntu auf der Konsole

Für den Test der Geschwindigkeit der eigenen Anbindung an das Internet, gibt es seit Jahren den Speedtest von Ookla. Dieser kann nicht nur im Browser, sondern auch in der Konsole unter Ubuntu genutzt werden. Nach der Installation mittels:

apt install speedtest-cli

kann der Dienst über die Kommandozeile genutzt werden:

speedtest-cli

Anschließend startet der Test der Anbindung und das entsprechende Ergebnis wird dargestellt:

Retrieving speedtest.net configuration…
Testing from Deutsche Telekom (XXX.XXX.XXX.XXX)…
Retrieving speedtest.net server list…
Selecting best server based on ping…
Hosted by SMSnet (Szczecin) [85.48 km]: 24.498 ms
Testing download speed……………………………………………………………………..
Download: 160.21 Mbit/s
Testing upload speed…………………………………………………………………………………………
Upload: 121.56 Mbit/s

Im Gegensatz zur Webseite kommt die Version für die Kommandozeile ohne Werbung aus. Das Projekt für die Kommandzeilen-Version befindet sich auf GitHub. Es ist unter der Apache-Lizenz in Version 2 lizenziert und somit freie Software.

sudo mit anderem Nutzer durchführen

Wenn ein Kommando auf der Linux-Konsole mit vorangestellten sudo ausgeführt wird, wie z.B.

sudo apt install mc

wird das Kommando in Normalfall mit den Rechten und im Kontext des Nutzers root ausgeführt. Manchmal soll eine solche Operation jedoch mit einem anderen Nutzer durchgeführt werden. Dazu dient die sudo-Option -u:

sudo -u www-data crontab -e

Nach der Option muss der Nutzer angegeben werden, in dessen Kontext gewechselt werden soll. In diesem Beispiel würde die Crontab-Datei des Nutzers www-data geöffnet.

Interactive Fiction mittels Twine

Interactive Fiction, also Geschichten in denen vom Leser Entscheidungen getroffen werden können, existieren seit Jahrzehnten. Im Laufe der Zeit haben sich die Werkzeuge verbessert, mit deren Hilfe solche Geschichten erstellt werden können. Eines dieser Werkzeuge ist Twine. Mithilfe von Twine können solche interaktiven Geschichten mit ihren unterschiedlichen Verzweigungen geschrieben werden.

Twine kann auch online genutzt werden

Nachdem die Geschichte geschrieben ist, kann sie in ein HTML exportiert werden und so in jedem Browser erlebt werden. Twine ist verfügbar für Windows, Linux und macOS. Daneben kann Twine direkt online genutzt werden. Die offizielle Seite des Projektes ist unter twinery.org zu finden. Der Quelltext der unterschiedlichen Subprojekte von Twine findet sich in unterschiedlichen Repositorys ([1], [2] [3]). Ein Großteil der Subprojekte ist unter GPL in Version 3 lizenziert und damit freie Software.

Fotocollagen unter Ubuntu erstellen

Um eine Fotocollage zu erstellen existieren viele Wege. So kann die Collage mit dem Bildbearbeitungsprogramm der Wahl, wie z.B. GIMP, erstellt werden. Mit zunehmender Anzahl von Fotos kann sich dieser Prozess allerdings in die Länge ziehen.

Eine mittels PhotoCollage erstellte Collage

Eine Alternative zu diesem manuellen Prozess kann die Anwendung PhotoCollage, welche über das Paket photocollage installiert werden kann, darstellen:

sudo apt install photocollage

Die Anwendung verfügt über ein simples Interface, in welchem die Bildgröße und die Farbe der Ränder eingestellt werden. Anschließend können die Bilder hinzugefügt werden und unterschiedliche Anordnungen ausprobiert werden. Anschließend kann die Collage exportiert werden. Im Gegensatz zu vielen Webdiensten, welche ähnliches leisten, ist PhotoCollage nicht auf bestimmte Größen beschränkt. Damit sind auch Collagen im Format DIN-A2 und größer möglich. Der Quelltext des Projektes ist auf GitHub zu finden. Lizenziert ist PhotoCollage unter der GPL in der Version 2 und damit freie Software.