by なかみ » 2023年10月11日(水) 06:38
セレクター引数の使える最大HP変更コマンドを作ろうとしているのですが、selectEntitiesの使い方がいまいちわかりません。ふつうにonCommandの中に入れてonCommandと同じsenderとターゲット名を引数に与えればよいのでしょうか?
やってみた所どこかでnullになってしまうみたいです。
どなたか解決お願いします(__)
以下コードです。
コード: 全て選択
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
if(cmd.getName().equalsIgnoreCase("maxHP")){
return setMaxHP(sender, args[0], args[1], thisPlugin.config);
}
return false;
}
private boolean setMaxHP(CommandSender sender,String targetPlayer, String maxHP, ConfigurationSection config){
List<Entity> targets = Bukkit.selectEntities(sender, targetPlayer);
Iterator<Entity> targets_iterated = targets.iterator();
while(targets_iterated.hasNext()){
Entity targetEntity = targets_iterated.next();
Player target;
if(targetEntity.getType() != EntityType.PLAYER){
sender.sendMessage(ChatColor.RED + "プレイヤー以外が選択されています");
return false;
}else{
target = (Player)targetEntity;
}
if(target != null){
sender.sendMessage(ChatColor.RED + "このプレイヤーはオフラインです");
return false;
}
int maxHP_int;
try{
maxHP_int = Integer.parseInt(maxHP);
}catch(NumberFormatException numE){
sender.sendMessage(ChatColor.RED + "第三因数には数字を指定してください");
return false;
}
if(maxHP_int < 1){
sender.sendMessage(ChatColor.RED + "HPに1未満の数字を設定することはできません");
}
target.getAttribute(Attribute.GENERIC_MAX_HEALTH).setBaseValue(Integer.parseInt(maxHP));
String targetName = target.getName();
thisPlugin.config.set("Player." + targetName + ".HP", maxHP);
}
return false;
}
セレクター引数の使える最大HP変更コマンドを作ろうとしているのですが、selectEntitiesの使い方がいまいちわかりません。ふつうにonCommandの中に入れてonCommandと同じsenderとターゲット名を引数に与えればよいのでしょうか?
やってみた所どこかでnullになってしまうみたいです。
どなたか解決お願いします(__)
以下コードです。
[code]@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
if(cmd.getName().equalsIgnoreCase("maxHP")){
return setMaxHP(sender, args[0], args[1], thisPlugin.config);
}
return false;
}
private boolean setMaxHP(CommandSender sender,String targetPlayer, String maxHP, ConfigurationSection config){
List<Entity> targets = Bukkit.selectEntities(sender, targetPlayer);
Iterator<Entity> targets_iterated = targets.iterator();
while(targets_iterated.hasNext()){
Entity targetEntity = targets_iterated.next();
Player target;
if(targetEntity.getType() != EntityType.PLAYER){
sender.sendMessage(ChatColor.RED + "プレイヤー以外が選択されています");
return false;
}else{
target = (Player)targetEntity;
}
if(target != null){
sender.sendMessage(ChatColor.RED + "このプレイヤーはオフラインです");
return false;
}
int maxHP_int;
try{
maxHP_int = Integer.parseInt(maxHP);
}catch(NumberFormatException numE){
sender.sendMessage(ChatColor.RED + "第三因数には数字を指定してください");
return false;
}
if(maxHP_int < 1){
sender.sendMessage(ChatColor.RED + "HPに1未満の数字を設定することはできません");
}
target.getAttribute(Attribute.GENERIC_MAX_HEALTH).setBaseValue(Integer.parseInt(maxHP));
String targetName = target.getName();
thisPlugin.config.set("Player." + targetName + ".HP", maxHP);
}
return false;
}
[/code]