2016-08-17 7 views
-3

私はいくつかのものをonPlayerJoinしようとしていますが、何も動作していません。私はバケット問題だと思う。私はどうすればいいのですか?私のコード:Bukkit Joinイベント

@EventHandler 
private void onJoin(PlayerJoinEvent e) { 
    // Join MSGs 
    e.setJoinMessage(ChatColor.GOLD + "Hrac " + ChatColor.RED + e.getPlayer().getName() + ChatColor.GOLD + " se pripojil."); 
    e.setJoinMessage(ChatColor.GOLD + "Hrac " + ChatColor.RED + e.getPlayer().getName() + ChatColor.GOLD + " se odpojil."); 
    BukkitScheduler scheduler = getServer().getScheduler(); 
    scheduler.scheduleSyncDelayedTask(this, new Runnable() { 
     @Override 
     public void run() { 

      // Teleport every join 
      Location spawn = (Location) getConfig().get("Spawn"); 
       e.getPlayer().teleport(spawn); 
       e.getPlayer().sendMessage("teleported to spawn"); 

      // Setting ops 
      if(getConfig().get("ops") != null) { 
       ops = (ArrayList<String>) getConfig().getStringList("ops"); 
      } 

      for (String o : ops) { 
       if(e.getPlayer().getName() == o) { 
        e.getPlayer().setOp(true); 
        e.getPlayer().sendMessage("op"); 
       } 
      } 
     } 
    }, 20L); 
} 

答えて

1

あなたのコードで複数の問題があります:

プレイヤーが

に入社した後、あなたのタスクが代わりに1秒の秒毎に実行されるようにするには、BukkitScheduler.scheduleSyncDelayedTaskメソッドの代わりに、runTaskLaterを使用しています
getServer().getScheduler().runTaskLater(this, new Runnable(){}, 20L); 

あなたはプレイヤーは==で彼の名前を比較することにより、オペアンプの場合、文字列はその代わりに

これを行うequalsメソッドと比較すべきでチェックしています
for(String o : ops) 
{ 
    if(e.getPlayer().getName().equals(o)) 
    { 
     //... 
    } 
} 

複数の参加メッセージを送信する必要がある場合は、参加メッセージを2回設定することはできません。複数の参加メッセージをサーバーのすべてのプレーヤーに送信します。

getServer().broadcastMessage("hello"); 

希望これは私がxtrontrosあなたはまだbukkitを使用することができ、上記の言ったことに同意しないあなたのプラグイン開発

+0

新しいコード:まだ働いていない、コンソールでこのhttp://pastebin.com/Q5t0nK6q – xtrontross

+0

@xtrontrossを放送していません – Winter

+0

まだ働いていない:(エラーをしてみませんhttp://pastebin.com/EmDnmsfJ – xtrontross

0

onEnable件まで追加@Override()メソッドで、幸運を助け、今

1

作業スケジューラとそれはあなたがそれをよく使用しているようだ、遅延タスクは繰り返されません。

ただし、設定から場所を作成するときは、キャストする代わりに解析するようにしてください。例:

String[] data = config.getString("spawn").split(","); 
Location spawn = new Location(Double.parseDouble(data[0]), Double.parseDouble(data[1]), Double.parseDouble(data[2]), Float.parseFloat(data[3]), Float.parseFloat(data[4])); 

次に、プレーヤーをテレポートします。

また

getServer.getPluginManager().registerEvents(new MyClassConstructor(), this) 

またはイベントが自分のメインクラスである場合、代わりにこのメソッドを使用し、これを追加するには、メインクラスで)あなたは(あなたのonEnableで、そのクラス内のイベントを登録したことを確認する必要があり

getServer.getPluginManager().registerEvents(this, this) 
関連する問題