ServerPlugin Listener

Dieses Thema im Forum "Programmierung" wurde erstellt von Goech, 25. Januar 2014.

  1. Goech
    Offline

    Goech

    Registriert seit:
    27. April 2013
    Beiträge:
    47
    Ort:
    Luxembourg
    Minecraft:
    Goech
    Hallo :),

    ich habe in meine Main.jar einen MovePlayer Listener, funktioniert perfekt


    nur es ist sowas wie Spleef, da muss ja dann wieder die Fläche nochmal genau so gebaut werden

    wie kann ich das ambesten überwältigen und kann man das verbinden in den MovePlayer Listener einbauen ?



    Eric
     
    #1
  2. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    Meinst Du das "PlayerMoveEvent"? Wenn Du das meinst, verstehe ich nicht, wie Du das mit dem Wiederherrstellen von Blöcken verwenden möchtest. Blöcke auf Fläche kannst Du aber mit einr For-Schleife platzieren.
     
    #2
  3. Goech
    Offline

    Goech

    Registriert seit:
    27. April 2013
    Beiträge:
    47
    Ort:
    Luxembourg
    Minecraft:
    Goech


    Ja ich meinte PlayerMoveEvent ^^


    wie ist dann die Anweisung um einen Block dort zu platzieren :) ???



    Eric
     
    #3
  4. Benni1000
    Offline

    Benni1000 Ehem. Teammitglied

    Registriert seit:
    4. Mai 2012
    Beiträge:
    1.408
    #4
  5. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    Was hat das PlayerMoveEvent mit dem Platzieren von Blöcken zu tuen? Einen Block setzt Du mit:
    Code (Text):
    1. Location loc;
    2. loc.getBlock().setType(Material.STONE);
    "Stone" kannst Du mit jedem anderen Block ersetzen.
     
    #5
  6. Goech
    Offline

    Goech

    Registriert seit:
    27. April 2013
    Beiträge:
    47
    Ort:
    Luxembourg
    Minecraft:
    Goech

    ok vielen dank, ehn wenn ich zb eine Fläche habe, soll ich das verbinden mit einer For-Schleife oder soll ich jeden Block mit einer Loc definieren ?


    Eric
     
    #6
  7. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    Kommt drauf an, wie Du die Fläche angibst. Wenn Du nur 2 Blöcke platzieren willst, die beide z.B. in einer Konfigurationsdatei stehen, kannst du das einzeln machen. Wenn Du aber eine Fläche zwichen zwei Locations hast, benötigst Du eine Schleife. Wenn Du diese benutz, melde Dich noch einmal.
     
    #7
  8. Goech
    Offline

    Goech

    Registriert seit:
    27. April 2013
    Beiträge:
    47
    Ort:
    Luxembourg
    Minecraft:
    Goech

    *meld*



    Eric
     
    #8
  9. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    Du erstellst erst die zwei Locations (loc1, loc2). Dann prüfst Du, welcher BlockX größer ist und läufst in der For-Schleife alle X-Werte zwichen dem kleineren und dem größeren Wert ab und plazierst dort die Blöcke. Wenn auch BlockZ unterschiedlich sind, dann baust Du eine 2. Schleife ein, die zu jedem entsprechenden X-Wert der 1. Schleife alle Z-Werte zwichen den beiden Locations abfragt und dort wieder einen Block plazierst. Wenn Du X, Y und Z benutzt, brauchst Du 3 For-Schliefen ineinander.
     
    #9
  10. Goech
    Offline

    Goech

    Registriert seit:
    27. April 2013
    Beiträge:
    47
    Ort:
    Luxembourg
    Minecraft:
    Goech

    könntest du mir mal ein Beispiel geben :) , kenne mich mit location's nicht so gut aus




    Eric Goerens
     
    #10
  11. GermanUbuntu
    Online

    GermanUbuntu

    Lern Java/Bukkit-API

    Code (Text):
    1.  
    2. Location loc = new Location();
    3.  
    -.-"
     
    #11
  12. Benni1000
    Offline

    Benni1000 Ehem. Teammitglied

    Registriert seit:
    4. Mai 2012
    Beiträge:
    1.408
    Hier ist die Javadoc Dokumentation für die Location Klasse:
    http://jd.bukkit.org/rb/doxygen/da/dac/classorg_1_1bukkit_1_1Location.html

    Java Grundwissen vorrausgesetzt kannst du dir alles was du brauchst aus diesem Dokument raussuchen.
     
    #12
  13. Goech
    Offline

    Goech

    Registriert seit:
    27. April 2013
    Beiträge:
    47
    Ort:
    Luxembourg
    Minecraft:
    Goech



    also ich habe mich nicht so gut ausgedrückt,


    die If-Abfragen nacherher in der Fo-Schleife meinte ich,mit diesen kenn ich mich nicht so gut aus...




    Eric
     
    #13
  14. Goech
    Offline

    Goech

    Registriert seit:
    27. April 2013
    Beiträge:
    47
    Ort:
    Luxembourg
    Minecraft:
    Goech
    Also ich habs ;)

    Code (Text):
    1.  
    2. int MinZ = 84, MaxZ = 89, MinX = 581, MaxX = 586, Y    = 134;
    3.                     Location loc1 = new Location(p.getWorld(),MinX,Y,MinZ);
    4.                     int cX=MinX, cZ=MinZ;
    5.                     do{
    6.                         cX++;
    7.                         loc1.setX(cX);
    8.                         loc1.getBlock().setType(Material.DIRT);
    9.                         do{
    10.                             cZ++;
    11.                             loc1.setZ(cZ);
    12.                             loc1.getBlock().setType(Material.DIRT);
    13.                         }
    14.                         while(cZ<=MaxZ);
    15.                         cZ=MinZ;
    16.                     }
    17.                     while(cX<=MaxX);

    Eric/Goech
     

    Anhänge:

    #14
  15. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    Blickst Du da selber durch oder weißt Du, wie das alles funktioniert und was da passiert? Und auf Deinem Bild wird doch Stein/Kies gesetzt und keine Erde, wie es im Code steht.
     
    #15
  16. Goech
    Offline

    Goech

    Registriert seit:
    27. April 2013
    Beiträge:
    47
    Ort:
    Luxembourg
    Minecraft:
    Goech

    ja verstehen mache ich das :) , habe es probiert mit ner for schleife, funktionierte nicht


    aber mit der While-Schleife ist das einfacher ,


    also auf dem Bild war nur zum Zeigen da :)

    danke aber für die Nachfrage, habe noch eine zusätzliche Fragen, habe eine



    Boolean Klasse erstellt, dort habe ich eine HashMap definiert ,


    wie kann ich den Wert deklarieren, also abfragen geht ,aber wie einstellen ??


    Erci
     
    #16
  17. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    Was meinst Du mit einer Boolean-Klasse?

    Abfragen geht mit
    Code (Text):
    1. myHashMap.get(schluessel);
    -
    und einen Wert kann man mit
    Code (Text):
    1. myHashMap.put(schluessel, objekt)
    hinzufügen.
    Schreibe mal den namen der HashMap und drücke dann STRG + Leertaste zusammen. Dann siehst Du, was Du alles machen kannst. Funktioniert nicht nur dabei!
     
    #17
  18. Goech
    Offline

    Goech

    Registriert seit:
    27. April 2013
    Beiträge:
    47
    Ort:
    Luxembourg
    Minecraft:
    Goech
    also die das ist die Klasse


    ->


    HTML:
    1. [CODE]  public static HashMap<Player, Boolean> playing  =  new HashMap<Player, Boolean>();
    2.     public static boolean IsPlayerInGame(Player p){
    3.         if(!playing.containsKey(p)){
    4.             playing.put(p, false);
    5.         }
    6.         boolean r = playing.get(p);
    7.         return r;
    8.    }[/CODE]

    wie kann ich diesen Wert dan ändern ?


    Eric
     
    #18
  19. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    Mit
    Code (Text):
    1. playing.put(p, true)
    überschreibst Du den alten Wert und setzt den neuen Wert. Aber warum speicherst Du die Spieler, die im Spiel sind nicht in einer List ab und entfernst sie wie, wenn sie das Spiel verlassen?
     
    #19
  20. Benni1000
    Offline

    Benni1000 Ehem. Teammitglied

    Registriert seit:
    4. Mai 2012
    Beiträge:
    1.408
    Das ist keine Klasse sondern eine statische variable und eine statische funktion.
    Bitte lerne die Java GRUNDLAGEN bevor du anfängst plugins zu schreiben, das wird
    so nichts.
     
    #20