提供: Minecraft Modding Wiki
この編集を取り消せます。
下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
8行目: | 8行目: | ||
このチュートリアルを理解するためには、/scoreboard コマンドを試して、 | このチュートリアルを理解するためには、/scoreboard コマンドを試して、 | ||
Scoreboardシステムの仕様をよく理解することが一番の近道です。 | Scoreboardシステムの仕様をよく理解することが一番の近道です。 | ||
− | コマンドの使い方は、[http://ch.nicovideo.jp/minecrafter/blomaga/ar95807 こちら]や[http://www.nicovideo.jp/watch/sm20410540 こちら] | + | コマンドの使い方は、[http://ch.nicovideo.jp/minecrafter/blomaga/ar95807 こちら]や[http://www.nicovideo.jp/watch/sm20410540 こちら]を参考にしてみてください。 |
− | = | + | =スコアボードシステムの基本的な使い方= |
まず、ScoreboardManager を取得します。 | まず、ScoreboardManager を取得します。 | ||
− | < | + | <pre> |
ScoreboardManager manager = Bukkit.getScoreboardManager(); | ScoreboardManager manager = Bukkit.getScoreboardManager(); | ||
− | </ | + | </pre> |
次に、Scoreboard を取得します。 | 次に、Scoreboard を取得します。 | ||
− | < | + | <pre> |
Scoreboard board = manager.getMainScoreboard(); | Scoreboard board = manager.getMainScoreboard(); | ||
− | </ | + | </pre> |
Scoreboard に、新しいチームを登録します。 | Scoreboard に、新しいチームを登録します。 | ||
− | < | + | <pre> |
Team team = board.registerNewTeam("teamname"); | Team team = board.registerNewTeam("teamname"); | ||
− | </ | + | </pre> |
そして、登録されたチームの設定をいろいろ変更します。 | そして、登録されたチームの設定をいろいろ変更します。 | ||
− | < | + | <pre> |
// プレイヤーを追加します。 | // プレイヤーを追加します。 | ||
team.addPlayer(player); | team.addPlayer(player); | ||
43行目: | 43行目: | ||
team.setPrefix("prefix"); | team.setPrefix("prefix"); | ||
− | // | + | // prefixを登録します。これは、TABキーを押したときのプレイヤーリストと、 |
// 頭の上のプレイヤー名で、該当チームに所属するプレイヤーの名前の"後"に、 | // 頭の上のプレイヤー名で、該当チームに所属するプレイヤーの名前の"後"に、 | ||
// 指定した文字列が付きます。 | // 指定した文字列が付きます。 | ||
55行目: | 55行目: | ||
// チームメンバー同士の攻撃ができるかどうかを設定します。 | // チームメンバー同士の攻撃ができるかどうかを設定します。 | ||
// true で攻撃が有効になり、false で攻撃が無効になります。 | // true で攻撃が有効になり、false で攻撃が無効になります。 | ||
− | team.setAllowFriendlyFire(false) | + | team.setAllowFriendlyFire(false) |
// 透明化しているチームメンバーを見えるようにするかどうかを設定します。 | // 透明化しているチームメンバーを見えるようにするかどうかを設定します。 | ||
61行目: | 61行目: | ||
// false で誰からも見えなくなります。 | // false で誰からも見えなくなります。 | ||
team.setCanSeeFriendlyInvisibles(true); | team.setCanSeeFriendlyInvisibles(true); | ||
− | </ | + | </pre> |
"dummy"というCriteriaを設定して、"test"という名前の新しいObjectiveを作成します。 | "dummy"というCriteriaを設定して、"test"という名前の新しいObjectiveを作成します。 | ||
− | < | + | <pre> |
Objective objective = board.registerNewObjective("test", "dummy"); | Objective objective = board.registerNewObjective("test", "dummy"); | ||
− | </ | + | </pre> |
新しく登録したObjectiveの設定も、いろいろ変更してみましょう。 | 新しく登録したObjectiveの設定も、いろいろ変更してみましょう。 | ||
− | < | + | <pre> |
// Objective の表示名を設定します。 | // Objective の表示名を設定します。 | ||
objective.setDisplayName("Display Name"); | objective.setDisplayName("Display Name"); | ||
76行目: | 76行目: | ||
// SIDEBAR、PLAYER_LIST、BELOW_NAME が指定できます。 | // SIDEBAR、PLAYER_LIST、BELOW_NAME が指定できます。 | ||
objective.setDisplaySlot(DisplaySlot.BELOW_NAME); | objective.setDisplaySlot(DisplaySlot.BELOW_NAME); | ||
− | </ | + | </pre> |
特定のプレイヤーに対するObjectiveでの点数を設定します。 | 特定のプレイヤーに対するObjectiveでの点数を設定します。 | ||
− | < | + | <pre> |
− | |||
Score score = objective.getScore(player); | Score score = objective.getScore(player); | ||
score.setScore(42); | score.setScore(42); | ||
− | + | </pre> | |
− | |||
− | |||
− | |||
− | </ | ||
ここまでを実装して設定することで、下のスクリーンショットのように表示が確認できていると思います。 | ここまでを実装して設定することで、下のスクリーンショットのように表示が確認できていると思います。 | ||
− | |||
特定のプレイヤーのスコアをリセットするには、次のようにします。 | 特定のプレイヤーのスコアをリセットするには、次のようにします。 | ||
− | < | + | <pre> |
− | |||
board.resetScores(player); | board.resetScores(player); | ||
+ | </pre> | ||
− | |||
− | |||
− | |||
=専用のスコアボードシステムの取得と設定= | =専用のスコアボードシステムの取得と設定= | ||
110行目: | 101行目: | ||
最初のgetMainScoreboard()をgetNewScoreboard()にしてください。 | 最初のgetMainScoreboard()をgetNewScoreboard()にしてください。 | ||
− | < | + | <pre> |
Scoreboard board = manager.getNewScoreboard(); | Scoreboard board = manager.getNewScoreboard(); | ||
− | </ | + | </pre> |
専用のScoreboardシステムでは、デフォルトで表示されません。 | 専用のScoreboardシステムでは、デフォルトで表示されません。 | ||
− | + | 各プレイヤーの表示を設定するには、setScoreboardを使用してください。 | |
− | < | + | <pre> |
− | for ( Player | + | for ( Player online : Bukkit.getOnlinePlayers() ) { |
− | + | online.setScoreboard(board); | |
} | } | ||
− | </ | + | </pre> |
=サイドバーでのカスタム項目の設定= | =サイドバーでのカスタム項目の設定= | ||
− | + | サイドバーにObjectiveを設定している場合、ダミーのOfflinePlayerを登録することで、 | |
カスタム項目を表示することが可能です。 | カスタム項目を表示することが可能です。 | ||
カスタム項目のスコアを登録するには、次のようにします。 | カスタム項目のスコアを登録するには、次のようにします。 | ||
− | < | + | <pre> |
− | |||
Score score = objective.getScore(Bukkit.getOfflinePlayer(name)); | Score score = objective.getScore(Bukkit.getOfflinePlayer(name)); | ||
score.setScore(99); | score.setScore(99); | ||
− | + | </pre> | |
− | |||
− | |||
− | |||
− | </ | ||
カスタム項目のスコアをリセットするには、次のようにします。 | カスタム項目のスコアをリセットするには、次のようにします。 | ||
− | < | + | <pre> |
− | |||
board.resetScores(Bukkit.getOfflinePlayer(name)); | board.resetScores(Bukkit.getOfflinePlayer(name)); | ||
− | + | </pre> | |
− | |||
− | |||
− | </ | ||
例 | 例 | ||
− | < | + | <pre> |
− | + | Score score = objective.getScore(Bukkit.getOfflinePlayer(ChatColor.GREEN + "kills:")); | |
− | Score score = objective.getScore(ChatColor.GREEN + "kills:"); | ||
score.setScore(99); | score.setScore(99); | ||
− | </ | + | </pre> |
+ | |||
− | |||
=簡単な実装例= | =簡単な実装例= | ||
− | + | 各プレイヤーの頭の下に、現在の体力を表示します。 | |
− | |||
なお、Criteria に "health" を指定した場合、各プレイヤーの体力が増減するたびに、自動的に更新されます。 | なお、Criteria に "health" を指定した場合、各プレイヤーの体力が増減するたびに、自動的に更新されます。 | ||
(プラグイン側から更新を実施する必要はありません。) | (プラグイン側から更新を実施する必要はありません。) | ||
− | < | + | <pre> |
− | + | ScoreboardManager manager = Bukkit.getScoreboardManager(); | |
− | + | Scoreboard board = manager.getNewScoreboard(); | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Objective objective = board.registerNewObjective("showhealth", "health"); | |
− | + | objective.setDisplaySlot(DisplaySlot.BELOW_NAME); | |
− | + | objective.setDisplayName("/ 20"); | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | for(Player online : Bukkit.getOnlinePlayers()){ | |
− | + | online.setScoreboard(board); | |
− | + | online.setHealth(online.getHealth()); | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
− | </ | + | </pre> |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |