ServerPlugin Wenn spieler Sneakt etwas ausführen

Dieses Thema im Forum "Programmierung" wurde erstellt von xMcGermanDevx, 6. November 2015.

  1. xMcGermanDevx
    Offline

    xMcGermanDevx

    Registriert seit:
    5. November 2015
    Beiträge:
    2
    Guten Tag,

    ich arbeite gerade an meinem Server Netzwerk und möchte machen, das wenn ein Spieler sneakt (also in die Hocke geht), das dann etwas ausgeführt wird. Wie auf dem Server rewinside.tv, wie geht soetwas?
     
    #1
  2. xMcGermanDevx
    Offline

    xMcGermanDevx

    Registriert seit:
    5. November 2015
    Beiträge:
    2
    Gibt es dafür ein Event?
    Oder ist dies das PlayerMoveEvent?
     
    #2
  3. Verschraubt
    Offline

    Verschraubt

    Die Frage ist, wann du es brauchst.
    Wenn du zum Beispiel überprüfen willst, ob der Spieler sneakt während er den command /xy eingibt, sieht das ungefähr so aus:
    Code (Text):
    1.     public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args) {
    2.         Player p = (Player) sender;
    3.  
    4.         if (cmd.getName().equalsIgnoreCase("xy")) {
    5.             if (p.isSneaking()) {
    6.                 p.sendMessage("DU SNEAKST");
    7.             } else {
    8.                 p.sendMessage("DU SNEAKST NICHT");
    9.             }
    10.         }
    11.    
    12.         return true;
    13.     }
    Den Boolean p.isSneaking() kannst du überall einbauen, wo du willst.
     
    #3
  4. MysticRunes
    Online

    MysticRunes

    Registriert seit:
    19. November 2013
    Beiträge:
    40
    Ich meine du kannst es mit
    Code (Text):
    1.  
    2. .isSneaking()
    3.  
    testen.
     
    #4
  5. Basti07711
    Offline

    Basti07711 Ehem. Teammitglied

    Registriert seit:
    2. August 2012
    Beiträge:
    714
    Ort:
    Hinter dir
    Minecraft:
    Basti07711
    Zum abfragen, ob der Spieler grade sneak geht so:

    Code (Text):
    1.     @EventHandler
    2.     public static void onMove(PlayerMoveEvent e){
    3.         if(e.getPlayer().isSneaking()){
    4.            
    5.             //Hier Code einfügen
    6.            
    7.         }
    8.     }
    9.  
    Damit wird immer wenn er sich bewegt gefragt, ob der Spieler sneak. Wenn ja, führt er das aus, was dort steht.
     
    #5
  6. Verschraubt
    Offline

    Verschraubt

    #6
  7. Verschraubt
    Offline

    Verschraubt

    @Basti07711 Ich bin mir nicht sicher, ob sneaken als Bewegung im PlayerMoveEvent zählt. Sonst wäre das natürlich die beste und einfachste Lösung.
     
    #7
  8. Basti07711
    Offline

    Basti07711 Ehem. Teammitglied

    Registriert seit:
    2. August 2012
    Beiträge:
    714
    Ort:
    Hinter dir
    Minecraft:
    Basti07711
    Naja, und wenn nicht, zählt schon allein das bloße Bewegen des Kopfes oder sich in eine Richtung bewegen. In aller Regeln fällt dem User das gar nicht erst auf. Ansonsten hätte ich noch die Lösung:

    Code (Text):
    1.                             Bukkit.getScheduler().scheduleSyncRepeatingTask(Bukkit.getPluginManager().getPlugin("Plugin name"), new Runnable(){
    2.                                 public void run(){
    3.                                     for(Player p : Bukkit.getOnlinePlayers()){
    4.                                         if(p.isSneaking()){
    5.                                             //Hier Code einfügen
    6.                                         }
    7.                                     }
    8.                                 }
    9.                             }, 20, 20);
    Der Code fragt jede Sekunde ab, ob jemand sneaked. Finde ich aber unschön ^^
     
    #8
    Verschraubt gefällt das.
  9. Verschraubt
    Offline

    Verschraubt

    Habe aber eine andere Lösung gefunden. Ich füge hier einfach mal den funktionierenden Code ein. Der Rest erklärt sich dann von selbst :D
    Code (Text):
    1.  
    2. private ArrayList<Player> sneak = new ArrayList<>();
    3.  
    4.     @EventHandler
    5.     public void onJoin(PlayerJoinEvent e) {
    6.         Player p = e.getPlayer();
    7.  
    8.         if (sneak.contains(p)) {
    9.             sneak.remove(p);
    10.         }
    11.  
    12.     }
    13.  
    14.     @EventHandler
    15.     public void onSneak(PlayerToggleSneakEvent e) {
    16.         Player p = e.getPlayer();
    17.         if (sneak.contains(p)) {
    18.             sneak.remove(p);
    19.             p.sendMessage("Du sneakst nun nicht mehr!");
    20.         } else {
    21.             sneak.add(p);
    22.             p.sendMessage("Du sneakst nun!");
    23.         }
    24.  
    25.     }
    26.  
     
    #9