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

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

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

投稿記事by オリゼリ » 2016年7月18日(月) 20:00

リオン さんが書きました:
スコアボードを各プレイヤーごとに変更

onEnableでScoreboardを作ってそれを書き換えてるだけなので全員共通になるんだと思います。
プレイヤーが入ってくる際にgetNewScoreboard()でそのプレイヤー用のスコアボードを作り、
スコアボードの編集の際には、プレイヤーからスコアボードを取得し編集すればいいんじゃないですかね?

↓参考にしたもの?
http://forum.minecraftuser.jp/viewtopic.php?f=39&t=8371&start=520#p164787

出来そうですありがとうございます。
質問の仕方とか直したほうがいいよってことがあったら教えていただければ嬉しいです
オリゼリ
ID:e76ccee0
大工さん
 
記事: 45
登録日時: 2015年4月29日(水) 20:13

  • (PostNo.277955)

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

投稿記事by SREUNIMN » 2016年7月19日(火) 15:39

一部のSchedulerだけキャンセルするにはcancelTask(taskID)でキャンセルすればいいと思うのですが
taskIDの部分を取得するにはどうすれば良いでしょうか

今まで
コード: 全て選択
final BukkitScheduler scheduler = plugin.getServer().getScheduler();
          scheduler.scheduleSyncDelayedTask(plugin, new Runnable(){
     @Override
     public void run(){
          scheduler.cancelAllTasks();}
           }

これだとすべてのものをキャンセルしてしまうので
taskIDの部分の取得法が知りたいです
よろしくお願いします
SREUNIMN
ID:f86fe74b
木を殴ってる
 
記事: 28
登録日時: 2016年5月16日(月) 19:36

  • (PostNo.278056)

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

投稿記事by Lemon18 » 2016年7月20日(水) 18:17

SREUNIMN さんが書きました:taskIDの部分を取得するにはどうすれば良いでしょうか


scheduleSyncDelayedTaskの返り値がtaskidなのでそれを使えばいいかと思います
(Bukkitrunnable使ったほうがいいですよ)
:D
Lemon18
ID:b66be5f3
石掘り
 
記事: 85
登録日時: 2015年6月05日(金) 22:42

  • (PostNo.278069)

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

投稿記事by SREUNIMN » 2016年7月20日(水) 20:53

回答ありがとうございます
BukkitRunnableとこれって何か違うんですか?
BukkitRunnableの利点を教えていただきたいです「」
SREUNIMN
ID:f86fe74b
木を殴ってる
 
記事: 28
登録日時: 2016年5月16日(月) 19:36

  • (PostNo.278077)

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

投稿記事by Lemon18 » 2016年7月20日(水) 22:33

SREUNIMN さんが書きました:BukkitRunnableとこれって何か違うんですか?
BukkitRunnableの利点を教えていただきたいです


BukkitRunnableならidを取得しないでも自己キャンセルできます。
あと少し可読性が上がるかと...
:D
Lemon18
ID:b66be5f3
石掘り
 
記事: 85
登録日時: 2015年6月05日(金) 22:42

  • (PostNo.278086)

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

投稿記事by Silvers_Cat » 2016年7月20日(水) 23:55

Spigotでプラグイン開発しようとしたのですが謎のエラーが出てしまい、続行できなくなってしまいました。どうすればいいでしょうか?

コード: 全て選択
package jp.chespin.prunus; //「ビルド・パスが不完全であるため、プロジェクトはビルドされませんでした。com.avaje.ebean.EbeanServer のクラス・ファイルが見つかりません。ビルド・パスを修正してから、このプロジェクトをビルドしてください」エラー発生

import org.bukkit.plugin.java.JavaPlugin;

public class Prunus extends JavaPlugin {

}



Version:Spigot 1.9-R0.1-SNAPSHOT
Tool:Eclipse
アバター
Silvers_Cat
ID:ef413e77
石掘り
 
記事: 129
登録日時: 2015年3月29日(日) 12:22

  • (PostNo.278101)

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

投稿記事by Lemon18 » 2016年7月21日(木) 08:34

Chespin さんが書きました:「ビルド・パスが不完全であるため、プロジェクトはビルドされませんでした。com.avaje.ebean.EbeanServer のクラス・ファイルが見つかりません。


https://hub.spigotmc.org/jira/browse/SPIGOT-384
調べたらトップで出てきました...

上記の通り、spigot-api-1.9-R0.1-SNAPSHOT-shaded.jarを追加してください。
個人的なあれですが、Maven使うのをおすすめします。
:D
Lemon18
ID:b66be5f3
石掘り
 
記事: 85
登録日時: 2015年6月05日(金) 22:42

  • (PostNo.278102)

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

投稿記事by SREUNIMN » 2016年7月21日(木) 08:37

回答ありがとうございます
あともう一つだけお聞きしたいのですが
BukkitRunnableでscheduleSyncRepeatingTaskと同じことをすることは
可能でしょうか
SREUNIMN
ID:f86fe74b
木を殴ってる
 
記事: 28
登録日時: 2016年5月16日(月) 19:36

  • (PostNo.278114)

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

投稿記事by Silvers_Cat » 2016年7月21日(木) 11:55

Lemon18 さんが書きました:
Chespin さんが書きました:「ビルド・パスが不完全であるため、プロジェクトはビルドされませんでした。com.avaje.ebean.EbeanServer のクラス・ファイルが見つかりません。


https://hub.spigotmc.org/jira/browse/SPIGOT-384
調べたらトップで出てきました...

上記の通り、spigot-api-1.9-R0.1-SNAPSHOT-shaded.jarを追加してください。
個人的なあれですが、Maven使うのをおすすめします。


ありがとうございます。早速実行に移します。
私が調べた時は「東芝のHPで問い合わせてみろ」なんていう変な情報ばかりでした…^^;
アバター
Silvers_Cat
ID:ef413e77
石掘り
 
記事: 129
登録日時: 2015年3月29日(日) 12:22

  • (PostNo.278136)

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

投稿記事by Lemon18 » 2016年7月21日(木) 14:25

SREUNIMN さんが書きました:BukkitRunnableでscheduleSyncRepeatingTaskと同じことをすることは
可能でしょうか


http://wiki.bukkit.org/Scheduler_Programming#Anonymous_BukkitRunnable_Example
:D
Lemon18
ID:b66be5f3
石掘り
 
記事: 85
登録日時: 2015年6月05日(金) 22:42

  • (PostNo.278195)

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

投稿記事by SREUNIMN » 2016年7月21日(木) 21:18

回答ありがとうございます

これってscheduleSyncRepeatingTaskじゃなくてscheduleSyncDelayedTaskじゃ?。。。
SREUNIMN
ID:f86fe74b
木を殴ってる
 
記事: 28
登録日時: 2016年5月16日(月) 19:36

  • (PostNo.278201)

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

投稿記事by King(qpwakaba) » 2016年7月21日(木) 21:51

SREUNIMN さんが書きました:回答ありがとうございます

これってscheduleSyncRepeatingTaskじゃなくてscheduleSyncDelayedTaskじゃ?。。。


BukkitRunnable#runTaskLater(Plugin, long)
おそらくこれで行けるかと。
以下サイン
調べて見つからないことを質問して、「そのくらい調べろ」と言われたら それは調べが足りないとき。

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

  • (PostNo.278285)

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

投稿記事by SREUNIMN » 2016年7月22日(金) 19:10

回答ありがとうございます

runTaskTimerを使って繰り返しが作れました
ありがとうございました!
SREUNIMN
ID:f86fe74b
木を殴ってる
 
記事: 28
登録日時: 2016年5月16日(月) 19:36

  • (PostNo.278363)

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

投稿記事by yukkuri_emilin » 2016年7月23日(土) 17:19

最近プラグインの制作準備をしてソース(API)が分かればいつでも開発できるようになったのですが、
1.9BukkitAPIを使ったソースの書き方がわかりません。><
どのように書いたら何が起きるなどのことが書かれたサイトとかはありますか?><
教えてください
yukkuri_emilin
ID:1ac08e85
 

  • (PostNo.278378)

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

投稿記事by Lemon18 » 2016年7月23日(土) 19:36

yukkuri_emilin さんが書きました:どのように書いたら何が起きるなどのことが書かれたサイトとかはありますか?


https://hub.spigotmc.org/javadocs/spigot/ これが説明書代わりのものです。

自分のやりたいことがあってその方法がわからない場合、まずは英語で調べてみることをおすすめします。
大概の場合、bukkitかspigotのフォーラムが出てくるので、そこを見ればわかったりします。
それでもわからない場合、ここの過去ログを見て、同じ質問がないと確認した上で、質問することをおすすめします。
:D
Lemon18
ID:b66be5f3
石掘り
 
記事: 85
登録日時: 2015年6月05日(金) 22:42

  • (PostNo.278667)

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

投稿記事by Lemon18 » 2016年7月26日(火) 14:06

現在銃プラグインを作ってるのですが、右クリックの方のsetItemMetaが適用されません。
原因がわかる方教えてください。(BukkitRunnableに入れずにやると適用されます。)

コード: 全て選択
    @EventHandler
    public void onInteract(PlayerInteractEvent event) {
        Player player = event.getPlayer();
        Action action = event.getAction();

        if (event.getItem() == null) {
            return;
        }

        ItemStack item = event.getItem();

        if (!item.hasItemMeta()) {
            return;
        }

        ItemMeta meta = item.getItemMeta();

        for (GunType gunType : GunType.values()) {
            Gun gun = gunType.getGun();
            if (meta.getDisplayName().equals(gun.getName())) {
                event.setCancelled(true);

                if (player.hasMetadata(gun.getName())) {
                    return;
                }

                if (action == Action.RIGHT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK) {
                    if (GunUtil.getClip(item) - gun.getBurst() < 0) {
                        return;
                    }

                    new BukkitRunnable() {
                        int burst = gun.getBurst();
                        @Override
                        public void run() {
                            if (burst == 0) {
                                cancel();
                                return;
                            }

                            List<String> lore = new ArrayList<>();
                            lore.add(ChatColor.GRAY + "Clip: " + String.valueOf(GunUtil.getClip(item) - 1));
                            lore.add(ChatColor.GRAY + "Ammo: " + String.valueOf(GunUtil.getAmmo(item)));

                            meta.setLore(lore);
                            item.setItemMeta(meta);
                            player.updateInventory();

                            burst--;
                        }
                    }.runTaskTimer(main, 0, gun.getRate());

                }
                break;
            }
        }
    }
※質問と関係ない部分は切り取らせていただきました。
最後に編集したユーザー Lemon18 [ 2016年7月26日(火) 18:58 ], 累計 1 回
:D
Lemon18
ID:b66be5f3
石掘り
 
記事: 85
登録日時: 2015年6月05日(金) 22:42

  • (PostNo.278674)

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

投稿記事by supermarisa6 » 2016年7月26日(火) 14:19

Lemon18 さんが書きました:現在銃プラグインを作ってるのですが、右クリックの方のsetItemMetaが適用されません。
原因がわかる方教えてください。(BukkitRunnableに入れずにやると適用されます。)

コード: 全て選択
    @EventHandler
    public void onInteract(PlayerInteractEvent event) {
        Player player = event.getPlayer();
        Action action = event.getAction();

        if (event.getItem() == null) {
            return;
        }

        ItemStack item = event.getItem();

        if (!item.hasItemMeta()) {
            return;
        }

        ItemMeta meta = item.getItemMeta();

        for (GunType gunType : GunType.values()) {
            Gun gun = gunType.getGun();
            if (meta.getDisplayName().equals(gun.getName())) {
                event.setCancelled(true);

                if (player.hasMetadata(gun.getName())) {
                    return;
                }

                if (action == Action.RIGHT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK) {
                    if (GunUtil.getClip(item) - gun.getBurst() < 0) {
                        return;
                    }

                    new BukkitRunnable() {
                        int burst = gun.getBurst();
                        @Override
                        public void run() {
                            if (burst == 0) {
                                cancel();
                                return;
                            }

                            List<String> lore = new ArrayList<>();
                            lore.add(ChatColor.GRAY + "Clip: " + String.valueOf(GunUtil.getClip(item) - 1));
                            lore.add(ChatColor.GRAY + "Ammo: " + String.valueOf(GunUtil.getAmmo(item)));

                            meta.setLore(lore);
                            item.setItemMeta(meta);
                            player.updateInventory();

                            World world = player.getWorld();
                            Location loc = player.getLocation();
                            Vector vec = loc.getDirection();

                            vec.normalize().multiply(gun.getSpeed())
                                    .add(Vector.getRandom().multiply(gun.getSpread()))
                                    .subtract(Vector.getRandom().multiply(gun.getSpread()));

                            Snowball snow = player.launchProjectile(Snowball.class, vec);

                            MetadataUtil.setEntityMetadata(snow, gun.getName(), null, main);

                            burst--;

                            new BukkitRunnable() {
                                @Override
                                public void run() {
                                    if (snow.isDead()) {
                                        cancel();
                                        return;
                                    }

                                    world.spigot().playEffect(snow.getLocation().subtract(snow.getVelocity().normalize()), Effect.FIREWORKS_SPARK, 0, 0, 0, 0, 0, 0, 1, 50);
                                    world.spigot().playEffect(snow.getLocation().add(snow.getVelocity().normalize()), Effect.FIREWORKS_SPARK, 0, 0, 0, 0, 0, 0, 1, 50);
                                }
                            }.runTaskTimer(main, 0, 1);
                        }
                    }.runTaskTimer(main, 0, gun.getRate());

                    MetadataUtil.setEntityMetadata(player, gun.getName(), null, main);

                    new BukkitRunnable() {
                        @Override
                        public void run() {
                            player.removeMetadata(gun.getName(), main);
                        }
                    }.runTaskLater(main, gun.getRate());

                } else if (action == Action.LEFT_CLICK_AIR || action == Action.LEFT_CLICK_BLOCK) {
                    if (GunUtil.getClip(item) == gun.getClip()) {
                        return;
                    }

                    new BukkitRunnable() {
                        @Override
                        public void run() {
                            int reloadAmount = gun.getClip() - GunUtil.getClip(item);
                            List<String> lore = new ArrayList<>();

                            if (reloadAmount > GunUtil.getAmmo(item)) {
                                lore.add(ChatColor.GRAY + "Clip: " + String.valueOf(GunUtil.getClip(item) + GunUtil.getAmmo(item)));
                                lore.add(ChatColor.GRAY + "Ammo: 0");
                            } else {
                                lore.add(ChatColor.GRAY + "Clip: " + String.valueOf(GunUtil.getClip(item) + reloadAmount));
                                lore.add(ChatColor.GRAY + "Ammo: " + String.valueOf(GunUtil.getAmmo(item) - reloadAmount));
                            }

                            meta.setLore(lore);
                            item.setItemMeta(meta);
                            player.updateInventory();
                        }
                    }.runTaskLater(main, gun.getReloadTime());
                }
                break;
            }
        }
    }

}


変数「meta」を定義する際にfinal修飾子をつければ動くかと思われます。
Bukkitプラグインや外部支援ツールなどちょくちょく作っているsupermarisa6です。
回答するとき、質問を理解せず答えて見当違いなことをよく言いってしまいます。(申し訳ないです)
supermarisa6
ID:9297c8ac
石炭掘り
 
記事: 153
登録日時: 2013年6月05日(水) 17:37

  • (PostNo.278675)

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

投稿記事by Lemon18 » 2016年7月26日(火) 14:57

supermarisa6 さんが書きました:変数「meta」を定義する際にfinal修飾子をつければ動くかと思われます。


それでも動きませんでした。右クリックでItemMetaを更新するのに何か問題があるようです。
最後に編集したユーザー Lemon18 [ 2016年7月29日(金) 19:22 ], 累計 1 回
:D
Lemon18
ID:b66be5f3
石掘り
 
記事: 85
登録日時: 2015年6月05日(金) 22:42

  • (PostNo.278725)

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

投稿記事by mozow470 » 2016年7月26日(火) 23:28

複数のブロックにひびを入れる方法がありましたら教えてください.宜しくお願いします
API ver: Spigot 1.8.8 (v1_8_R3)
https://i.gyazo.com/e04d5b6ec7f523a10a2 ... a18552.png
↑の画像はmc.hypixel.netの「Cops and Crims」より
アバター
mozow470
ID:e61ed3bf
木を殴ってる
 
記事: 13
登録日時: 2015年6月28日(日) 14:30

  • (PostNo.278746)

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

投稿記事by Lemon18 » 2016年7月27日(水) 10:24

mozow470 さんが書きました:複数のブロックにひびを入れる方法がありましたら教えてください


参考になるかわかりませんがどうでしょうか?(1番目のリンクは複数のブロックにひびが入るかはわかりません)
https://bukkit.org/threads/block-breaking-effect.359950/
https://www.spigotmc.org/resources/block-damage.19958/
:D
Lemon18
ID:b66be5f3
石掘り
 
記事: 85
登録日時: 2015年6月05日(金) 22:42

1つ前へ次へ

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

x