下面是我的代码:
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;
}所以我的问题是,当我执行/promote、mod和name时,它不会改变显示名称或任何东西,而且出于某些原因,getOnlinePlayers也被弃用了。有人知道怎么解决这个问题吗?
发布于 2016-03-18 07:11:21
好的,我已经重写了代码,如下所示:
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;
}
}您还需要在plugin.yml中定义命令。您可以在此处查找如何创建plugin.yml:http://wiki.bukkit.org/Plugin_YAML
发布于 2016-03-15 04:06:11
我只是用我的had写的,所以我不知道是否一切都是正确的,但如果不正确,它几乎是这样的!所以像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()方法是否真的存在……但是有了清单,它是这样的。抱歉,我的英语很差,如果仍然不起作用,请按我的答案发号施令;)
https://stackoverflow.com/questions/35976177
复制相似问题