Random Player

Dieses Thema im Forum "Server Plugins" wurde erstellt von Nexus15, 14. Dezember 2012.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Nexus15
    Offline

    Nexus15

    Registriert seit:
    30. September 2012
    Beiträge:
    91
    Hallo,
    ich möchte das irgendein random Spieler auf dem Server Geist wird. Dafür habe ich das programmiert:

    @EventHandler
    public void onPlayerJoin(PlayerJoinEvent event) {
    int random = new Random().nextInt(Bukkit.getOnlinePlayers().length);
    Player playerrandom = Bukkit.getOnlinePlayers()[random];
    Player player = event.getPlayer();
    String prname = playerrandom.getName();
    PlayerInventory pi = player.getInventory();
    playerrandom.sendMessage(ChatColor.GOLD + "Sie sind der Geist viel Glück!");
    Bukkit.broadcastMessage(ChatColor.RED + "Spieler " + prname + " ist der Geist.");
    Location loc = player.getLocation();
    loc.setY(73);
    loc.setX(52);
    loc.setZ(241);
    player.teleport(loc);
    player.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, 200, 1));
    pi.addItem(new ItemStack(Material.DIAMOND_SWORD, 1));

    }

    Was habe ich falsch gemacht?
    Vielen Dank für Antworten :)
     
    #1
  2. LBuilder
    Offline

    LBuilder

    Registriert seit:
    2. April 2012
    Beiträge:
    708
    Minecraft:
    SchnitzelDE
    Kommt ein Fehler in der Konsole?
    Dann stell ihn bitte mal rein :)
     
    #2
  3. Nexus15
    Offline

    Nexus15

    Registriert seit:
    30. September 2012
    Beiträge:
    91
    Nein, es kommt kein Fehler :)
     
    #3
  4. Calenria
    Offline

    Calenria

    Registriert seit:
    28. Juli 2012
    Beiträge:
    387
    Minecraft:
    Calenria
    Code (Text):
    1. Player[] playerList = Bukkit.getOnlinePlayers();
    2. int random = new Random().nextInt(playerList.length);
    3. Player playerrandom = playerList[random];
    Sollte funktionieren, hab es nicht getestet.
     
    #4
  5. Nexus15
    Offline

    Nexus15

    Registriert seit:
    30. September 2012
    Beiträge:
    91
    Nein, hat leider nicht geklappt :)
     
    #5
  6. was ist denn dann dein Problem?

    Entweder du bekommst keinen Spieler returned -> Nullpointer
    oder
    Du bekommst einen Spieler returned -> Kein Problem
     
    #6
  7. Nexus15
    Offline

    Nexus15

    Registriert seit:
    30. September 2012
    Beiträge:
    91
    Eigentlich sollte der randomplayer zu der Location geportet werden. Das ist aber nicht der Fall.
     
    #7
  8. Crafter6432
    Offline

    Crafter6432

    Registriert seit:
    22. Dezember 2011
    Beiträge:
    686
    Ich weis nicht ob es absicht ist aber du Teleportierst nicht den zufälligen Spieler sondern den neuen bzw gejointen.
     
    #8
  9. Calenria
    Offline

    Calenria

    Registriert seit:
    28. Juli 2012
    Beiträge:
    387
    Minecraft:
    Calenria
    Bei mir läuft es grad ausprobiert:

    Code (Text):
    1. Player[] playerList = Bukkit.getOnlinePlayers();
    2. int random = new Random().nextInt(playerList.length);
    3. Player playerrandom = playerList[random];
    4. playerrandom.sendMessage(ChatColor.GOLD + "Sie sind der Geist viel Glück!");
    5. playerrandom.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, 200, 1));
    Funktioniert bei mir ohne Probleme.

    Du Teleportierst aber player und nicht randomplayer oder sehe ich das falsch?
     
    #9
  10. Nexus15
    Offline

    Nexus15

    Registriert seit:
    30. September 2012
    Beiträge:
    91
    ** FacePalm ** stimmt da hast du Recht.

    - - - Aktualisiert - - -

    Hab es jetzt so gemacht, aber es funktioniert immer noch nicht. Müssen dafür 2 Player online sein?
    @EventHandler
    public void onPlayerJoin(PlayerJoinEvent event) {


    Player[] playerList = Bukkit.getOnlinePlayers();
    Player player = event.getPlayer();
    int random = new Random().nextInt(playerList.length);
    Player playerrandom = playerList[random];
    String prname = playerrandom.getName();
    PlayerInventory pi = playerrandom.getInventory();
    playerrandom.sendMessage(ChatColor.GOLD + "Sie sind der Geist viel Glück!");
    playerrandom.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, 200, 1));
    Bukkit.broadcastMessage(ChatColor.RED + "Spieler " + prname + " ist der Geist.");
    Location loc = playerrandom.getLocation();
    loc.setY(73);
    loc.setX(52);
    loc.setZ(241);
    playerrandom.teleport(loc);

    pi.addItem(new ItemStack(Material.DIAMOND_SWORD, 1));

    }
     
    #10
  11. Kluddizz
    Offline

    Kluddizz

    Registriert seit:
    15. Dezember 2012
    Beiträge:
    10
    Der Code ist okay. Das einzige ist, was du vielleicht nicht möchtest
    Code (Text):
    1. playerrandom.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, 200, 1));
    macht den Spieler für 200 Ticks unsichtbar. Das wären ca. 10 sek.

    Code (Text):
    1. Location loc = playerrandom.getLocation();
    2. loc.setY(73);
    3. loc.setX(52);
    4. loc.setZ(241);
    5. playerrandom.teleport(loc);
    Das geht einfacher!

    Code (Text):
    1. playerrandom.teleport(new Location(event.getPlayer().getWorld(), 73, 52, 241));
    Außerdem ist deine Variable "player" unbenutzt. Wenn ich auf alles Rücksicht nehme kommt folgender Code zusammen:

    Code (Text):
    1.     @EventHandler
    2.     public void onPlayerJoin(PlayerJoinEvent event) {
    3.         Player[] playerList = event.getPlayer().getServer().getOnlinePlayers();
    4.         Player playerrandom = playerList[new Random().nextInt(playerList.length)];
    5.        
    6.         playerrandom.teleport(new Location(event.getPlayer().getWorld(), 73, 52, 241));
    7.         playerrandom.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, 200, 1));
    8.         playerrandom.getInventory().addItem(new ItemStack(Material.DIAMOND_SWORD, 1));
    9.        
    10.         playerrandom.sendMessage(ChatColor.GOLD + "Sie sind der Geist viel Glück!");
    11.         Bukkit.broadcastMessage(ChatColor.RED + "Spieler " + playerrandom.getName() + " ist der Geist.");
    12.     }
     
    #11
Status des Themas:
Es sind keine weiteren Antworten möglich.