ServerPlugin Hilfe! [Click to join]

Dieses Thema im Forum "Programmierung" wurde erstellt von Muchacho LP, 16. März 2013.

  1. Muchacho LP
    Offline

    Muchacho LP

    Registriert seit:
    12. März 2013
    Beiträge:
    378
    Ort:
    ALT + F4
    Minecraft:
    ikrumi
    Hallo liebe Community.


    Hoffe, dass ich im richtigen Unterforum bin :D

    Und zwar habe ich folgendes Problem:
    Ich bin gerade dabei mein eigenes Plugin zu programmieren und würde da zum joinen
    gerne solche Schilder, wie z.B. bei "SurvivalGames", machen:

    [Click to join]
    Arena 1​
    usw.

    Weiß einer, wie man das programmiert???
    Halt ohne ein zusätzliches Plugin dabei zu haben.


    Danke schon mal im Voraus.


    Mit freundlichen Grüßen

    Muchacho LP
     
    #1
  2. games6471
    Online

    games6471

    Benutze das PlayerInteractEvent.

    Dort überprüfst du, ob es das richtige Schild ist und falls ja lässt du ihn joinen.
     
    #2
  3. Muchacho LP
    Offline

    Muchacho LP

    Registriert seit:
    12. März 2013
    Beiträge:
    378
    Ort:
    ALT + F4
    Minecraft:
    ikrumi
    Und woher genau soll das Plugin wissen, dass es genau DIESES Schild ist?
     
    #3
  4. ScaryHutman
    Offline

    ScaryHutman

    Registriert seit:
    1. Januar 2013
    Beiträge:
    205
    Ort:
    NRW
    Minecraft:
    Scary_Hutman
    #4
  5. Muchacho LP
    Offline

    Muchacho LP

    Registriert seit:
    12. März 2013
    Beiträge:
    378
    Ort:
    ALT + F4
    Minecraft:
    ikrumi
    Also mit getLine und wenn da das richtige steht, denn Spieler porten etc.?
     
    #5
  6. Funzocker1
    Offline

    Funzocker1

    Registriert seit:
    21. Oktober 2012
    Beiträge:
    127
    Easy

    Das ist ganz einfach.
    Als erstes musst du dir das Schild in eine Variable speichern mit: Sign s = (Sign) e.getBlock();
    Dann prüfst du was in der ersten zeile steht mit
    if(s.getLine(0).equalsIgnorCase("Arena1 oder was du eben willst") {
    }
    oder wie auch immer. Dann verhinderst du mit dem SignChangeEvent das spieler soche schilder setzen und fertig
     
    #6
  7. games6471
    Online

    games6471

    Tipp:

    Du musst auch überprüfen, ob der Block gültig ist, also nicht dass die Person/Spieler in die Luft klickt.
     
    #7
  8. Muchacho LP
    Offline

    Muchacho LP

    Registriert seit:
    12. März 2013
    Beiträge:
    378
    Ort:
    ALT + F4
    Minecraft:
    ikrumi
    Ok! Das mit dem command habe ich jetzt verstanden!
    Danke!

    Nur könntest du das mit dem verhindern nochmal näher beschreiben?
     
    #8
  9. ScaryHutman
    Offline

    ScaryHutman

    Registriert seit:
    1. Januar 2013
    Beiträge:
    205
    Ort:
    NRW
    Minecraft:
    Scary_Hutman
    Du musst prüfen, ob der Spieler einen Block anklickt und ob der Block ein Schild ist.

    ScaryHutman
     
    #9
  10. TimBone
    Online

    TimBone

    Ich persönliche würde das Schild auch mit dem SignChangeEvent überprüfen. Dann kann man Groß- und Kleinschreibung ändern, sowie Farbe hinzufügen. Außerdem kannst du dem Spieler eine Nachricht wie 'Schild erfolgreich erstellt' senden.
     
    #10
  11. Muchacho LP
    Offline

    Muchacho LP

    Registriert seit:
    12. März 2013
    Beiträge:
    378
    Ort:
    ALT + F4
    Minecraft:
    ikrumi
    Ja, nur wie soll ich verhindern, dass so ein Schild von Spielern, die keine Permission dafür haben, erstellt wird?
     
    #11
  12. games6471
    Online

    games6471

    Beim SignChangeEvent vom Spieler die Permissions überprüfen. Falls er keine hat das Schild zerstören.
     
    #12
  13. Muchacho LP
    Offline

    Muchacho LP

    Registriert seit:
    12. März 2013
    Beiträge:
    378
    Ort:
    ALT + F4
    Minecraft:
    ikrumi
    OK Vielen Dank Euch allen!!!
     
    #13
  14. Muchacho LP
    Offline

    Muchacho LP

    Registriert seit:
    12. März 2013
    Beiträge:
    378
    Ort:
    ALT + F4
    Minecraft:
    ikrumi
    Was ist denn daran falsch?

    public void onSignChange(SignChangeEvent event) {
    Player p = event.getPlayer();
    if(event.getLine(0).contains("[Woolwar]")){
    event.setLine(0, "§1[Woolwar]");
    p.sendMessage("Woolwar Sign successfully created!");
    }
    }
     
    #14
  15. games6471
    Online

    games6471

    Ich würde noch überprüfen, ob der Spieler eine bestimmte Permission hat.

    Was soll den ansonsten falsch sein? Gib mal mehr Details wie einer Fehlermeldung.

    Beachte, dass ein SignChangeEvent nur dann ausgelöst wird wenn man etwas auf das Schild schreibt. Also brauchst du weiterhin für das Inteagieren ein anderes Event.
     
    #15
  16. Muchacho LP
    Offline

    Muchacho LP

    Registriert seit:
    12. März 2013
    Beiträge:
    378
    Ort:
    ALT + F4
    Minecraft:
    ikrumi
    Klappt auch mit equalsignorecase nicht.

    Das mit den Permissions ist mir klar.
    Erst soll aber wenigstens das klappen.

    Es gibt keine Fehlermeldung, dass Schild ändert einfach nicht seine Farbe und es steht auch nix im Chat.

    Bitte um Hilfe
     
    #16
  17. games6471
    Online

    games6471

    Am besten machst du Debug-Code rein.

    Klar equals überprüft den kompletten Inhalt in der Zeile, ob dieser das selber ist als du angegeben hast und contains überprüft die komplette Zeile, ob irgendwo dein angegebene String enthalten ist.
     
    #17
  18. Muchacho LP
    Offline

    Muchacho LP

    Registriert seit:
    12. März 2013
    Beiträge:
    378
    Ort:
    ALT + F4
    Minecraft:
    ikrumi
    Ja was genau soll ich jetzt machen?!
     
    #18
  19. games6471
    Online

    games6471

    Grad ist mir was eingefallen:

    Hast du das Event auch im PluginManager registriert und ein @EventHandler über die Event-Methode geschrieben?
     
    #19
  20. Muchacho LP
    Offline

    Muchacho LP

    Registriert seit:
    12. März 2013
    Beiträge:
    378
    Ort:
    ALT + F4
    Minecraft:
    ikrumi
    Im Pluginmanager registrieren???
    Was bitte ist das denn jetzt?
     
    #20