【総合】トピック立てるまでもない質問【Bukkit/Spigot Plugin制作】
Posted: 2019年11月07日(木) 21:38
Bukkit/Spigotのトピックを立てるまでもない質問はこちらへどうぞ
有志により立ち上げられた非公式のフォーラムです
https://civa.jp/
コード: 全て選択
@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;
}
なかみ さんが書きました: ↑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; }