【総合】トピック立てるまでもない質問【Bukkit/Spigot Plugin制作】
-
- ID: 2OZH2K1P4Y
- Reiga
- ID: 3J5KPPTORF
- 記事: 36
- 登録日時: 2019年12月24日(火) 15:11
- お住まい: 自室
- Minecraft ID: Ign1s_Reiga
- いいね: 1回
- 連絡する:
Re: 【総合】トピック立てるまでもない質問【Bukkit/Spigot Plugin制作】
これでできると思う
コード: 全て選択
public void onTest(ProjectileLaunchEvent event) {
Projectile projectile = event.getEntity();
event.getEntity().getWorld().spawn(event.getEntity().getLocation(), projectile.getClass());
}
0
Re: 【総合】トピック立てるまでもない質問【Bukkit/Spigot Plugin制作】
セレクター引数の使える最大HP変更コマンドを作ろうとしているのですが、selectEntitiesの使い方がいまいちわかりません。ふつうにonCommandの中に入れてonCommandと同じsenderとターゲット名を引数に与えればよいのでしょうか?
やってみた所どこかでnullになってしまうみたいです。
どなたか解決お願いします(__)
以下コードです。
やってみた所どこかで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;
}
0
- Reiga
- ID: 23BN3NPNFE
- 記事: 36
- 登録日時: 2019年12月24日(火) 15:11
- お住まい: 自室
- Minecraft ID: Ign1s_Reiga
- いいね: 1回
- 連絡する:
Re: 【総合】トピック立てるまでもない質問【Bukkit/Spigot Plugin制作】
スポイラーでエラーログを貼り付けてくださると助かります。
後、selectEntitiesは、BukkitのドキュメントとFandom Wikiのページが参考になると思います。
後、selectEntitiesは、BukkitのドキュメントとFandom Wikiのページが参考になると思います。
なかみ さんが書きました: ↑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; }
0