Beiträge von CheeseTastisch

    Hey,


    mit "zweiter Konsole" meine ich ein zweites CMD fenster, das ding das sich bei Windows öffnent wenn du das "cmd" Programm ausführst.

    In ein Fenster gebe ich "java -jar test.jar" ein.

    Mein ziel ist dann, dass sich ein zweites davon öffnet und ich dort auch etwas ausgeben kann.

    Wie gesagt, das öffnen funktioniert bereits, aber die Ausgabe noch nicht.


    LG

    Hey,


    ich versuche derzeit einen zweite Console in Java zu benutzen.

    Das klappt auch schon soweit, möchte ich aber nun etwas in der Console ausgeben, funktioniert es nicht.


    Ich habe es so probiert:

    Code
    Process process = new ProcessBuilder("cmd.exe", "/c", "start", "\"Debug\"").start();
    
    PrintWriter printWriter = new PrintWriter(process.getOutputStream());
    printWriter.println("test");


    Vielen dank für eure Hilfe!


    LG

    Danke,


    hab es endlich hinbekommen.

    Für alle die Fragen wie:



    Für @SneakyThrows benötigt man Lombok.
    Für Document#loadDocument ein etwas modifiziertes BSON-Document (von MongoDB)

    Dependency-Graphen bauen und in der entsprechenden Reihenfolge die Plugins laden

    Glaube du hast das Problem noch nicht ganz verstanden.
    Das wäre ja nich das Problem, das Problem ist nur, auch wenn die Plugins nach einander geladen werden, können sie sich untereinander nicht benutzen.

    Wenn PluginB nach PluginA geladen wird, kann PluginB trozdem keine Klasse von PluginA benutzen.

    LG

    Du kannst ja selbst so etwas wie eine plugin.yml umsetzen - dort hat man dann die Möglichkeit eine "dependency" anzugeben, diese wird dann einfach vor deinem plugin geladen.


    Problem hierbei ist nur wieder, was wenn es mehrere dependencys gibt?
    Minecraft bekommt es ja auch irgendwie hin, ohne das sich Plugins untereinander laden.
    Bei Minecraft, lädt die Bukkit.jar jedes Plugin und torzdem können sich die Plugins untereinander benutzen.


    In IntelliJ musst du das andere Plugin so oder so importieren, sonst gibt es ja keine Referenzen zu den Klassen.

    Ist logisch.

    LG

    Um den sinn dahinter zu verstehen, sollte man wissen, das wir mehrer sind, die an diesem System arbeiten.

    Am ende soll es auserdem verschiedene Versionen geben und jeder sollte theoretisch sein eigenen Plugin coden können.

    Deshalb war unsere Idee eben ein Plugin-System.


    Und der Sinn dahinter, dass einzelne Plugins aufeinander zugreifen können ist auch zimlich simpel:

    Jemand coded sich ein Plugin für das System mit z.B.: einer User-Klasse. Diese liest informationen zu einem User aus einer Datenbank aus, und speicher sie.
    Wenn jetzt jemand anders dieses Plugin benutzt, soll er eben auch auf den User zurgreifen können, hätte ja keinen sinn, wenn jemand das gesamte Plugin nochmalls extra imporieren müsste...

    Und wegen directory und classpath: Die Plugins zu laden funktioniert ja bereits, nur das sie sich untereinander benutzen können noch nicht.

    LG

    Danke,

    hierbei besteht alerdings noch immer das ich den Code nur sehr schlecht verstehe, da ich ihn nicht selbst geschrieben habe.
    Aber nach langem begutachten, habe ich ihn halbwächs verstanden...
    Nur mein Problem, ich sehe nicht was Bukkit anders macht also ich.


    LG

    Sorry,

    aber nachdem ich diesen Code nicht selbst geschrieben habe, check ich bei der hälfte nicht, was das Ziel dahinter ist.
    Auserdem sind das zimlich viele Klassen, wo ich nicht weiß, wann welche Klasse was called (z.B.: einen URLClassLoader habe ich garnicht gefunden...)

    LG

    Hey,


    ich bin derzeit am Coden eines eigenen Plugin Systems (ähnlich dem von Bukkit).
    Das Laden der einzellen .jar datein im Plugins ordner funktioniert bereits.


    Jedoch können die einezelnen .jar sich nicht untereinander benutzen.


    Mein Ziel:

    Ich möchte dass ich in Plugin B einen Methode von Plugin A ausführen.

    Derzeit kommte jedoch immer eine "java.lang.NoClassDefFoundError"

    Plugins lade ich derzeit wiefolgt:



    Ich werde später auch noch einen plugin.yml hinzufügen, aber das möchte ich erst machen, wenn das gesamte grundlegent funktioniert.
    Danke für hilfe im Voraus.


    MFG

    CheeseTastisch

    Hey,


    ich code derzeit ein Permission-System für 1.8 - 1.14. Für du Umsetzung mit "*"-Permission, möchte ich dies mit PermissibleBase machen.

    Setzen möchte ich diese über da Perm field im CraftHumanPlayer.

    Das Problem ist nun, wenn ich den CraftHumanEntity über NSM getten möchte, kommt eine ClassNotFoundExeption.

    Jemand eine Lösung?


    Code:

    Die CraftHumanEntity Klasse liegt im Package net.minecraft.server.<Version>.entity

    Die Methote getNMSClass() macht folgendes:

    Code
    public static Class<?> getNMSClass(String name) {
        String version = Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3];
        try {
            return Class.forName("net.minecraft.server." + version + "." + name);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            return null;
        }
    }

    Der Constructor Funktonirt, das habe ich bereits gecheckt.

    Das der Fehler kommt, weil die getConstructor falsch ist weiß ich. Was mich jedoch wundert, das getNMSClass("PacketPlayOutTitle$EnumPlayerInfoAction") null returnt.

    Hey,


    ich Programmiere derzeit an einem Plugin, das für mehrere Versionen (1.8-.1.14) verfügbar sein soll.

    In diesem benötige ich das PacketPlayOutPlayerInfo, nach mehreren Versuchen weiß ich einfach nicht mehr weiter.


    Code
    Object enumFiled = getNMSClass("PacketPlayOutPlayerInfo$EnumPlayerInfoAction")
            .getEnumConstants()[4];
    
    constructor = getNMSClass("PacketPlayOutPlayerInfo")
            .getConstructor(getNMSClass("PacketPlayOutTitle$EnumPlayerInfoAction")
            , int[].class);
    
    packet = constructor.newInstance(enumFiled, new int[]{player.getEntityId()});


    Bei diesem Code kommt das hier:

    java.lang.NoSuchMethodException: net.minecraft.server.v1_8_R3.PacketPlayOutPlayerInfo.<init>(null, [I)


    weiß jemand wie ich das begeben kann?

    Hey, dies ist das Falsche Forum hierfür! In diesem Forum geht es um hilfe bei Programmiertechnischen fehler,

    nicht darum, sich Download-Plugin für den eigenen Server zu finden.


    Um zu deiner Frage zu kommen, es wird höchstwarscheinlich niemand machen, da die Leute die hier sind bereits an einem eigenen Plugin/Server arbeiten.

    Du könntest enweder selbst Programmieren lehren oder du schaust z.B.: mall auf Fivver vorbei, dort gibs genug leute die dir das machen, zwar gegen Geld, aber dafür auch ordentlich.


    MFG CheeseTastisch

    Hey,


    du kannst mein LoginEvent keine ProxiedPlayer erzeugen, da dieser noch nicht komplett connected ist.

    Nutze für die bitte das PostLoginEvent, hierbei kannst du dann einfach event#getPlayer machen.


    Mir sind auch noch einige andere Dinge aufgefallen:

    1) Nenne deinen Listener bitte nicht on2. Bei dem LoginEvent zB "onLogin" bei PlayerDisconectEvent zB "onPlayerDisconect" (=> Conventions).

    2) Beim Disconnecten nicht einfach aus der HashMap entfernen, sondern den Integer um eins vermindern.

    3) Bevor du die IP wieder in die HashMap reinpackst, musst du sie entfernen. Sonst ist sie doppelt drinnen (=> Bug)

    Ich hätte für dein Problem zwei Lösungsansätze:

    1) Du hast eine ArrayList mit Spieler namen, dass sind alle geblockten Spieler. Führt der Spieler den Double-Jump aus, setzt du in in die ArrayList, danach machst du einen DelayedScheduler und entfernst ihn nach 5 sek (100 Ticks) wieder. Am beginn des Double-Jumps einfach abfragen ob er in der ArrayList ist.


    2) Du hast einen HashMap mit Spielername und zu letzt ausgeführt. Führt der Spieler den Double-Jump aus, setzt du ihn mit System#currentTimeMills in die HashMap. Am beginn abfragen, wann er das letzte mall den Double-Jump genutzt hat und mit der derzeitigen Zeit abgleichen.

    Erst einmal danke für deine Antwort, genau nach solchen Programmen habe ich gesucht.

    Wie bereits gesagt. Git möchte ich ungerne nutzen, natürlich gibt es da Argumente die dafür sprechen, jedoch möchte und werde ich Git nicht nutzen. Grund hierfür ist hauptsächlich der Inhaber des Servers. Ich habe mit ihm übre dieses Thema gesprochen. Vielen Dank für eure Hilfe


    MFG CheeseTastisch.


    PS: Gibt es eine Möglichkeit das Thema zu schlissen?

    Erst einmal danke für deine Antwort, jedoch gibt es daran einige Probleme:


    1.) Bei einigen Developern läuft Git nicht, desweiteren würde ich auch Persönlich eher ungerne Git nutzen.

    2.) Auch bei mir benötigen Developer keine Zugriff auf den gesamten Server, Devs schicken mir die JAR-Datei ich kontrolliere ob Sicherheitsrisiken(Forc-OP, CloudNet-PermissionProvider,...) eingebaut wurden. Sollte dies nicht der Fall sein, ziehe ich das Plugin auf den Server.

    3.) Wenn man einfach macht, dass wenn ein Projekt auf Git hochgeladen wird und es zu einer JAR-Compield, ist das Problem das Developer wieder jegliche Sicherheitslücken sofort daraufspielen. Da bring es mir auch nix wenn ich danach sehe dass der was eingebaut hat.


    Wie gesagt, meine Frage war nicht wie man den Pluginaustausch,... grundsätzlich lösen kann, sonder ob es ein Programm gibt, mit dem Ich zwei Jar Dateien auf unterschied abgleichen kann. Hintergrund ist dabei, dass ich nicht jedes mall das gesamte Plugin durchgehen möchte und nach Sicherheitslücken zu suchen.


    MFG CheeseTastisch

    Hey,


    ich habe eine Frage:

    ich bin als Developer-Leitung Administrator eines Minecraft-Servers. Nun möchte ich bei neuen Devs immer kontrollieren das die keine scheiße einbauen.

    Das decompilen des Plugins ist eh kein Problem, nur wollte ich jetzt wissen ob es ein Programm gibt, das Änderungen an einer jar Datei sofort anzeigt.

    Kennt jemand so ein Programm bzw. hat jemand eine Lösung dafür, weil ich mir nicht jede Klasse jedes mall einzel ansehen möchte.


    MFG CheeseTastisch