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

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

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

投稿記事by nobody » 2018年2月15日(木) 12:56

申し訳ありません、再び質問させていただきます……

toyblocksさんに教えて貰ったやり方である程度実装できたのですが、
取得したItemStackをTranslatableComponentに通す時、Material.toString()の値のままでは期待通り翻訳してくれない事が分かりました。
(ダイヤ剣ならitem.swordDiamond.nameと言う文字列に変換する必要がある)

上記の様な、「Material.DIAMOND_SWORD」を「item.swordDiamond.name」に変換する方法についてご教示頂く事は出来ますでしょうか。

独自に調べてCraftItemStackを使うとうまく行きそう?な気はしていますが、どうも期待通りに動いてくれませんでした。
以下、試行コードです。

コード: 全て選択
@EventHandler(ignoreCancelled = true)
public void onPlayerMoveEvent(PlayerMoveEvent event) {

   // プレイヤーの向いている方向にあるブロックを取得
   Player player = event.getPlayer();
   Block block = player.getTargetBlock((Set<Material>)null, 5);

   // ブロックのアイテム名を表示
   Material material = block.getType();
   ItemStack item = new ItemStack(material);
   String str = CraftItemStack.asNMSCopy(item).getName();
   TranslatableComponent component = new TranslatableComponent(str);

   player.spigot().sendMessage(component);
}


このコードだと、文字列strには単純にアイテムの英名が入るようです。
「item.swordDiamond.name」のような形にはなってくれませんでした。

以上、よろしくお願いいたします。
nobody
ID:48d6e241
木を殴ってる
 
記事: 11
登録日時: 2018年2月14日(水) 14:45

  • (PostNo.313751)

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

投稿記事by amata1219 » 2018年2月15日(木) 18:23

nobody さんが書きました:申し訳ありません、再び質問させていただきます……

toyblocksさんに教えて貰ったやり方である程度実装できたのですが、
取得したItemStackをTranslatableComponentに通す時、Material.toString()の値のままでは期待通り翻訳してくれない事が分かりました。
(ダイヤ剣ならitem.swordDiamond.nameと言う文字列に変換する必要がある)

上記の様な、「Material.DIAMOND_SWORD」を「item.swordDiamond.name」に変換する方法についてご教示頂く事は出来ますでしょうか。

独自に調べてCraftItemStackを使うとうまく行きそう?な気はしていますが、どうも期待通りに動いてくれませんでした。
以下、試行コードです。

コード: 全て選択
@EventHandler(ignoreCancelled = true)
public void onPlayerMoveEvent(PlayerMoveEvent event) {

   // プレイヤーの向いている方向にあるブロックを取得
   Player player = event.getPlayer();
   Block block = player.getTargetBlock((Set<Material>)null, 5);

   // ブロックのアイテム名を表示
   Material material = block.getType();
   ItemStack item = new ItemStack(material);
   String str = CraftItemStack.asNMSCopy(item).getName();
   TranslatableComponent component = new TranslatableComponent(str);

   player.spigot().sendMessage(component);
}


このコードだと、文字列strには単純にアイテムの英名が入るようです。
「item.swordDiamond.name」のような形にはなってくれませんでした。

以上、よろしくお願いいたします。



nobodyさん、こんにちは。
その様な文字列は、net.minecraft.server.v1_12_R1.Itemクラスのメソッドより取得する事が可能です。

コード: 全て選択
net.minecraft.server.v1_12_R1.ItemStack item = CraftItemStack.asNMSCopy(new ItemStack(Material.DIAMOND_SWORD));
System.out.println(item.getItem().a(item) + ".name");


item.getItem().a(item)から文字列"item.swordDiamond"を取得し、".name"を付け加えるだけで大丈夫です。
アバター
amata1219
ID:a0e91893
大工さん
 
記事: 52
登録日時: 2016年11月18日(金) 16:46
お住まい: 愛知県

  • (PostNo.313760)

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

投稿記事by nobody » 2018年2月15日(木) 22:42

>amata1219さん
回答、どうもありがとうございました!
お陰で期待していた動作をする事が出来るようになりました。

大変助かりました。
どうもありがとうございました。
nobody
ID:48d6e241
木を殴ってる
 
記事: 11
登録日時: 2018年2月14日(水) 14:45

  • (PostNo.313772)

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

投稿記事by nobody » 2018年2月16日(金) 21:05

たびたび質問させていただき恐縮です。
spigot1.12で開発しております。

MC1.11から追加されたアクションバーに、翻訳されたアイテム名を表示する方法があればご教示頂く事は出来ますでしょうか。

こちらで2回ほど質問させていただき、翻訳されたアイテム名をチャットに表示する事までは出来たのですが、
次の段階として同じ文字列をアクションバーに表示させたいです。
以下、足搔いたコードになります。

コード: 全て選択
@EventHandler(ignoreCancelled = true)
public void onPlayerMoveEvent(PlayerMoveEvent event) {

   // プレイヤーの向いている方向にあるブロックを取得
   Player player = event.getPlayer();
   Block block = player.getTargetBlock((Set<Material>)null, 5);

   // ブロックのアイテム名を取得
   Material material = block.getType();
   net.minecraft.server.v1_12_R1.ItemStack item = CraftItemStack.asNMSCopy(new ItemStack(material));
   String name = item.getItem().a(item) + ".name";
   TranslatableComponent component = new TranslatableComponent(name);
   
   // アイテム名をチャットに表示
//   player.spigot().sendMessage(component);

   // アイテム名をアクションバーに表示
   String message = component.getTranslate();
   CraftPlayer p = (CraftPlayer) player;
   IChatBaseComponent cbc = ChatSerializer.a("{\"text\": \"" + message + "\"}");
   PacketPlayOutChat ppoc = new PacketPlayOutChat(cbc, ChatMessageType.GAME_INFO);
   p.getHandle().playerConnection.sendPacket(ppoc);
}


上記だと、「item.****.name」と言うID名(?)がアクションバーに表示されます。
以前こちらで伺ったアイテム名の翻訳は、spigotの機能を使ったものだったので、もしかしてアクションバーで同じことをするのは無理なのかもしれないと思いつつ……

ちなみにアクションバーを使っているのは丁度良い位置と大きさがアクションバーのそれだからなので、
タイトル機能(アクションバー機能)以外で、アクションバーの位置に翻訳されたアイテム名を表示できるのであれば、別の手段を使う事も考慮したいです。

たびたびお騒がせして申し訳ありませんが、以上よろしくお願いいたします。
nobody
ID:48d6e241
木を殴ってる
 
記事: 11
登録日時: 2018年2月14日(水) 14:45

  • (PostNo.313774)

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

投稿記事by TA3 » 2018年2月16日(金) 21:29

sendMessageでcomponentをそのまま出力しているのでアクションバーにもcomponentを送れば良いんじゃないんです...?
アバター
TA3
ID:a95d26b2
木を殴ってる
 
記事: 18
登録日時: 2016年8月18日(木) 17:44

  • (PostNo.313777)

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

投稿記事by amata1219 » 2018年2月16日(金) 22:09

nobody さんが書きました:たびたび質問させていただき恐縮です。
spigot1.12で開発しております。

MC1.11から追加されたアクションバーに、翻訳されたアイテム名を表示する方法があればご教示頂く事は出来ますでしょうか。

こちらで2回ほど質問させていただき、翻訳されたアイテム名をチャットに表示する事までは出来たのですが、
次の段階として同じ文字列をアクションバーに表示させたいです。
以下、足搔いたコードになります。

コード: 全て選択
@EventHandler(ignoreCancelled = true)
public void onPlayerMoveEvent(PlayerMoveEvent event) {

   // プレイヤーの向いている方向にあるブロックを取得
   Player player = event.getPlayer();
   Block block = player.getTargetBlock((Set<Material>)null, 5);

   // ブロックのアイテム名を取得
   Material material = block.getType();
   net.minecraft.server.v1_12_R1.ItemStack item = CraftItemStack.asNMSCopy(new ItemStack(material));
   String name = item.getItem().a(item) + ".name";
   TranslatableComponent component = new TranslatableComponent(name);
   
   // アイテム名をチャットに表示
//   player.spigot().sendMessage(component);

   // アイテム名をアクションバーに表示
   String message = component.getTranslate();
   CraftPlayer p = (CraftPlayer) player;
   IChatBaseComponent cbc = ChatSerializer.a("{\"text\": \"" + message + "\"}");
   PacketPlayOutChat ppoc = new PacketPlayOutChat(cbc, ChatMessageType.GAME_INFO);
   p.getHandle().playerConnection.sendPacket(ppoc);
}


上記だと、「item.****.name」と言うID名(?)がアクションバーに表示されます。
以前こちらで伺ったアイテム名の翻訳は、spigotの機能を使ったものだったので、もしかしてアクションバーで同じことをするのは無理なのかもしれないと思いつつ……

ちなみにアクションバーを使っているのは丁度良い位置と大きさがアクションバーのそれだからなので、
タイトル機能(アクションバー機能)以外で、アクションバーの位置に翻訳されたアイテム名を表示できるのであれば、別の手段を使う事も考慮したいです。

たびたびお騒がせして申し訳ありませんが、以上よろしくお願いいたします。


nobodyさん、こんにちは。
下記コードで送信した場合は上手くいきますでしょうか?
NMSも必要とせず、簡潔な記述になりますし動作するならこちらが良いかと思われます。
未検証ですので正常に動作しなかった場合は申し訳ありません_(:3 ∠ )_。

コード: 全て選択
import net.md_5.bungee.api.ChatMessageType;
import net.md_5.bungee.api.chat.TranslatableComponent;

Player p = e.getPlayer();
TranslatableComponent component = new TranslatableComponent("item.swordDiamond.name");
p.spigot().sendMessage(ChatMessageType.ACTION_BAR, component);
アバター
amata1219
ID:f3cba173
大工さん
 
記事: 52
登録日時: 2016年11月18日(金) 16:46
お住まい: 愛知県

  • (PostNo.313787)

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

投稿記事by nobody » 2018年2月17日(土) 07:45

>amata1219さん
何度もどうもありがとうございます!
こんなあっさりしたアプローチがあったとは不覚でした……

試してみたのですが、教えて頂いたコードだと英名で表示されます。
ChatMessageType.ACTION_BAR を ChatMessageType.CHAT に変えると、チャット欄に出てきた文字列は和名になっているのでちょっと不可解。
教えて頂いた方向でもう少し探ってみます。

どうもありがとうございました。
nobody
ID:48d6e241
木を殴ってる
 
記事: 11
登録日時: 2018年2月14日(水) 14:45

  • (PostNo.313948)

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

投稿記事by なつ@krkm_tp » 2018年2月21日(水) 00:32

blacklistを作成するpluginを作っていまして、
わからない点が少しあるので質問させていただきます。

Configを扱うのが今回初めてです。
serverに接続したことのある、ないを問わずコマンドでPlayerNameを打つとUUIDがconfigに保存され、コマンドでUUIDをplayernameで出してくる方法がわかりません。
わかる方教えてください。よろしくお願いいたします。

途中のコードです。
コード: 全て選択
               else if(args[0].equals("add")) {
                  //configにargs[0]で打ったPlayerNameのUUIDを追加する処理
                  return true;
               }
               else if(args[0].equals("remove")) {
                  //configの中からargs[0]で打ったPlayerNameのUUIDを削除する処理
                  return true;
               }
               else if(args[0].equals("check")) {
                  //configにあるコマンドで打ったPlayerNameのUUIDがあるか確認する処理
                  return true;
               }
               else if((args[0].equals("list"))|(args[0].equals("l"))) {
                  //configにあるUUIDをPlayernameで全て表示させる処理
なつ@krkm_tp
ID:301415ea
水から上がったとこ
 
記事: 1
登録日時: 2017年12月13日(水) 13:15

  • (PostNo.314049)

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

投稿記事by smk7758 » 2018年2月24日(土) 16:35

なつ@krkm_tp さんが書きました:blacklistを作成するpluginを作っていまして、
わからない点が少しあるので質問させていただきます。

Configを扱うのが今回初めてです。
serverに接続したことのある、ないを問わずコマンドでPlayerNameを打つとUUIDがconfigに保存され、コマンドでUUIDをplayernameで出してくる方法がわかりません。
わかる方教えてください。よろしくお願いいたします。
途中のコードです。
コード: 全て選択
               if (args[0].equals("add")) {
                  //configにargs[0]で打ったPlayerNameのUUIDを追加する処理
                  return true;
               } else if (args[0].equals("remove")) {
                  //configの中からargs[0]で打ったPlayerNameのUUIDを削除する処理
                  return true;
               } else if (args[0].equals("check")) {
                  //configにあるコマンドで打ったPlayerNameのUUIDがあるか確認する処理
                  return true;
               } else if ((args[0].equals("list"))|(args[0].equals("l"))) {
                  //configにあるUUIDをPlayernameで全て表示させる処理
               }

コード: 全て選択
Player player = (Bukkit.)getServer().getOfflinePlayer(name);
player.getUniqueId().toString()

PlayerとUUIDの変換は、これらを使うのはいかがでしょうか?
また、Configについては、Configurationの使い方 - ModdingWiki BukkitPluginを確認していただくと良いかと思いますが、
コード: 全て選択
getConfig().set(path, object);
String uuid_string = getConfig().getString(path);

これらを用いる感じですね。(かなり曖昧ですが)
PC: Windows 8.1 Pro 64bit CPU:intel i7-4770 RAM:16GB
アバター
smk7758
ID:c40ce382
鉄鉱掘り
 
記事: 259
登録日時: 2014年3月12日(水) 16:30
お住まい: 愛知県/三河

  • (PostNo.314313)

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

投稿記事by nobody » 2018年3月04日(日) 11:39

お世話になります。
spigot1.12で開発しております。

プレイヤーの見ているブロック名をアクションバーに表示するプラグインを作成しているのですが、
メタデータ関連に詰まってしまったので質問させてください。

例えば原木を挙げると、オークの原木や松の原木がありますが、ブロックIDは両方とも「LOG」です。
これは、ブロックIDは同じでも保持しているメタデータをそれぞれの種類によって分けて管理しているからと理解しています。
(オークの原木はメタデータが0、松の原木はメタデータが1)
このメタデータですが、どこに保存されているものでしょうか?

Blockクラス、Materialクラスを覗いてみましたが、それらしいメソッドを見つける事が出来ませんでした。
また、Bukkitで言う所の「メタデータ」はプラグイン開発者が自由に値を入れられる仕組みの事を指しているようで、
マインクラフトで言うメタデータと意味が少々違うように見受けます(そのため、調べても上記の仕組みの方が出て来ました……)
Bukkit界(?)ではマインクラフトで言う所のメタデータの事を何と呼んでいるのでしょうか?

Blockクラスからの取得方法も一緒にご教示頂けると幸いです。

上記、お手数ですが、どなたかご教示のほどよろしくお願いいたします。
nobody
ID:48d6e241
木を殴ってる
 
記事: 11
登録日時: 2018年2月14日(水) 14:45

  • (PostNo.314324)

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

投稿記事by King(qpwakaba) » 2018年3月04日(日) 18:03

nobody さんが書きました:Bukkit界(?)ではマインクラフトで言う所のメタデータの事を何と呼んでいるのでしょうか?

Blockクラスからの取得方法も一緒にご教示頂けると幸いです。


Block#getData() で取得できます。(Deprecatedついてますが)

Bukkitではメタデータに対してあまり名前がなかったような…… アイテムのダメージ値はdurabilityと呼んでいましたが
また,BlockState#getData() でそれぞれのブロックに対応したMaterialData (原木なら Wood) が取得できます。Block#getData()とは違い,こちらはDeprecatedではありません。
以下サイン
調べて見つからないことを質問して、「そのくらい調べろ」と言われたら それは調べが足りないとき。

投稿画面のBBコード挿入ボタン を追加するユーザースクリプト作りました。良かったらどうぞ。
https://greasyfork.org/ja/scripts/18657
最大描画距離を64チャンクまで伸ばすMod作ってます。
viewtopic.php?t=30697
アバター
King(qpwakaba)
ID:5504b2e8
ダイヤモンド掘り
 
記事: 829
登録日時: 2013年3月26日(火) 10:25

  • (PostNo.314347)

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

投稿記事by nobody » 2018年3月05日(月) 10:32

>King(qpwakaba)さん

回答、どうもありがとうございました!
BlockStateの方で試してみようと思います。

どうもありがとうございました。
nobody
ID:48d6e241
木を殴ってる
 
記事: 11
登録日時: 2018年2月14日(水) 14:45

  • (PostNo.314624)

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

投稿記事by mcgo » 2018年3月12日(月) 23:52

AパッケージのfunctionクラスにあるgetLevelメソッドでHashMapに格納されてる独自のレベルの値を取得出来るようにしてあります。
このメソッドを同じAパッケージ内のクラスで使うと正常に値を取得出来るのですが、別のパッケージ又は別のプラグインからこのメソッドを使って値を取得しようとすると
必ずnullが返ってきます。
どうすれば別のパッケージ又は別のプラグインからAパッケージのHashMapの値を取得することが可能でしょうか?
初歩的な質問でした申し訳ございません。
コード: 全て選択
HashMap<String, Integer> status = new HashMap<>();

public Integer getLevel(Player p) {
    return status.get(p.getUniqueId().toString() + "level");
}
主にSkriptのトピックに出現中・・・
個人的に話したければプライベートメッセージいつでも送ってね♪
最近少しだけプラグイン開発に手を出し始めました^p^
どっかのサーバーでSkriptでお仕事したいなぁ~
【Skript自作コード公開中】
アバター
mcgo
ID:47db717f
鉄鉱掘り
 
記事: 277
登録日時: 2016年11月04日(金) 00:05
お住まい: Minecraft

  • (PostNo.314654)

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

投稿記事by フグ河豚 » 2018年3月13日(火) 22:12

mcgo さんが書きました:AパッケージのfunctionクラスにあるgetLevelメソッドでHashMapに格納されてる独自のレベルの値を取得出来るようにしてあります。
このメソッドを同じAパッケージ内のクラスで使うと正常に値を取得出来るのですが、別のパッケージ又は別のプラグインからこのメソッドを使って値を取得しようとすると
必ずnullが返ってきます。
どうすれば別のパッケージ又は別のプラグインからAパッケージのHashMapの値を取得することが可能でしょうか?
初歩的な質問でした申し訳ございません。
コード: 全て選択
HashMap<String, Integer> status = new HashMap<>();

public Integer getLevel(Player p) {
    return status.get(p.getUniqueId().toString() + "level");
}


JavaではSkriptのようにプラグイン起動時、イベント発生時にに引数の内容が保存されるわけではありません。
ですから、functionクラスをインスタンス化させてセッターメソッド、またはfunctionのコンストラクタからstatus引数に内容を追加し、JVM上に一時的に保存する必要があります。
getLevelメソッドがあるクラスがfunctionであるならば、
コード: 全て選択
public class Aclass implements Listener {
  @EventHandler
  public void PlayerInteract(PlayerInteractEvent event) {
    //どのようなイベント時に取得したいのか分からないのでここでは
    PlayerInteractEventを使用しています。

    Player player = event.getPlayer();
    function function = new function(player);
    int level = function.getLevel(player);
  }
}

public class function {
  private HashMap<String, Integer> status = new HashMap<>();

  public function(Player player) { //このコードではコンストラクタを使用しています
    //playerLevelはint型のプレイヤーのレベルを示す
    this.status.put(player.getUniqueId().toString() + "level", playerLevel);
  }

  public Integer getLevel(Player p) {
    return status.get(p.getUniqueId().toString() + "level");
  }
}

playerLevel引数に関して、永続的にプレイヤーのレベルを保存したいのであればYAMLファイルやデータベース等でサーバーディレクトリ上に保存しておく必要があるでしょう。

補足ですが、クラス名の最初は大文字であることが推奨されます。

Javaを触ってたった半年、技術的質問に答えるのは初めてなので多少間違いがあるかと思います。
何か有りましたら指摘していただけると有り難いです。
PhantasyDestinyというRPG鯖を作成中。
最近はJavaが楽しくなってきました。
アバター
フグ河豚
ID:0d45a189
石掘り
 
記事: 104
登録日時: 2013年11月17日(日) 08:52
お住まい: グンマー

  • (PostNo.314659)

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

投稿記事by nunonuno_riku » 2018年3月14日(水) 06:54

skellettというプラグインで別ワールドを作るコードを教えてください。
nunonuno_riku
ID:cdde5970
 

  • (PostNo.314672)

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

投稿記事by mcgo » 2018年3月14日(水) 14:45

フグ河豚さん回答ありがとうございます。
回答を頂く前に自己解決してしまいましたが、回答して頂いたことを今後の製作に活かしていけたらなと思います。
HashMapにstatic修飾子をつけることで解決致しました。
主にSkriptのトピックに出現中・・・
個人的に話したければプライベートメッセージいつでも送ってね♪
最近少しだけプラグイン開発に手を出し始めました^p^
どっかのサーバーでSkriptでお仕事したいなぁ~
【Skript自作コード公開中】
アバター
mcgo
ID:47db717f
鉄鉱掘り
 
記事: 277
登録日時: 2016年11月04日(金) 00:05
お住まい: Minecraft

  • (PostNo.314676)

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

投稿記事by nunonuno_riku » 2018年3月14日(水) 15:43

プラグインのskellettというプラグインで別ワールドを作る方法を教えてください。
nunonuno_riku
ID:cdde5970
 

  • (PostNo.314677)

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

投稿記事by miyabi » 2018年3月14日(水) 15:49

nunonuno_riku さんが書きました:プラグインのskellettというプラグインで別ワールドを作る方法を教えてください。

1.なぜ同じ質問を2度投稿したのか
2.ここは制作関連で、プラグインの使い方は『質問:マルチサーバー運用』ですべきです。

トピックの削除・移動依頼は以下から。
viewtopic.php?f=16&t=3583
このトピックを放置して質問し直さないようにお願いします。
マイクラサーバを立てる前に、PCの基礎知識を身につけましょう。
サーバ管理補助ツール MCSC(Windows専用) の開発をしたり、Minecraft Modding Wikiの管理したりしてます。
Minecraft Modding Wikiの引き継ぎ先を探しています。
アバター
miyabi
ID:91b90127
ブタ飼い
 
記事: 7192
登録日時: 2011年8月07日(日) 14:35
お住まい: さいたまさいたまさいたま!

  • (PostNo.314746)

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

投稿記事by King(qpwakaba) » 2018年3月16日(金) 16:11

mcgo さんが書きました:フグ河豚さん回答ありがとうございます。
回答を頂く前に自己解決してしまいましたが、回答して頂いたことを今後の製作に活かしていけたらなと思います。
HashMapにstatic修飾子をつけることで解決致しました。

もしかして,利用箇所ごとにインスタンス作ってたのかな。とするなら,staticで確かに解決できなくはないけれど,どこかでインスタンス作って,それをコンストラクタとかで渡してあげるようにすると,いい感じになるかも。
以下サイン
調べて見つからないことを質問して、「そのくらい調べろ」と言われたら それは調べが足りないとき。

投稿画面のBBコード挿入ボタン を追加するユーザースクリプト作りました。良かったらどうぞ。
https://greasyfork.org/ja/scripts/18657
最大描画距離を64チャンクまで伸ばすMod作ってます。
viewtopic.php?t=30697
アバター
King(qpwakaba)
ID:97b15806
ダイヤモンド掘り
 
記事: 829
登録日時: 2013年3月26日(火) 10:25

  • (PostNo.316738)

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

投稿記事by ごぼたん » 2018年5月19日(土) 19:10

誠に恐縮ながら質問させていただきます。

現在、自分以外のプレイヤーを見えなくするというプラグインを作っているのですが、エラーが発生してしまいどうしていいか分からず困っております。
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();"からエラーが出ると表示されてしまいます。
自分以外のプレイヤーを指定するにはどうしたらいけますでしょうか?
よろしくお願いいたします。
ごぼたん
ID:80e1e3c8
木を殴ってる
 
記事: 20
登録日時: 2016年9月09日(金) 20:59

1つ前へ次へ

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

x