08.003.Identify server type - MCJE-Tech-Community/Datapack-WIki GitHub Wiki
ユーザーが使えるMinecraftのサーバーには、ランチャーから起動したときに使用される統合サーバー(integrated server)と、server.jarから起動したときに使用される専用サーバー(dedicated server)の2種類があります。
統合サーバーでのみ登録されるコマンドや専用サーバーでのみ登録されるコマンドがあり、ほとんどの場合その数は異なります。
そのため、/helpによってどちらのサーバーが使われているのか判別することができます。
/helpの結果はルートノード直下のコマンドノード数になるため、この値を調べることでサーバーの種類を判別することができます。
# 23w40aの場合
execute store result storage _ size int 1 run help
execute if data storage _ {size: 67} run say 統合サーバー
execute if data storage _ {size: 80} run say 専用サーバーコマンドノード数の異なる複数のバージョンに対応する場合は、データパックのオーバーレイを使うか、サイズの閾値によって判別することができるはずです。
/help <command>は<command>で始まるコマンドが1つも無いと失敗するため、これを利用してサーバーの種類を判別することができます。
# 23w40aの場合
execute store success storage _ integrated byte 1 run help publish
execute if data storage _ {integrated: true} run say 統合サーバー
execute if data storage _ {integrated: false} run say 専用サーバー