![]() | Let’s Play Programmieren lernen mit Python und Minecraft: Plugins erstellen ohne Vorkenntnisse 1. Auflage 2017, Softcover € 24,99 |
Über das Buch
Du spielst schon lange Minecraft und denkst, du hast schon alles gesehen? Kennst du schon das Feuerschwert, den Enderbogen oder den Spielmodus »Schneeballschlacht«? Du willst auf Knopfdruck Türme, Mauern oder sogar ganze Häuser bauen? Vollautomatisch auf Geschehnisse in der Spielwelt reagieren? Mit eigenen Plugins kannst du all das und noch viel mehr entdecken und ganz nebenbei auch noch programmieren lernen.
Python ist für Programmiereinsteiger besonders leicht zu lernen. Daniel Braun zeigt dir, wie du mit Python und Bukkit oder Spigot Erweiterungen für Minecraft programmierst, sogenannte Plugins, die du dann zusammen mit deinen Freunden auf deinem eigenen Minecraft-Server ausprobieren kannst. Dafür sind keine Vorkenntnisse erforderlich, du lernst alles von Anfang an.
Errata
- S. 266 (Kapitel A.6)
Letzte Tabellenzeile, Spalte „Befehl“: x >= y.
Neue Minecraft Versionen (>1.15)
In neueren Minecraft-Versionen haben sich die Benennung einiger Materialen, sowie manche Befehle geändert. Das führt dazu, dass das Notunterkunft-Plugin in der abgedruckten Form mit neuen Minecraft-Versionen nicht mehr kompatibel ist. Folgender Quellcode funktioniert mit den neuen Minecraft-Versionen (nicht aber mit älteren):
from org.bukkit.entity import Player from org.bukkit.block import BlockFace from org.bukkit.block.data import BlockData from org.bukkit.block.data import Bisected from org.bukkit.block.data import Directional from org.bukkit.block.data.type import Door from org.bukkit.block.data.type import Bed class NotunterkunftPlugin(PythonPlugin): def onEnable(self): pass def onCommand(self, sender, command, label, args): if isinstance(sender, Player): spieler = sender #quader aussen position = spieler.getLocation() position.setX(position.getX() + 1) NotunterkunftPlugin.quaderBauen(self, spieler, position, 4, 10, 10, bukkit.Material.BRICKS) #quader innen position = spieler.getLocation() position.setX(position.getX() + 2) position.setZ(position.getZ() + 1) NotunterkunftPlugin.quaderBauen(self, spieler, position, 3, 8, 8, bukkit.Material.AIR) #tuer position = spieler.getLocation() position.setX(position.getX() + 1) position.setZ(position.getZ() + 4) welt = spieler.getWorld() tuerUnten = welt.getBlockAt(position) tuerUnten.setType(bukkit.Material. OAK_DOOR) tuerUntenDaten = tuerUnten.getBlockData() tuerUntenDaten.setHalf(Bisected.Half.BOTTOM) tuerUntenDaten.setFacing(BlockFace.WEST) tuerUnten.setBlockData(tuerUntenDaten) position.setY(position.getY() + 1) tuerOben = welt.getBlockAt(position) tuerOben.setType(bukkit.Material.OAK_DOOR, False) tuerObenDaten = tuerOben.getBlockData() tuerObenDaten.setHalf(Bisected.Half.TOP) tuerObenDaten.setFacing(BlockFace.WEST) tuerOben.setBlockData(tuerObenDaten) #bett position = spieler.getLocation() position.setX(position.getX() + 8) position.setZ(position.getZ() + 4) bettFuss = welt.getBlockAt(position) bettFuss.setType(bukkit.Material.RED_BED) bettFussDaten = bettFuss.getBlockData() bettFussDaten.setPart(Bed.Part.FOOT) bettFussDaten.setFacing(BlockFace.EAST) bettFuss.setBlockData(bettFussDaten) bettKopf = bettFuss.getRelative(BlockFace.EAST) bettKopf.setType(bukkit.Material.RED_BED, False) bettKopfDaten = bettKopf.getBlockData() bettKopfDaten.setPart(Bed.Part.HEAD) bettKopfDaten.setFacing(BlockFace.EAST) bettKopf.setBlockData(bettKopfDaten) #fackel position = spieler.getLocation() position.setX(position.getX() + 9) position.setZ(position.getZ() + 4) position.setY(position.getY() + 2) fackel = welt.getBlockAt(position) fackel.setType(bukkit.Material.WALL_TORCH, False) fackelDaten = fackel.getBlockData() fackelDaten.setFacing(BlockFace.WEST) fackel.setBlockData(fackelDaten) else: self.getLogger().info("Dieser Befehl kann nur von Spielern ausgefuehrt werden!") return True def quaderBauen(self, spieler, position, hoehe, breite, tiefe, material): welt = spieler.getWorld() xStart = position.getX() yStart = position.getY() zStart = position.getZ() for x in range (0, tiefe): position.setX(xStart + x) for y in range (0, hoehe): position.setY(yStart + y) for z in range (0, breite): position.setZ(zStart + z) block = welt.getBlockAt(position) block.setType(material)Downloads
- Java
- Jython (Wichtig! Datei nach dem Download in jython.jar umbenennen)
- CraftBukkit / Spigot
- PPLoader 1.2.0 (NEU für Server ab Version 1.12)
- PPLoader 1.1.0 (für Server älter als Version 1.12)
- Komodo Edit
- Plugins aus dem Buch