• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Programm Python API für minecraft Server

Playgep

Minecrafter
Mitglied seit
25 Juni 2019
Beiträge
2
Ich habe eine Idee die alle Python Entwickler hier mögen werden :)
auch nicht Python Entwickler könnten vileicht interessiert sein

Eine Python API oder Python zu Java Converter für Minecraft Server.
Da ich selbst mit Python angefangen habe zu programmieren und ich es gehasst habe keine Minecraft Plugins damit machen zu können. Der ansatz des Programms oder der API soll es sein:

API:
Die verschiedene funktionen der API im Hintergrund zu Minecraft Commands umzuwandeln und dann in der konsole abspielen lassen. Dies könnte man sogar dann auf einem Server benutzen welcher schon mit Spigot/Bukkit läuft.
Converter Programm:
Da ich persönlich finde das die Grundbausteine der Java Sprache und der Python Sprache relativ ähnlich sind und man meistens nur ein paar klammern entfernen oder hinzufügen muss um es für die jeweils andere Sprache zu benutzen. Darum wäre ein Converter wo man mit der Spigot API reinschreibt aber das alles in Python ist.


Zu mir:
Ich bin Playge, 17 Jahre alt und programmiere seid 3 Jahren mit Python und habe mit Java letztens angefangen. Zur Zeit bestehen meine Projekte hauptsächlich aus Discord Bots die man für Development oder ähnlich benutzen kann. Ich habe nur ein kleines bischen Ehrfahrung wie man eine API in Python schreibt. In Java bin ich ziemlich schelcht da ich mich hauptsächlich auf die SPrachen HTML, CSS, Swift und Python auseinander setzte.

Es wäre super wenn ihr mir schreiben könntet wenn ihr teilnehmen wollen würdet. Alle Resourcen die wir für das Projekt brauchen werde ich beschaffen :)

Lg. Playge
 

petomka

Minecrafter
Osterei Experte
Mitglied seit
8 Oktober 2012
Beiträge
29
Alter
19




Mal abgesehen davon, dass du offenbar noch nicht ganz verstanden hast, wann und wie man einen Thread pushed, fällt mir zu deiner Idee folgendes ein:
Du möchtest Python Source automatisiert in Java Source umwandeln lassen, da man ja nur hier und da ein paar Klammern anders setzen müsste. Wenn ich mir alleine [das hier] anschaue, und mir vorstelle, das in etwas sinnvolles und performantes umwandeln zu müssen, stellen sich mir die Nackenhaare auf.

Aber nehmen wir doch einfach als kleines Beispiel den FizzBuzz-Test:
Python:
for num in range(1,21):
    string = ""
    if num % 3 == 0:
        string = string + "Fizz"
    if num % 5 == 0:
        string = string + "Buzz"
    if num % 5 != 0 and num % 3 != 0:
        string = string + str(num)
    print(string)
Dieser Schnipsel (von Hackernoon) implementiert den FizzBuzz-Test in Python. Nun übersetzen wir das ganze mal in Java, wie es das ideale Programm tun könnte:
Java:
public class FizzBuzz {
    public static void main(String[] args) {
        String string = "";
        for (int num = 1; num < 21; num++) {
            if (num % 3 ==  0) {
                string = string + "Fizz";
            }
            if (num % 5 == 0) {
                string = string + "Buzz";
            }
            if (num % 5 != 0 && num % 3 != 0) {
                string = string + String.valueOf(num);
            }
        }
    }
}
Man stellt schnell fest, eine gewisse Ähnlichkeit ist zwar vorhanden (wie zwischen vielen Programmiersprachen die nicht gerade als esoterisch oder akademisch klassifiziert sind), ABER:

Python is dynamisch typisiert, der Datentyp wird erst zur Laufzeit bekannt. Der Code steht einfach irgendwo im Nirwana.
Java ist statisch typisiert, der Datentyp einer Variablen ist bereits zur Compile-Time bekannt. Der Code ist in einer Klasse in einer Hauptmethode.

Das ist nur ein Bruchteil der auftretenden Probleme. Falls in deinem Programm also keine Glaskugel eingebaut ist, wird das schwierig, irgendwelchen Code umzuwandeln, ohne die dynamische Typisierung bei Python aufzugeben und vermutlich noch vieles mehr.

Eine weitere lustige Idee wäre natürlich, dass alle Variablen einfach vom Typ Object sind und man dann einfach anfängt rumzucasten, sobald man auf eine Methode bzw. Funktion trifft, die z.B. einer Java-Map zugeordnet werden könnte (in Pythonz.B. der Zugriff auf ein Dictionary zu Map#get):
Python:
dictionary = ...
print(dictionary[key])
Java:
Object dictionary = ...
System.out.println(((Map)dictionary).get(key));
Das mag vielleicht einige Male gut gehen, sobald du aber dann selbst eine Klasse in Python schreibst, die Funktion __getitem(self, key)__ überschreibt, geht das gesamte Konstrukt kaputt. Da ja nun davon ausgegangen wird, dass mit [] auf eine Map zugegriffen wird, wird das Object zu eben jener gecastet; da die unterliegende Klasse aber nicht zwingend eine Map ist, bricht der Code sehr wahrscheinlich an der Stelle mit einer ClassCastException ab.

Dein Vorhaben lässt sich nicht realisieren, ohne gewaltige Einbußen bei den Features von Python zu machen, und es entsteht immernoch ein immenser Programmiertaufwand. Mit ein bisschen rumgooglen bin ich auf Jython gestoßen, was ja schon viel von dem, was du umsetzen möchtest, verspricht, nämlich den Zugriff auf Java-Bibliotheken (also auch Spigot in welcher Version auch immer) in Python. Aber natürlich gibt es bereits Pluings, die einem Anwender erlauben, Python-Scripte auf dem Server auszuführen, auf die schnelle z.B. EasyScript.

Ich hoffe ich habe dir einen Überblick über ein paar der vielen Probleme geben können, auf die du mit deinem Vorhaben stoßen würdest.

Jetzt noch meine Meinung: wenn man für seinen Server (besser nicht für die Öffentlichkeit..) Plugins schreiben möchte, aber nicht mit Java programmieren kann, dann sollte man sich entweder mit Java beschäftigen und das ordentlich (nicht über YouTube...) lernen - oder aber man setzt auf die "Budget"-Lösung mit Skript, die für private und/oder kleine Projekte eigentlich schon sinnvoll sein kann. Wer verstanden hat, wie man programmiert und worauf es dabei ankommt, wird eine weitere Sprache (wenn man Python wie hier vorausgesetzt eh schon kann) ebenfalls erlernen können.
 

❤️可愛いちゃん️❤️

Enderdragonjäger
Osterei Experte
Mitglied seit
19 Mai 2014
Beiträge
1.170
Alter
2
Da ich persönlich finde das die Grundbausteine der Java Sprache und der Python Sprache relativ ähnlich sind und man meistens nur ein paar klammern entfernen oder hinzufügen muss um es für die jeweils andere Sprache zu benutzen. Darum wäre ein Converter wo man mit der Spigot API reinschreibt aber das alles in Python ist.
Nein. Du musst einen Crosscompiler schreiben. Wenn du keine Ahnung von Compilerbau, der JVM und der Pythonruntime hast, kannst das das Vorhaben komplett vergessen. Wesentlich naheliegender ist es da schon Python direkt auszuführen, aber dann muss du erstmal mit Pythonbindings und JNI anfangen und dafür müsstest du dann sogar noch tiefgreifende Kenntnisse in C und Speicherverwaltung haben. Natürlich gibts das schon: https://stackoverflow.com/a/8899042

Du denkst viel zu sehr mit dem Quellcode. Du musst deutlich tiefer Anfangen um das Problem zu lösen. Da fehlt dir einiges an Erfahrung, was auch nicht schlimm ist, aber deinem Vorhaben halt im Weg steht. Die Schlagwörter finden sich unter dem Thema "Compilerbau" wieder.

Über die 3 Posts hintereinander brauchen wir gar nicht reden, du bist nicht im geringsten so wichtig wie du dich hältst, wenn du der Meinung bist, dass dein Thread um halb 4 Nachts unbedingt gesehen werden muss.

HTML und CSS sind übrigens keine Programmiersprachen.
 
Zuletzt bearbeitet:

Playgep

Minecrafter
Mitglied seit
25 Juni 2019
Beiträge
2
Nein. Du musst einen Crosscompiler schreiben. Wenn du keine Ahnung von Compilerbau, der JVM und der Pythonruntime hast, kannst das das Vorhaben komplett vergessen. Wesentlich naheliegender ist es da schon Python direkt auszuführen, aber dann muss du erstmal mit Pythonbindings und JNI anfangen und dafür müsstest du dann sogar noch tiefgreifende Kenntnisse in C und Speicherverwaltung haben. Natürlich gibts das schon: https://stackoverflow.com/a/8899042

Du denkst viel zu sehr mit dem Quellcode. Du musst deutlich tiefer Anfangen um das Problem zu lösen. Da fehlt dir einiges an Erfahrung, was auch nicht schlimm ist, aber deinem Vorhaben halt im Weg steht. Die Schlagwörter finden sich unter dem Thema "Compilerbau" wieder.

Über die 3 Posts hintereinander brauchen wir gar nicht reden, du bist nicht im geringsten so wichtig wie du dich hältst, wenn du der Meinung bist, dass dein Thread um halb 4 Nachts unbedingt gesehen werden muss.

HTML und CSS sind übrigens keine Programmiersprachen.
Ja ich weis das html und css nur zur Formatierung dienen und keine Programmier sprachen sind. Danke für die Aufklärung ich bin noch nicht sehr erfahren und ich finde es toll neue Sachen zu lernen. Bei mir ist nur bei meinen erst-Erfahrungen mit Java aufgefallen dass Java und Python in vielen Syntax Aspekten, Ähnlicher sind als die meisten Sprachen mit einader.

Danke für die vielen Aufklärungen:)

Und Es tut mir leid wegen dem Pushen. Ich wusste nicht genau wie das funktioniert. Bin noch relativ neu im forum.
 
Allgemein
Hilfe Benutzer
  • G Ganjabaumann:
    ich frage mich eh. wenn der server mal läuft wozu nen neustart ?
  • G Ganjabaumann:
    im grunde um den cashe höchstens zu leeren
  • Majoox Majoox:
    Neustart kann nie schaden
  • G Ganjabaumann:
    ich dachte an sone feste zeit wenn...gegen 1 uhr morgens ne halbe stunde oder stunde für neustrt max
  • maybeto maybeto:
    naja, und wenn er mal crasht sollte er auch wieder selbstständig starten können
  • Majoox Majoox:
    Also aus meiner Erfahrung (überwiegend 2013) und bis vor einem Jahr noch mal kurz, kann ich sagen, dass die meisten Ideen eigentlich genau dann kommen, wenn man versucht, die Spielwelt zu gestalten
  • G Ganjabaumann:
    hast du nen paar plugins parat die wirklich unerlässlich sind...dann kann ich schauen ob ich alle habe oder noch was fehlt euinfach
  • G Ganjabaumann:
    da stimmt ich dir zu...mir fällt einfach vieles ein in momenten wo ich es garnich erwartet hätte
  • Majoox Majoox:
    Und anhand davon richte ich dann alles ein
  • G Ganjabaumann:
    hast du ne minute zeit ma auf unsren server zu kommen un dir die pluzgins anzusehen?
  • G Ganjabaumann:
    fach nur ob was fehlt was wichtig ist oder ob was da ist was zuviel bzw unnötig ist
  • Majoox Majoox:
    Kommt drauf an was man haben möchte, es gibt auch Plugins, die Durst emittieren können bzw. auch Körpergewicht. Aber ab einem bestimmten Punkt kommen wir zu dem Problem, dass es Sonderanfertigungen sein müssen, die meist gegen Echtgeld programmiert werden müssen.
  • Majoox Majoox:
    Leider nicht, habe hier kein Minecraft drauf
  • G Ganjabaumann:
    nichit sachlimm
  • G Ganjabaumann:
    ich überlege halt was wichtig ist mom ich schicke dir ma plugin datei die ich derzeit bei uns habe
  • Majoox Majoox:
    Jop, warum nicht :D
  • G Ganjabaumann:
    hoffe das passt so
  • Majoox Majoox:
    Frisch in der 13. Klasse habe ich für die Schülerzeitung eine Umfrage erstellt, bin dafür in alle Sek I Klassen gegangen und festgestellt, dass da wirklich niemand mehr Minecraft spielt. In der fünften und zehnten fand ich Leute, dazwischen quasi gar nicht mehr
  • G Ganjabaumann:
    krass Oo
  • G Ganjabaumann:
    ich spiele minecraft eig nur zum entspannen abends
  • G Ganjabaumann:
    und grad halt wegemn servereinrchtung natürlich
  • Majoox Majoox:
    Gibt inzwischen leider andere Spiele, oft genug wurde mir Fortnite erzählt
  • G Ganjabaumann:
    ja hab ciuh auch gehört ...aber ich werde mir wenn dann nur borderlands 3 holen
  • G Ganjabaumann:
    trotzdem hat mein server hier natürlich priorität
  • LapisMC LapisMC:
    Potenzielle Spieler gibt es trotzdem genug, da muss man sich nur mal die ersten Seiten der Serverliste ansehen. Der schwierige Teil ist dann
    , gegen die Konkurrenz anzukommen.
    LapisMC LapisMC: Potenzielle Spieler gibt es trotzdem genug, da muss man sich nur mal die ersten Seiten der...
    Oben