Verbindung zwischen Mod und Spigot Plugin

Dieses Thema im Forum "Programmierung" wurde erstellt von h3inz3l, 1. Juni 2015.

  1. h3inz3l
    Offline

    h3inz3l

    Registriert seit:
    12. April 2013
    Beiträge:
    131
    Ort:
    Hinter der nächsten Ecke
    Minecraft:
    h3inz3l
    Hallo Community,

    ich hatte die Idee für meinen Server ein optionales Modpack zu schreiben.
    Hierbei soll das Mod vom ServerPlugin zum Beispiel Zahlencodes empfangen und diese dann Clientseitig abspielen.

    Beispiel: ich klicke einen NPC an und dieser erzählt mir im Chat etwas. Spiele ich aber mit dem Mod soll Clientseitig eine Sounddatei abgespielt werden, die im Mod enthalten ist.

    Hier ist jetzt meine Frage.

    Gibt es eine Möglichkeit dies zu verbinden, ohne dass das Modpack Pflicht wird?

    MFG h3inz3l aka Lucas
     
    #1
  2. Heldin
    Offline

    Heldin

    Registriert seit:
    22. April 2015
    Beiträge:
    42
    Wird wohl bei Spongepowered realisierbar sein, ist aber momentan noch nicht verfügbar.
     
    #2
  3. 可愛い
    Offline

    可愛い

    Registriert seit:
    19. Mai 2014
    Beiträge:
    657
    Klar geht das. Du musst beim joinen erkennen, ob der Spieler die Mod installiert hat. Dafür könntest du z.B. den Client mit der Mod beim verbinden eine bestimmte Nachricht senden lassen können. Sobald der Server diese Nachricht bekommt weiß er, dass der Client das Plugin hat und kann dann z.B. eigene Netzwerkpakete übertragen. Alternativ kannst du auch am Ende der Textnachricht einfach mit Farbcodes eine Nummer codieren, die von der Mod erkannt wird und mit einer Liste von Nummern und Sounddateien verglichen wird um die korrekte Audiodatei zu finden. Obs das System schon fertig gibt weiß ich nicht, aber machbar ist das.
     
    #3
  4. h3inz3l
    Offline

    h3inz3l

    Registriert seit:
    12. April 2013
    Beiträge:
    131
    Ort:
    Hinter der nächsten Ecke
    Minecraft:
    h3inz3l
    Ok da ich mich noch nicht lange mit Mods beschäftigt habe. Forge oder ohne Modloader und mit eigenem Installer?
    Bzw. Ist das alles mit Forge möglich, da ja Mods an sich für SinglePlayer ausgelegt sind...also sagen wir es so, wie erkenne ich, auf welchem Server ich jetzt joine vom Mod aus?
    Außerdem hatte ich bis jetzt das Problem, dass Spigot den Mir einfach blockiert, also zum Beispiel lasse ich über den Mod eine simple GUI offenen , wenn ich links klicke. Im SinglePlayer kein Problem, aber auf einem Spigot Server passiert einfach nichts...
     
    #4
  5. 可愛い
    Offline

    可愛い

    Registriert seit:
    19. Mai 2014
    Beiträge:
    657
    Ich hab keine Ahnung von den Mod Schnittstellen, ich hab nur auf deine Frage geantwortet ob das möglich ist und dir erklärt, wie du das implementieren könntest. Wie du deinen Code jetzt in den Client bekommst bleibt dir überlassen.
     
    #5
  6. h3inz3l
    Offline

    h3inz3l

    Registriert seit:
    12. April 2013
    Beiträge:
    131
    Ort:
    Hinter der nächsten Ecke
    Minecraft:
    h3inz3l
    Ok, dachte nur, du kennst dich da aus vielleicht :)
     
    #6
  7. JTK222
    Offline

    JTK222

    Registriert seit:
    5. September 2013
    Beiträge:
    665
    Ort:
    Planet Erde
    Minecraft:
    JTK222
    Habe mal die Vermutung das du die gui Server seitig öffnest was auch richtig so ist.
    Jedoch solltest du es client seitig öffnen falls der Server die mod nicht installiert haben sollte.
    Das einzige Problem du wirst keine knöpfe etc. machen können(also z.B. knöpfe die einem ein Item geben sollen).
    Falls du Geld etc. anzeigen möchtest empfehle ich dir den normalen Gui Screen renderer zu benutzen da der permanent angezeigt wird.
    Ich glaube man kann bei mods auch so einstellen das sie client seitig keine pflicht sind jedoch musst du es dann so regeln dass der server dem Spieler keine Packete sendet wenn er deinen Mod bzw. Forge nicht installiert hat, dies sollte mit spigot jedoch relativ leicht gehen( also das mit Forge) Einzelne mods wirst du erst mit Sponge erkennen können.
    Der Vorschlag das der client eine Chat nachricht an den Server sendet wenn er die Mod hat ist von daher gar nicht einmal so schlecht.
    Hoffe konnte dir wenigstens ein wenig helfen wurde beim schreiben alle 2 min gestört und weiß nicht wie stark ich im Zusammenhang geblieben bin ^^

    Falls du noch Hilfe brauchst kann ich dir erst heute Abend helfen.
    Noch eine frage hast du bereits mit Mods gearbeitet?
     
    #7
  8. ShareLock
    Offline

    ShareLock

    Registriert seit:
    2. November 2011
    Beiträge:
    70
    Wo ist der offensichtliche (wenn auch hackige) weg einen Socket aufzumachen? Wenigstens schöner, als irgendwelche Nachrichten zu senden. Noch ein Vorteil: Es kann eingesehen werden, wer wie den Mod verwendet und er kann auf einen anderen Server umgezogen werden.
     
    #8
    [Dev] iTzSasukeHDxLP gefällt das.
  9. h3inz3l
    Offline

    h3inz3l

    Registriert seit:
    12. April 2013
    Beiträge:
    131
    Ort:
    Hinter der nächsten Ecke
    Minecraft:
    h3inz3l
    Hier muss ich jetzt komplett aussteigen :D

    Wenn du mir erklären könntest, wie ich einen Socket verwenden kann, wäre ich dir extrem Dankbar.
    VG h3inz3l
     
    #9
  10. ShareLock
    Offline

    ShareLock

    Registriert seit:
    2. November 2011
    Beiträge:
    70
    #10
    [Dev] iTzSasukeHDxLP gefällt das.
  11. Cyrox
    Offline

    Cyrox

    Man kann sich auch in den Fuß schießen, macht aber keiner weils schwachsinn ist.
    Anstatt nen eigenen Socket zu öffnen nutzt man einfach den Socket von Minecraft mit:
    http://www.minecraftforge.net/forum/index.php/topic,20135.0.html
     
    #11
    h3inz3l gefällt das.
  12. ShareLock
    Offline

    ShareLock

    Registriert seit:
    2. November 2011
    Beiträge:
    70
    Die Qualität deiner Aussage musst du nicht auf meinen Vorschlag beziehen.

    Klar kann Forge Packets verwenden. Ist vor allem toll, weil das Verhalten für Vanilla Clienten auf unbekannte Nachrichten auch so toll definiert ist.

    Für diejenigen die übrigens lesen können:
    Wenn hier schon Leute mit der - vollkommen validen - Möglichkeit kommen dies mit Farbcodes zu dekodieren.
     
    #12
    [Dev] iTzSasukeHDxLP gefällt das.
  13. Cyrox
    Offline

    Cyrox

    Genau, deswegen nutzt man auch die von MC bereitgestellte Möglichkeit der Plugin Message:
    http://wiki.vg/Protocol#Plugin_Message
    http://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/
    Damit kannst du vor dem Senden der Pakete überprüfen ob der Client diese versteht.
     
    #13
    ShareLock gefällt das.
  14. h3inz3l
    Offline

    h3inz3l

    Registriert seit:
    12. April 2013
    Beiträge:
    131
    Ort:
    Hinter der nächsten Ecke
    Minecraft:
    h3inz3l
    Ok, da ich bereits mit BungeeCord und Spigot gearbeitet habe, ist mir jetzt klar, dass das gehen muss.
    Nur bin ich bei Mods ein bisschen auf neuland gestoßen.

    Wie registriere ich einen Channel und nutze einen Listener um die Messages vom Plugin zu empfangen?

    //Edit - Habe es selber rausgefunden, aber vielen Dank an alle, die geholfen haben :)
     
    #14
  15. h3inz3l
    Offline

    h3inz3l

    Registriert seit:
    12. April 2013
    Beiträge:
    131
    Ort:
    Hinter der nächsten Ecke
    Minecraft:
    h3inz3l
    Also ich habe es mittlerweile hinbekommen daten vom Server an den Clienten zu schicken.

    Allerdings habe ich ein Problem damit, daten vom Clienten an den Server zu schicken. Ich finde einfach keine Möglichkeit.

    Ich habe es bereits über den NetworkWrapper von Forge versucht, allerdings bietet dieser keinerlei Methoden um Daten zu verschicken, sondern nur welche, um ein Listener zu registrieren, welcher die Daten empfängt.

    Würde mich über hilfreiche Antworten freuen.

    VG h3inz3l
     
    #15