このリポジトリにはGPluginsシリーズのGMusicプロジェクトが含まれています!
- ウェブサイト: GMusic - Spigot
- GitHub: GMusic - GitHub
- Discord: GPlugins - Discord
- 個人用音楽プレイヤー: 個別のプレイヤーにカスタム音楽を再生
- Jukeboxシステム: 特別なJukeboxを設置し、近くのプレイヤーに距離減衰付きで音楽を配信
- Radioモード: 参加しているすべてのプレイヤーにグローバル音楽配信
- 音楽フォーマット: NBS(Note Block Studio)とMIDIファイルのGNBS形式への変換をサポート
あなたの音楽を近くのプレイヤーに配信!有効にすると:
- 範囲内のプレイヤー(デフォルト20ブロック、5-100で調整可能)があなたの音楽を聴ける
- 距離に応じて自然に音量が減少
- あなたの頭上に音符のパーティクルが表示される(他人から見える)
- 他のプレイヤーはあなたのスピーカーをミュートできる
GUI操作(オプションメニュー):
- ベルアイコン(スロット51): スピーカーモードの切り替えと範囲調整
- 左/右クリック: スピーカーモードのON/OFF
- Shift + 左/右クリック: 範囲を調整(±5ブロック)
- ミドルクリック: デフォルトにリセット(OFF、20ブロック)
- 鉄格子アイコン(スロット52): 他人のスピーカーをミュート
- 左/右クリック: ミュートの切り替え
- ミドルクリック: ミュート解除にリセット
フォルダで音楽ライブラリを整理:
songs/フォルダ内にサブディレクトリを作成- 各フォルダがGUIでカテゴリになる
- メインメニューの**本棚アイコン(スロット51)**でカテゴリをナビゲート
- 左クリック: 次のカテゴリ
- 右クリック: 前のカテゴリ
- サイクル: すべての曲 → カテゴリ1 → カテゴリ2 → ... → すべての曲
- デフォルト: 曲を1回再生
- シャッフル: リスト内の次の曲を自動再生
- ループ: 現在の曲をリピート
- 逆再生モード: 曲を逆再生
- お気に入り: お気に入りの曲でプレイリストを作成
- 音量調整: 0-100%で調整可能
- パーティクルエフェクト: 再生中の音符パーティクルの切り替え
- 参加時に再生: サーバー参加時に自動的に音楽を開始
- 検索: タイトルで曲を検索
- プレイヤー別設定: すべての設定がプレイヤーごとに保存される
- 最新の
GMusic-x.x-x.jarをリリースからダウンロード - サーバーの
plugins/フォルダに配置 - サーバーを再起動
- 必要に応じて
plugins/GMusic/config.ymlで設定
plugins/GMusic/
├── songs/ # 変換済み音楽ファイル (.gnbs)
│ ├── song1.gnbs
│ ├── song2.gnbs
│ ├── Rock/ # カテゴリフォルダ(新機能)
│ │ ├── rock1.gnbs
│ │ └── rock2.gnbs
│ └── Classical/ # 別のカテゴリ(新機能)
│ └── classical1.gnbs
├── nbs/ # .nbsファイルを配置して自動変換
│ └── example.nbs
└── midi/ # .midファイルを配置して自動変換
└── example.mid
NBS(Note Block Studio):
.nbsファイルを作成またはダウンロードplugins/GMusic/nbs/フォルダに配置- サーバーを再起動またはプラグインをリロード
- ファイルが自動的に
.gnbs形式に変換されsongs/フォルダに表示される
MIDIファイル:
.midまたは.midiファイルをplugins/GMusic/midi/フォルダに配置- サーバーを再起動またはプラグインをリロード
- ファイルが自動的に
.gnbs形式に変換されsongs/フォルダに表示される
直接GNBS:
.gnbsファイルを直接plugins/GMusic/songs/フォルダに配置- カテゴリ用にサブディレクトリで整理可能(新機能)
プラグインは起動時にNBSとMIDIファイルを自動変換します:
nbs/とmidi/フォルダの新しいファイルをチェック.gnbsとしてまだ存在しないファイルのみを変換- 変換されたファイルは
songs/フォルダに表示される - 元のNBS/MIDIファイルはそのフォルダに残る
- ワールド内にJukeboxブロックを設置
- 右クリックして音楽GUIを開く
- そのJukeboxから再生する曲を選択
- 範囲内の近くのプレイヤーが音楽を聴く
- オプションで範囲を調整(オプションメニューのスロット51)
Jukebox機能:
- 距離ベースの音量(近いほど大きい)
- 設定可能な範囲(デフォルト50、最大500ブロック)
- Jukeboxごとに永続的な設定
- Jukebox位置に音符パーティクルが表示される
/music play <曲名>- 特定の曲を再生/music playing- 現在再生中の曲を表示/music random- ランダムな曲を再生/music stop- 現在の曲を停止/music pause- 現在の曲を一時停止/music resume- 一時停止した曲を再開/music skip- 次の曲にスキップ/music toggle- 音楽のON/OFFを切り替え
Options:
# Jukebox設定
jukebox-range: 50 # デフォルトのJukebox聴取範囲
max-jukebox-range: 500 # Jukeboxの最大範囲
# スピーカーモード設定(新機能)
speaker-default-range: 20 # デフォルトのスピーカーモード範囲
max-speaker-range: 100 # スピーカーモードの最大範囲
# サウンド設定
Sound:
extened-range: true # 拡張音域を使用(リソースパックが必要)
force-resources: true # リソースパックをプレイヤーに自動適用
# 環境エフェクト
environment-effects: true # 水中で特殊なサウンドエフェクト
# GUIオプション
GUI:
disable-random-song: false
disable-playlist: false
disable-options: false
disable-search: false
disable-speaker-mode: false # スピーカーモード機能を無効化(新機能)
# デフォルトのプレイヤー設定
PlayerSettings:
Default:
volume: 70
particles: false
play-mode: 0 # 0=デフォルト, 1=シャッフル, 2=ループプラグインは複数の言語をサポートしています。plugins/GMusic/lang/のファイルを編集:
en_us.yml- 英語(米国)de_de.yml- ドイツ語- 独自の言語ファイルを追加可能
新しい翻訳キー(カスタム言語ファイル用):
MusicGUI:
music-options-speaker-mode: "&aスピーカーモード:&6 %SpeakerMode%"
music-options-speaker-range: "&7範囲:&b %Range%&7 ブロック"
music-options-mute-speakers: "&a他人のスピーカーをミュート:&6 %MuteSpeakers%"
music-category-all: "&eすべてのカテゴリ"
music-category: "&eカテゴリ:&6 %Category%"プレイヤー設定はSQLiteデータベース(plugins/GMusic/data.db)に保存されます:
テーブル:
gmusic_play_settings- プレイヤーの設定(音量、モード、スピーカー設定)gmusic_play_settings_favorites- プレイヤーごとのお気に入り曲gmusic_juke_box- Jukeboxの位置と設定
新しいフィールド:
speakerMode- スピーカーモードの有効/無効speakerRange- スピーカー配信範囲muteSpeakers- 他人のスピーカーをミュートcurrentCategory- 最後に選択したカテゴリ
リポジトリをクローン:
git clone https://github.com/Gecolay/GMusic.gitgradlew clean buildコマンドを実行。
最終的なGMusic-x.x-x.jarファイルはbuild/libsフォルダにあります。
GMusic/
├── core/ # コアプラグインコード
│ └── src/main/java/dev/geco/gmusic/
│ ├── object/ # データモデル
│ │ ├── GPlaySettings.java # プレイヤー設定モデル
│ │ ├── GSong.java # 曲データモデル
│ │ └── gui/ # GUIクラス
│ │ └── GMusicGUI.java # メイン音楽GUI
│ └── service/ # ビジネスロジック
│ ├── PlayService.java # 音楽再生とスピーカーモード
│ ├── JukeBoxService.java # Jukebox機能
│ ├── RadioService.java # Radio配信
│ ├── SongService.java # 曲読み込みとカテゴリ
│ ├── ConfigService.java # 設定管理
│ └── PlaySettingsService.java # プレイヤー設定とデータベース
├── resources/
│ ├── config.yml # メイン設定
│ └── lang/ # 言語ファイル
│ ├── en_us.yml
│ └── de_de.yml
└── build.gradle # ビルド設定
スピーカーモード (PlayService.java):
getSpeakerListeners(): 範囲内のプレイヤーを検索し、ミュート設定を尊重- 距離ベースの音量計算式:
(distance - range) * sourceVolume / -range - ゲームティック(50ms)ごとに音量減衰を適用して音を配信
- 発信源プレイヤーの頭上にパーティクルを生成
カテゴリシステム (SongService.java):
loadSongsFromDirectory():songs/フォルダを再帰的にスキャン- サブディレクトリがカテゴリになる
- 大文字小文字を区別しないTreeMapでカテゴリをソート
GUI統合 (GMusicGUI.java):
- 6x9インベントリベースのGUI
- ボトムバー(スロット45-53)でコントロール
- 設定用のオプションメニュー
- コンテキストに応じた動的スロット割り当て
- 拡張音域を使用している場合、プレイヤーがリソースパックを受け入れているか確認
- プレイヤーが音楽をオフにしていないか確認(
/music toggle) songs/フォルダに.gnbs形式の曲ファイルがあることを確認
- config.ymlで
disable-speaker-mode: falseになっているか確認 - プレイヤーが範囲内(デフォルト20ブロック)にいることを確認
- リスナーがスピーカーをミュートしていないか確認
- GUIでスピーカーモードが有効になっているか確認(オプション → ベルアイコン)
songs/ディレクトリ内にフォルダが存在することを確認- フォルダ内に
.gnbsファイルが含まれていることを確認 - フォルダ追加後にプラグインをリロード:
/gmusic reload
- NBSファイルは
nbs/フォルダに配置(songs/ではない) - MIDIファイルは
midi/フォルダに配置(songs/ではない) - 再変換が必要な場合、対応する
.gnbsファイルを削除 - サーバーコンソールで変換エラーを確認
このリポジトリにコードを送信するためのプルリクエストを作成できます: Pull requests
ライセンス情報についてはリポジトリを参照してください。
- オリジナルGMusicプラグイン by Gecolay
- 新機能: スピーカーモード、音楽カテゴリ
- コミュニティからの貢献を歓迎します!
- 権限チェックロジックの改善:
isPermissionSetによる誤判定を修正- 一部の権限プラグイン(LuckPermsなど)で権限が正しく認識されない問題を解消
- ジュークボックスGUIが開けない問題を修正
- お気に入り表示の修正: ジュークボックスGUIでプレイヤーのお気に入り状態が表示されてしまう問題を修正
- GUI表示更新: インベントリを開いた時に最新の状態を表示するように改善
- お気に入り効果音: お気に入り登録/解除時に効果音を追加
- 登録時: 高いピッチ (1.0)
- 解除時: 低いピッチ (0.5)
- 自動停止時間変更: 可聴範囲内にプレイヤーがいない場合の自動停止時間を5分から10分に変更
- お気に入りチェック時にUUIDから明示的に設定を取得するように変更
- InventoryOpenEventハンドラーを追加してGUI表示を動的に更新
- メニュータイトル: おしゃれな装飾付き「✦ Music Player ✦」に変更
- オプション画面を廃止: 設定ボタンをカテゴリバーの2列目に統合
- 新レイアウト:
Slot 0-26: 曲リスト(3行) Slot 27: 全曲ボタン Slot 28-39: カテゴリボタン(最大12個) Slot 40: 音量設定 Slot 41: 可聴範囲(ジュークボックス)/ 再生モード(プレイヤー) Slot 42: 再生モード(ジュークボックスのみ) Slot 43-44: ページナビゲーション Slot 45-47: 再生コントロール(再生中のみ表示) Slot 48: ランダム再生 Slot 49: プレイリストモード Slot 50: (空き) Slot 51: お気に入り Slot 52: スピーカーモード(プレイヤーGUIのみ) Slot 53: ミュート設定(プレイヤーGUIのみ)
- 10分間の自動停止遅延: 可聴範囲内にプレイヤーがいなくなっても即座に停止せず、10分間待機後に自動停止
- パーティクル表示範囲の拡大: 可聴範囲外でも、パーティクル表示範囲内のプレイヤーにはジュークボックスが再生中であることが視覚的にわかる
# 新しい設定
jukebox-auto-stop-delay: 600000 # 自動停止までの待機時間(ミリ秒、デフォルト10分)
jukebox-particle-range: 100 # パーティクル表示範囲(可聴範囲より広く設定推奨)
# 削除された設定
# disable-options: false (オプション画面廃止のため削除)
# disable-search: false (未使用のため削除)| 設定名 | 対象 | 説明 | デフォルト |
|---|---|---|---|
jukebox-range |
ジュークボックス | 新規設置時のデフォルト可聴範囲 | 20 |
max-jukebox-range |
ジュークボックス | GUI で設定可能な最大可聴範囲 | 50 |
jukebox-particle-range |
ジュークボックス | パーティクルが見える範囲 | 100 |
jukebox-auto-stop-delay |
ジュークボックス | 範囲外時の自動停止遅延(ms) | 600000 |
speaker-default-range |
プレイヤー | スピーカーモードのデフォルト範囲 | 30 |
max-speaker-range |
プレイヤー | スピーカーモードの最大範囲 | 100 |
ジュークボックス vs プレイヤースピーカーの違い:
- ジュークボックス: 設置ブロックから音が出る。
可聴範囲は GUI から変更可能(最大値は config で制限) - プレイヤースピーカー: プレイヤー自身から音が出る。
スピーカー範囲は GUI から変更可能(最大値は config で制限)
ミュート機能:
- 「他人のスピーカーをミュート」を有効にすると、他プレイヤーのスピーカーモードの音と設置ジュークボックスの音が聞こえなくなります
- パーティクルは引き続き表示されます
OPプレイヤーは /music speaker コマンドで特別なスピーカー設定が可能です。
/music speaker on [均一半径] [最大半径] - スピーカーモードON
/music speaker off - スピーカーモードOFF
/music speaker range [均一半径] [最大半径] - 範囲のみ変更
パラメータ説明:
- 均一半径: この範囲内のプレイヤーには音量100%で聞こえます(音量減衰なし)
- 最大半径: 音が届く最大距離。均一半径を超えた地点から距離に応じて音量が減衰します
注意事項:
- このコマンドは configの制限を無視 できます(例: max-speaker-range: 100 でも 200 を指定可能)
- 均一半径・最大半径の設定はセッション中のみ有効で、DBには保存されません
- GUIで設定変更すると、均一半径は0にリセットされます
- 一般プレイヤーはGUIでのみ範囲調整可能(configの max-speaker-range まで)
/amusic jukebox <プレイヤー名> [個数]で専用アイテムを入手できます- 専用アイテムには PersistentDataContainer でマーキングされており、通常のジュークボックスとは区別されます
- 専用アイテムを設置すると音楽プレイヤーGUIが使用可能になります
- 通常のジュークボックスを設置しても音楽プレイヤー機能は動作しません
GUI レイアウトの最適化
- 曲表示エリアを45スロットから36スロット(6行→4行)に変更
- カテゴリボタンを常時表示(スロット36-44)に配置
- スロット36: 全曲ボタン(本棚アイコン)
- スロット37-44: カテゴリボタン(8色の異なる染料アイコン)
- お気に入り追加ボタンをスロット52に配置
機能の追加・変更
- 再生モードに「カテゴリ内プレイ」を追加(以前のPLAYLISTから名称変更)
- スピーカーモードをオプション画面に追加(デフォルトOFF)
- パーティクル表示機能を削除(スピーカーモード時は自動ON)
- リバース(逆再生)機能を削除
- ウェルカムミュージック(参加時自動再生)機能を削除
- ログイン時の自動再生を無効化
設定ファイルの変更
config.ymlからparticlesとreverseの設定を削除disable-optionsのデフォルトをfalseに変更- スピーカーモードのデフォルトをfalseに設定
言語ファイルの更新
music-options-play-mode-category(カテゴリ内プレイ)を追加music-category-all(全ての曲)を追加music-add-favorite(お気に入りに追加)を追加
データベース
- お気に入り機能用のテーブル構造を維持
config.ymlでdisable-favorites: falseにより有効化
(以前の変更履歴は上記の「変更履歴 (2025-12-04)」セクションを参照)
- スピーカートグルスイッチの移動: スピーカートグルボタン(ベルアイコン)をオプションメニューからデフォルトバーのスロット51に移動しました。これにより、メイン画面から直接スピーカーモードを切り替えられるようになりました。
- カテゴリ一覧の常時表示: カテゴリ一覧をGUIの底部の一段上(行5、スロット36-44)に常時表示するようにしました。これにより、カテゴリ間の移動がスムーズになりました。
- 曲リストの表示領域変更: カテゴリ一覧の表示に伴い、曲リストの表示領域を行1-4(スロット0-35)に変更しました。
- オプション画面のUI改善: オプション画面を開いているときは、曲リストとカテゴリボタンを非表示にして、設定画面に集中できるようにしました。
- プレイリスト内シャッフル: 再生モードの「シャッフル」の挙動を変更し、現在選択されているプレイリスト(お気に入り、カテゴリ、または全曲)の中からランダムに曲を選んで再生するようにしました。
- パーティクル表示の改善: スピーカーモードがOFFの時は、自分自身にも音符パーティクルを表示しないように変更しました。「パーティクル表示」設定がONでも、スピーカーモードがOFFであればパーティクルは出ません。
- カテゴリ選択の修正: カテゴリボタンをクリックした際に、正しくカテゴリの曲が表示されるように修正しました。
- 日本語化: デフォルトの言語設定を日本語(
ja_jp)に変更し、日本語の翻訳ファイル(ja_jp.yml)を追加しました。 - 操作説明の追加:
- スピーカーモード: 「(範囲: Xブロック)」という範囲表示を追加し、操作方法を詳細に説明
- 音量ボタン: 「(左クリック:+5 右クリック:-5)」という操作方法を追加
- デフォルト設定の変更:
- 他人のスピーカーモードのミュート設定(
muteSpeakers)のデフォルトをOFFにしました。 - 変換された曲のデフォルト保存先カテゴリを
Defaultからsongsに変更しました。 - 逆再生機能をデフォルトで無効化しました(既存のデータベースに逆再生が有効になっている場合は手動でリセットが必要です)。
- スピーカーモードのデフォルト範囲を30ブロックに設定(距離に応じて音量が自然に減衰します)。
- 他人のスピーカーモードのミュート設定(
スピーカーモードが正しく機能するようになりました:
- オプション画面のスロット47にスピーカーモード設定があります(JUKEBOXアイコン)
- 左/右クリック: スピーカーモードのON/OFF切り替え
- Shift+左/右クリック: 範囲を±5ブロック調整(最小5、最大100)
- ミドルクリック: デフォルト設定にリセット(OFF、30ブロック)
- 範囲と操作方法がアイテムの説明文に表示されます
- 有効にすると、設定した範囲内のプレイヤーにあなたの音楽が聞こえます
- 距離に応じて音量が自動的に減衰します