Die Mese-Mechanik des Minetest-Adventskalenders – eine Dokumentation

Von Norbert Thien, multimediamobil – Region Süd, www.multimediamobile.de/sued.html

Am Anfang stand die Frage, wie ein Adventskalender in Minetest aussehen könnte. Baut man einfach eine große Wand mit 24 Zugängen? Und wie schafft man es, dass sich die Türen immer nur am richtigen Tag öffnen?

Schnell war klar, dass viel MESE, das Redstone in Minetest, zum Einsatz kommen würde. Aber viele MESE-Leitungen bedeuten oft auch, dass man eine Menge Technik verbauen muss. Und wie bei richtigen Gebäuden will man natürlich die Installation möglichst vor den Augen der Besucher verbergen. So entstanden am Ende 24 kleine Häuser, vier Blöcke breit, fünf Blöcke hoch und tief, mit einem kleinen Spitzdach:

Die Technik

Zum Einsatz kommen Stahltüren (STEEL DOOR), denn diese sind individualisiert, können also mit Rechtsklick nur von der Person geöffnet werden, die sie angelegt hat. Oder aber über MESE-Objekte, zum Beispiel mit einer Druckplatte (STONE PRESSURE PLATE). Hierfür – und für die weiteren Bauten – müssen die beiden Mods MESECONS und DIGILINES  installiert sein. Der vereinfachte Aufbau sieht am Ende so aus:

Eine Doppeltür verschließt das Haus (nur der Optik wegen; eine einzelne Tür hätte auch gereicht). Davor – aber mit einem Block Abstand – zwei Druckplatten. Druckplatten geben durch den nächsten darunterliegenden Block ein Signal weiter, hier an zwei VERTICAL MESECON. Das Signal wird von isolierten Leitungen (INSULATED MESECON) einem LUA-Controller zugeführt. Nicht immer wollen die Mesecon-Leitungen gleich die richtige Ausrichtung annehmen. Hier hilft der Schraubenzieher (SCREW DRIVER).

Der LUA-Controller lässt sich mit Rechtsklick programmieren. Die Programmierung entscheidet, ob einer der Pins des Controllers aktiviert wird und so die davorliegenden VERTICAL MESECONs mit Strom versorgt. Dann öffnet sich die Tür. Außerdem führt ein DIGILINE vom LUA-Controller zum LCD-Objekt und schreibt kleine Nachrichten auf den Bildschirm.

Die Programmierung

Der Editor des LUA-Controllers wird mit Rechtsklick geöffnet. Zu Beginn wird eine Variable namens hausnummer angelegt und mit dem Wert initialisiert, an dem sich die Tür frühestens öffnen soll (Beispiel: hausnummer = 19). Der LUA-Controller fragt Pin C ab, ob ein Signal vom INSULATED MESECON kommt, also, ob sich jemand vor dem Haus auf die Druckplatte gestellt hat. Jetzt vergleicht die Funktion os.datetable().day, ob der Wert der Variable hausnummer kleiner oder gleich dem aktuellen Tag ist. Fällt der Vergleich positiv aus, schaltet der LUA-Controller den Port B aktiv. Dadurch erhalten die VERTICAL MESECONs, die am Port B anliegen, ein Signal und öffnen die Türen.

Außerdem verbindet am Port A ein DIGILINE den LUA-Controller mit dem LCD-Bildschirm (allerdings ist es in diesem Fall egal, an welchem Port die DIGILINE hängt, denn die Funktion digiline_send() schickt ihre Informationen grundsätzlich an alle Ports). Mit digiline(“Kanalname”, “anzuzeigende Nachricht”) erzeugt man eine Nachricht auf dem LCD-Objekt. Vor dem Betreten der Platten steht auf dem Bildschirm immer der Standardhinweis “Stellen Sie sich auf die Druckplatte.“, danach entweder “Herzlich Willkommen in Haus XX.” oder “Kommen Sie bitte in XX Tagen wieder.“, je nachdem, wie der Vergleich von aktuellem Tag und hausnummer ausgefallen ist. Natürlich sorgt die Programmierung dafür, dass beim Verlassen der Druckplatten die Türen wieder geschlossen werden und der Standardhinweis auf dem LCD-Bildschirm erscheint.

Übrigens: Die im Haus platzierten Druckplatten dienen nur dazu, den Besucher bei Bedarf wieder hinauszulassen; sie werden nicht durch den LUA-Controller gesteuert.

 

Fehlerquellen

Typische Fehlerquellen sind ein fehlender oder falscher Name, unter dem das LCD-Objekt angesprochen wird (Rechtsklick). Der LUA-Controller richtet sich mit Port A immer nach Westen aus und lässt sich nicht mit dem SCREW DRIVER drehen. Man muss also aufpassen muss, ob man gerade die richtigen Pins und Ports anspricht (vor allem bei Copy & Paste). Variablen erleichtern hier die Arbeit. Initialisiert man zwei Variablen namens pin_abcd = port.c und port_abcd = {false, true, false, false} , kann man später im Quellcode mit pin_abcd == true und port = {a=port_abcd[1], b=port_abcd[2], c=port_abcd[3], d=port_abcd[4]} schnell die Belegung ändern, in dem man die beiden Va­ri­ablen anders initialisiert. Eine weitere Fehlerquelle entsteht dadurch, dass man beim Abbauen von Steinen versehentlich eine bereits darunter angelegte MESE-Leitung entfernt.

Texturen

Für die Online-Fassung wurde der Mod GEMALDE verwendet und um eigene kachelbare Texturen erweitert. Für die Offline-Variante kam zusätzlich der Mod COLOUREDSTONEBRICKS  zum Einsatz. Auch hier wurden eigene Texturen erstellt und die entsprechenden Progammzeilen im Code angepasst.

Adventskalender ansehen

Der Adventskalender ist Teil des großartigen rpi-virtuell Adventskalenders mit vielen weiteren Gebäuden passend zur Weihnachtszeit und kann online gespielt werden. Außerdem gibt es eine Offline-Version, die nur den oben beschriebenen Kalender enthält (Download: https://www.multimediamobile.de/sued/materialien-sued/sued-minetest.html)

4 Antworten auf „Die Mese-Mechanik des Minetest-Adventskalenders – eine Dokumentation“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert