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

Modding・サーバPlugin制作・ツール制作など、開発関連の質問があればこちらにお願い致します。
フォーラムルール
質問関連フォーラムで質問する時は、必ず次のトピックを一読/厳守お願い致します。
viewtopic.php?f=5&t=999
  • (PostNo.316752)

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

投稿記事by amata1219 » 2018年5月20日(日) 09:23

ごぼたん さんが書きました:誠に恐縮ながら質問させていただきます。

現在、自分以外のプレイヤーを見えなくするというプラグインを作っているのですが、エラーが発生してしまいどうしていいか分からず困っております。
spigot 1.12.2 でpluginを起動させています。

コード: 全て選択
   public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args ) {
      if(cmd.getName().equalsIgnoreCase("hide")) {

         if (!(sender instanceof Player)) {
            sender.sendMessage("このコマンドはゲーム内で実行してね!");
            return true;
         }

         Player a = (Player) sender;
         Player b = (Player) getServer().getOnlinePlayers();

         a.hidePlayer(b);
         sender.sendMessage("周りのみんなを透明化したよ!");
         
         return true;


状況としましては、minecraft内で/hideを実行。その次に、コンソールにエラーが現れ、"Player b = (Player) getServer().getOnlinePlayers();"からエラーが出ると表示されてしまいます。
自分以外のプレイヤーを指定するにはどうしたらいけますでしょうか?
よろしくお願いいたします。


こぼたんさん、こんにちは。
まず、エラー発生が発生する原因は変数の型とデータ自体の型が不適合だからです。
例えば、下記コードも同じ理由でエラーが発生します。
コード: 全て選択
int i = (int) "1";

文字列が暗黙的に数値に変換される事は無く、キャストしようとも同じです。
getOnlinePlayers()はPlayer型ではなく、Collection<? extends Player>という型になります。
また、Playerは単数、getOnlinePlayers()は複数なので纏めての処理は出来ません。
この場合ですと、わざわざ変数を作らずfor文やforEachメソッドを用いて処理するのが良いでしょう。

for文:
コード: 全て選択
Player a = (Player) sender;
for(Player p : getServer().getOnlinePlayers())p.hidePlayer(a);
//複数を単数pに分解し、一人単位で処理を実行

forEachメソッド:
コード: 全て選択
Player a = (Player) sender;
getServer().getOnlinePlayers().forEach(p -> p.hidePlayer(a));
//複数を単数pに分解し、一人単位で処理を実行

これで正常に処理する事が出来ます。
アバター
amata1219
ID:bbba07ad
大工さん
 
記事: 45
登録日時: 2016年11月18日(金) 16:46
お住まい: 愛知県

  • (PostNo.316761)

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

投稿記事by ごぼたん » 2018年5月20日(日) 13:51

>>amata1219さん
ありがとうございます。for文で実行してみたところ周りのプレイヤーが表示されなくなりました。
本当にありがとうございました!
ごぼたん
ID:80e1e3c8
木を殴ってる
 
記事: 20
登録日時: 2016年9月09日(金) 20:59

  • (PostNo.317492)

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

投稿記事by オリゼリ » 2018年6月19日(火) 21:00

configの2段目に複数登録してる場合そこから1つを消す場合どうしたらよいでしょう?
コード: 全て選択
//これから
  w:
    a:
      name: test
    b:
      name: test2
//こうしたい
 w:
     b:
       name: test2
質問の仕方とか直したほうがいいよってことがあったら教えていただければ嬉しいです
オリゼリ
ID:fc835bc3
大工さん
 
記事: 45
登録日時: 2015年4月29日(水) 20:13

1つ前へ

Return to 質問:開発・制作関連

x