gf2:projekte:minecraft:interaktionen

Dies ist eine alte Version des Dokuments!


Tipps und Informationen zum Programmieren von Interatkionen

Es gibt viele Möglichkeiten, wie man Interaktionen in Minecraft einsetzen kann:

  • Wenn ein Spieler ein bestimmtes Feld betritt, erscheinen Gegner oder er wird zum nächsten Level teleportiert, er tappt in eine Falle und stirbt etc.
  • Wenn ein Spieler einen Hebel betätigt, einen Knopf drückt oder ein Item verwendet, passiert etwas.
  • Nur wenn ein Spieler einen bestimmten Gegenstand gefunden hat, lässt sich eine Tür öffnen.
  • etc.

Eine Möglichkeit, Interaktionen zu realisieren sind Command-Blocks. Dies sind „normale“ Blocks, die man jedoch nicht im Inventar findet. Man muss sich Command-Blocks mit dem Chat-Befehl /give @p command_block ins Inventar legen.

Wird ein Command-Block mit Strom aktiviert (dazu kann man einen Hebel, einen Knopf oder auch eine Platte verwenden), dann führt er einen Befehl aus, den man auch im Chatfenster verwenden kann. Diesen Befehl und weitere Einstellungen kann man vornehmen, wenn man mit der rechten Maustaste auf den Command-Block klickt. Gebt ihr für den Befehl (Command-Input) z.B. teleport @p 100 100 100 ein, dann wird der nächste Spieler (@p) zum den Koordinaten (100/100/100) teleportiert, sobald der Command-Block aktiviert wird. Diese Aktivierung kann man z.B. mit einer Pressure_Plate machen, die man auf den Command-Block baut (wenn man auf den Block bauen will, muss man die Shift-Taste drücken, da der normale Rechtsklick ja die Eigenschaften des Blocks öffnet).

Man kann mit Command-Blocks auch Python-Code ausführen lassen. Dies wird unten unter Punkt x.x erklärt.

Man kann auch Python-Funktionen ausführen, wenn bestimmte Bedingungen erfüllt sind. Dazu verwendet man sogenannte „Listeners“. Das sind Funktionen, die im Hintergrund mitlaufen und darauf warten, dass etwas Bestimmtes passiert. Ist dies der Fall, so wird eine weitere Funktion aufgerufen. Du kennst dies bereits von der Funktion player.on_chat:

Wenn der Spieler „baue_Goldhaus“ in den Chat tippt, soll der ausgehöhlte Goldblock erstellt werden:

def baue_Goldhaus():
    blocks.fill(GOLD_BLOCK, pos(1, 1, 1), pos(10, 10, 10))
    blocks.fill(AIR, pos(2,2,2),  pos(9, 9, 9))

player.on_chat("baue_Goldhaus", baue_Goldhaus)

Es gibt verschiedene von diesen Listenern. Alle beginnen mit player.on, oder mit blocks.on . (player.on_chat, player.on_item_interacted, blocks.on_block_broken, blocks,on_blocks_placed,)

Verwendet man den Listener on_travelled_walk() so wird die entsprechende Funktion bei jeder Bewegung des Spielers aufgerufen. Dadurch kann man beliebige Interaktionen auslösen. Beispielsweise kann man den Spieler töten, wenn er bei einer bestimmten Position in die Falle getreten ist etc.

Hierfür fragt man in der Funktion die Position des Spielers ab und kann dann in einem if-Befehl entsprechend dieser Position eine Aktion programmieren. Das folgende Programm wird bei jeder Bewegung des Spielers ausgeführt und platziert 4 Felder neben dem Spieler einen Glasblock, wenn sich dieser in einem bestimmten Bereich aufhält:

def on_travelled_walk():
    x = player.position().get_value(Axis.X)
    y = player.position().get_value(Axis.Y)
    z = player.position().get_value(Axis.Z)
    
    player.say("x:"+str(x)+" y:"+str(y)+" z:"+str(z))

    if (10<x<20) and (y==4) and (z==15):
        blocks.place(GLASS,pos(4,0,0))
   
player.on_travelled(WALK, on_travelled_walk)

Zurück zur Übersicht des Projektes

  • gf2/projekte/minecraft/interaktionen.1668768985.txt.gz
  • Zuletzt geändert: 2022/11/18 11:56
  • von lehmannr