【総合】トピック立てるまでもない質問【Bukkit/Spigot Plugin制作】

Modやプラグインの制作/開発に関する質問はこちらへどうぞ。
アバター
ta3
Forum Administrator
ID: 624FJHWYTI
記事: 97
登録日時: 2019年7月01日(月) 21:08
お住まい: JP
Minecraft ID: ta3
いいね: 1回
いいねされた回数: 1回
連絡する:

【総合】トピック立てるまでもない質問【Bukkit/Spigot Plugin制作】

投稿記事 by ta3 » 2019年11月07日(木) 21:38

Bukkit/Spigotのトピックを立てるまでもない質問はこちらへどうぞ
0



ゲスト
ID: 2OZH2K1P4Y

Re: 【総合】トピック立てるまでもない質問【Bukkit/Spigot Plugin制作】

投稿記事 by ゲスト » 2020年10月27日(火) 22:58

Projectileを取得したものと同じものをスポーンさせたいんですがどうすればいいですか?

アバター
Reiga
ID: 3J5KPPTORF
記事: 36
登録日時: 2019年12月24日(火) 15:11
お住まい: 自室
Minecraft ID: Ign1s_Reiga
いいね: 1回
連絡する:

Re: 【総合】トピック立てるまでもない質問【Bukkit/Spigot Plugin制作】

投稿記事 by Reiga » 2020年11月06日(金) 22:50

ゲスト さんが書きました: 2020年10月27日(火) 22:58 Projectileを取得したものと同じものをスポーンさせたいんですがどうすればいいですか?
これでできると思う

コード: 全て選択

public void onTest(ProjectileLaunchEvent event) {
	Projectile projectile = event.getEntity();
	event.getEntity().getWorld().spawn(event.getEntity().getLocation(), projectile.getClass());
}
0

なかみ
ID: 13ELACQONM
記事: 1
登録日時: 2023年10月11日(水) 06:24
Minecraft ID: Steve

Re: 【総合】トピック立てるまでもない質問【Bukkit/Spigot Plugin制作】

投稿記事 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;
    }
    
0

アバター
Reiga
ID: 23BN3NPNFE
記事: 36
登録日時: 2019年12月24日(火) 15:11
お住まい: 自室
Minecraft ID: Ign1s_Reiga
いいね: 1回
連絡する:

Re: 【総合】トピック立てるまでもない質問【Bukkit/Spigot Plugin制作】

投稿記事 by Reiga » 2023年10月11日(水) 15:24

スポイラーでエラーログを貼り付けてくださると助かります。

後、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

返信する