2016-03-13 6 views
0

Вот мой код:Java Minecraft Bukkit продвигать плагин

package meg.zach.d; 

import org.apache.logging.log4j.core.jmx.Server; 
import org.bukkit.Bukkit; 
import org.bukkit.command.Command; 
import org.bukkit.command.CommandSender; 
import org.bukkit.entity.Player; 
import org.bukkit.plugin.java.JavaPlugin; 

import net.md_5.bungee.api.ChatColor; 

public class Main extends JavaPlugin { 
    public void onEnable() { 
     getLogger().info("Plugin Enabled"); 
    } 

    public void onDisable() { 

    } 

    @SuppressWarnings("deprecation") 
    public boolean onCommand(CommandSender sender, Command cmd, String label, String args[]) { 
     Player p = (Player) sender; 
     if (cmd.getName().equalsIgnoreCase("promote") && sender instanceof Player) { 
      if (args[0] == "mod") { 
       for (Player playerToPromote : Bukkit.getServer().getOnlinePlayers()) { 
        if (playerToPromote.getName().equalsIgnoreCase(args[1])) { 
         String modN = ChatColor.GRAY + "[Mod] "; 
         playerToPromote.setDisplayName(modN + playerToPromote.getDisplayName()); 
         String modb = ChatColor.YELLOW + "has been promoted into a "; 
         String mod = ChatColor.GOLD + "Mod "; 
         Bukkit.getServer().broadcastMessage(playerToPromote + modb + mod); 

        } 
        else if(!(playerToPromote.isOnline())){ 
         p.sendMessage(ChatColor.RED + "player not online"); 
        } 
       } 

      } 


     } 
     return false; 
    } 

Так что мой вопрос, когда я/продвигать и мода и имя не изменить отображаемое имя или что-либо, а также getOnlinePlayers осуждается для некоторая причина. Кто-нибудь знает, как это решить?

ответ

0

Я только что написал его с моим, так что я не знаю, все ли правильно, но если это неправильно, это почти так! Так как isOfflinePlayer() также может быть isOnlinePlayer() ...

public boolean onCommand(CommandSender sender, Command cmd, String label, String args[]) { 
    Player p = (Player) sender; 
    if (cmd.getName().equalsIgnoreCase("promote") && sender instanceof Player) { 
     if (args[0] == "mod") { 
      Player playerToPromote = Bukkit.getPlayer(args[1]); 
      if (!playerToPromote.isOfflinePlayer()) { 
        String modN = ChatColor.GRAY + "[Mod] "; 
        playerToPromote.setDisplayName(modN + playerToPromote.getDisplayName()); 
        String modb = ChatColor.YELLOW + "has been promoted into a "; 
        String mod = ChatColor.GOLD + "Mod "; 
        Bukkit.getServer().broadcastMessage(playerToPromote + modb + mod); 
        playerToPromote.update(); 
       } else { 
        p.sendMessage(ChatColor.RED + "player not online"); 
       } 

     } 


    } 
    return false; 
} 

Вы должны зарегистрировать свою команду в plugin.yml, и я не знаю, если update() метод действительно существует ... Но с Inventory это было так. Извините за мой плохой английский, и если она по-прежнему не работает, просто команда на мой ответ;)

1

Хорошо, я переписан код, чтобы выглядеть следующим образом:

package meg.zach.d; 

import java.util.logging.Logger; 

import org.bukkit.Bukkit; 
import org.bukkit.ChatColor; 
import org.bukkit.command.Command; 
import org.bukkit.command.CommandSender; 
import org.bukkit.entity.Player; 
import org.bukkit.plugin.java.JavaPlugin; 

public class Main extends JavaPlugin { 

    // Got rid of onEnable(), simply sent a message to show the plugin was 
    // enabled, but is done automatically by the server 

    // Got rid of onDisable(), not necessary if empty 

    Logger log = Logger.getLogger("Minecraft"); 

    @SuppressWarnings("deprecation") 
    public boolean onCommand(CommandSender sender, Command cmd, String label, String args[]) { 
     // The below checks if the sender is a player 
     if (!(sender instanceof Player)) { 
      log.info("error message : sender isnt player"); 
      return true; 
     } 
     // I can now safely cast sender to type Player 
     Player p; 
     if (cmd.getName().equalsIgnoreCase("commandnamehere")) { 
      // Checking if there are enough arguments 
      if (args.length != 1) { 
       // Message to send when there isn't enough arguments 
       p.sendMessage("Look! Not enough arguments!"); 
       return true; 
      } 
      if (args[0] == "lookaspecialthingy") { 
       // Instead of looping through all the online players, I just try 
       // to cast the player name to a Player, and check if the object 
       // is null 
       Player target = Bukkit.getPlayer(args[0]); 
       if (target == null) { 
        // Player is offline 
        return true; 
       } 
       String modN = ChatColor.GRAY + "[Mod] "; 
       target.setDisplayName(modN + target.getDisplayName()); 
       String modb = ChatColor.YELLOW + " has been promoted into a "; 
       String mod = ChatColor.GOLD + "Mod!"; 
       Bukkit.getServer().broadcastMessage(target + modb + mod); 

      } 

     } 
     return false; 
    } 
} 

Имейте в виду, этот код WASN 't проверен, но если вы немного измените его, он должен работать нормально.

Вам также необходимо определить команду в вашем plugin.yml. Вы можете посмотреть, как создать plugin.yml здесь: http://wiki.bukkit.org/Plugin_YAML

Смежные вопросы