Python ist die einfachste Programmiersprache überhaupt. Warum Java lernen wenn man Minecraft-Plugins auch in Python schreiben kann? WARUM?! Lest weiter unten die Antwort von JOO200 in diesem Beitrag ^^
Voraussetzungen:
Konfiguration
Um den Server auszuführen benötigen wir Java:
Danach erstellt man ein Verzeichnis für den Server:
Je nachdem welche Minecraft-Version man benutzt, lädt man den Bukkit-Server, bei unserem Beispiel die Version 1.17.1 auf https://getbukkit.org herunter und kopiert die craftbukkit-1.17.1.jar in das vorher erstellte Verzeichnis ~/minecraft-server.
Vor der erstausführung muss man eine Datei mit dem Namen ''eula.txt'' erstellen und folgender Inhalt reinschreiben:
Danach muss man den pploader1.2.0 und jython-standalone herunterladen und extrahieren:
Jetzt kann man den Server mit folgendem Befehl starten:
Die erstausführung dauert etwas da die Welten erstellt werden.
Hallo Welt!
Wir starten mit einem klassischen "Hallo Welt!".
Dazu geht man in das Verzeichnis ~/minecraft-server/plugins und erstellt einen Ordner mit Endung .py.dir
Ein Python-Plugin benötigt mindestens 2 Dateien:
plugin.py:
plugin.yml:
Um dem Spieler der das Kommando /hallowelt ausführt einen Gold-Block zu geben erweitern wir unsern Code:
Um alle verfügbaren Materialien zu sehen besucht man:
https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html
Events
Es gibt eine Menge an Events. Zum Beispiel kann man ein Event ausführen wenn jemand Schaden durch Schüsse erleidet oder angegriffen wird:
Für weitere Schadtypen: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/entity/EntityDamageEvent.DamageCause.html
Für weitere Events: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/class-use/Event.html
Voraussetzungen:
- Du kannst wirklich nur in Python programmieren!!!
- Grössere Server und die, die Java lernen können!!!
Konfiguration
Um den Server auszuführen benötigen wir Java:
Code:
sudo apt install openjdk-16-jdk
Danach erstellt man ein Verzeichnis für den Server:
Code:
mkdir ~/minecraft-server
cd ~/minecraft-server
Je nachdem welche Minecraft-Version man benutzt, lädt man den Bukkit-Server, bei unserem Beispiel die Version 1.17.1 auf https://getbukkit.org herunter und kopiert die craftbukkit-1.17.1.jar in das vorher erstellte Verzeichnis ~/minecraft-server.
Vor der erstausführung muss man eine Datei mit dem Namen ''eula.txt'' erstellen und folgender Inhalt reinschreiben:
Code:
eula=true
Danach muss man den pploader1.2.0 und jython-standalone herunterladen und extrahieren:
Code:
mkdir plugins lib
wget https://www.daniel-braun.com/wp-content/uploads/2021/03/pploader1.2.0.zip
unzip -x pploader1.2.0.zip -d plugins
wget http://search.maven.org/remotecontent?filepath=org/python/jython-standalone/2.7.0/jython-standalone-2.7.0.jar -O lib/jython.jar
Jetzt kann man den Server mit folgendem Befehl starten:
Code:
java -jar craftbukkit-1.17.1.jar
Hallo Welt!
Wir starten mit einem klassischen "Hallo Welt!".
Dazu geht man in das Verzeichnis ~/minecraft-server/plugins und erstellt einen Ordner mit Endung .py.dir
Code:
cd ~/minecraft-server/plugins
mkdir hallowelt.py.dir
cd hallowelt.py.dir
Ein Python-Plugin benötigt mindestens 2 Dateien:
- plugin.py
- plugin.yml
plugin.py:
plugin.py:
class hallowelt(PythonPlugin):
def onCommand(self, sender, command, label, args):
sender.sendMessage("Hallo Welt!")
return True
plugin.yml:
plugin.yml:
name: hallowelt
main: hallowelt
version: 1.0
commands:
hallowelt:
usage: /hallowelt
description: Hallo Welt ausgeben
Um dem Spieler der das Kommando /hallowelt ausführt einen Gold-Block zu geben erweitern wir unsern Code:
plugin.py:
from org.bukkit.inventory import ItemStack
class hallowelt(PythonPlugin):
def onCommand(self, sender, command, label, args):
sender.sendMessage("Hallo Welt!")
sender.getInventory().addItem(ItemStack(bukkit.Material.GOLD_BLOCK,1))
return True
Um alle verfügbaren Materialien zu sehen besucht man:
https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html
Events
Es gibt eine Menge an Events. Zum Beispiel kann man ein Event ausführen wenn jemand Schaden durch Schüsse erleidet oder angegriffen wird:
plugin.py:
from org.bukkit.event import EventPriority
from org.bukkit.event.entity import EntityDamageByEntityEvent
from org.bukkit.event.entity.EntityDamageEvent import DamageCause
class halloevent(PythonListener):
@PythonEventHandler(EntityDamageByEntityEvent, EventPriority.NORMAL)
def onEvent(self, event):
if event.getCause() == DamageCause.PROJECTILE:
opfer = event.getEntity().getName()
event.getDamager().sendMessage("Du hast {} angeschossen!".format(opfer))
elif event.getCause() == DamageCause.ENTITY_ATTACK:
opfer = event.getEntity().getName()
event.getDamager().sendMessage("Du hast {} angegriffen!".format(opfer))
class hallowelt(PythonPlugin):
def onEnable(self):
pm = self.getServer().getPluginManager()
lst = halloevent()
pm.registerEvents(lst, self)
Für weitere Schadtypen: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/entity/EntityDamageEvent.DamageCause.html
Für weitere Events: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/class-use/Event.html
Zuletzt bearbeitet: