Skip to content

Conversation

@kimchi5005
Copy link
Contributor

Flyコマンドを実装します。
サバイバルモードでもFlyが使えるようになります
初期はOPのみが入力可能ですが
LuckPermsで入力可能な人を指定できます
Fly中落下ダメージを食らいません。
ログアウト時Flyは自動的に解除されます。

// OPは最初から持っているが、Luckparmsで他のプレイヤーにも付与も可能
if (!player.hasPermission("fly")) {
player.sendMessage("§cこのコマンドを実行する権限がありません。");
return true;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

エラーのときはfalseを返すらしい
メルとバチバチに議論してくれ

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

falseにしちゃうとusageが表示されちゃうからどうしようかとおもってたらusageを元から書いてなかった
めるとバチバチになってきます

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ここではっきりさせておくか.
Spigot / Bukkit の onCommand の返り値 true / false は内部的に次のような挙動をするのね.

  • true: Spigot / Bukkit はプレイヤーが実行したコマンドを 成功 として見なす.つまり「プラグイン側でメッセージも含めて全部処理し終わった」という合図として扱われる.
  • false: Spigot / Bukkit はプレイヤーが実行したコマンドを 失敗 として見なす. usage が指定されている場合はプログラマーに変わって送ってあげる

usage を引数の表示として使う人が多いし,それは問題ないが,引数エラー以外のエラーを表現したいなら最初から usage を使わずに sendMessage() で引数を教えたほうが合理的だと思う.


// 権限を確認 (fly という権限を持っているか)
// OPは最初から持っているが、Luckparmsで他のプレイヤーにも付与も可能
if (!player.hasPermission("fly")) {
Copy link
Member

@m1sk9 m1sk9 Jan 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

パーミッションは基本的に別プラグインと同じ名前空間 (入れ物みたいなもの) を使うので,名前衝突 (同じ値同士で衝突する) の可能性が存在する. fly というよくある単語を UniverseCoreV2 で独占するのは良くない.

それに LuckPerms で管理するのが目的なら尚更何のプラグインの何のパーミッションなのかを明示的にしてほしい.

例えば,universecorev2.player.fly とかね.LunaticChat とかがいい例になると思う.

https://github.com/m1sk9/LunaticChat/blob/0fb8f4c92ad5dd7d20778de862b4d12f67f71d5e/platform-paper/src/main/resources/paper-plugin.yml#L11-L26

それと基本的には plugin.yml でパーミッションを指定しないと LuckPerms が認識しないです.
指定し忘れないようにしてほしい.
( Paper プラグインの場合は別の方法があるけど, UniverseCoreV2 は Spigot / Bukkit コマンドとして開発してるので,基本はその作法に従うべき)

// OPは最初から持っているが、Luckparmsで他のプレイヤーにも付与も可能
if (!player.hasPermission("fly")) {
player.sendMessage("§cこのコマンドを実行する権限がありません。");
return true;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ここではっきりさせておくか.
Spigot / Bukkit の onCommand の返り値 true / false は内部的に次のような挙動をするのね.

  • true: Spigot / Bukkit はプレイヤーが実行したコマンドを 成功 として見なす.つまり「プラグイン側でメッセージも含めて全部処理し終わった」という合図として扱われる.
  • false: Spigot / Bukkit はプレイヤーが実行したコマンドを 失敗 として見なす. usage が指定されている場合はプログラマーに変わって送ってあげる

usage を引数の表示として使う人が多いし,それは問題ないが,引数エラー以外のエラーを表現したいなら最初から usage を使わずに sendMessage() で引数を教えたほうが合理的だと思う.

import space.yurisi.universecorev2.subplugins.SubPlugin;
import space.yurisi.universecorev2.subplugins.flysystem.command.FlyCommand;

public final class Fly implements SubPlugin {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

プラグインの名前が FlySystem なのに Fly っていう命名規則は多分違う

@m1sk9
Copy link
Member

m1sk9 commented Jan 25, 2026

CleanShot 2026-01-25 at 14 04 45

あとまあこれは注意なんだけど,ブランチ名に日本語を含めるのは一部の環境において不安定な挙動を呼ぶ可能性があるので避けた方がいい

これは 100% Linear が悪いんだけど, kimchi/spa-36 でも反応するからそうして

@kimchi5005

import org.jetbrains.annotations.NotNull;
import java.util.Locale;

public class FlyCommand implements CommandExecutor {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

スペース入ってる

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants