MofuAssistant
Paper 1.21.4対応のマルチプレイヤーサーバー向けユーティリティプラグインです。
プレイヤーごとに敵対Mobから攻撃されない状態を設定できます。
LuckPermsグループに基づいてアイテムを自動配布するシステムです。
- LuckPermsの
osusowaken.enableパーミッションを持つグループに所属するプレイヤーに対して、メンバー数に応じたアイテムを配布します - 配布は隔週土曜日15時に自動実行、または管理者が手動で開始できます
- メンバーは配布されたアイテムプールから好きな数量を複数回に分けて受け取り可能です
- 1人: 160個
- 2人: 256個 (+96個)
- 3人: 320個 (+64個)
- 4~99人: 前の人数 +32個/人
- 100人以降: 前の人数 +16個/人
一般プレイヤー向けコマンド:
/osusowaken menu # 配布GUIを開く
/osusowaken info [コミュニティ名] # コミュニティ情報を表示
/osusowaken status # 現在の配布サイクル状態を表示
/osusowaken help # ヘルプを表示
管理者向けコマンド:
/osusowaken setitem # 手に持っているアイテムを配布アイテムとして設定
/osusowaken start # 手動で配布サイクルを開始
/osusowaken end # 配布サイクルを終了
/osusowaken pools # 全コミュニティのプール情報を表示
/osusowaken menuコマンドでGUIを開く- コミュニティを選択(複数所属の場合)
- 受け取り方法を選択:
- 全て受け取る: プールに残っている全てのアイテムを受け取る
- 個数を指定: チャットで個数を入力して指定した数量だけ受け取る
- インベントリに空きがない場合は、入る分だけ受け取られます
- 残りは後から何度でも受け取り可能です
mofuassistant.osusowaken:
description: おすそわ券コマンドの使用を許可
default: true
mofuassistant.osusowaken.admin:
description: おすそわ券システムの管理権限
default: op# コミュニティグループを作成
lp creategroup setsugen
# 配布対象パーミッションを付与
lp group setsugen permission set osusowaken.enable true
# プレイヤーをグループに追加
lp user プレイヤー名 parent add setsugenグループ名とは別の表示名を設定できます。表示名は以下の場所で使用されます:
- 配布GUI
/osusowaken infoコマンド- Discord通知
# 表示名を設定(グループ名: setsugen → 表示名: 雪原コミュニティ)
lp group setsugen permission set displayname.雪原コミュニティ true
# displayname.*パーミッションがない場合はグループ名がそのまま表示されます注意: 内部処理(データベース等)では引き続きグループIDが使用されるため、グループ名を変更しても互換性は保たれます。
- デフォルト: SQLite(
plugins/MofuAssistant/database.db) - 対応: MySQL, MariaDB
設定ファイル(config.yml)でデータベースタイプを変更できます。
- 自動配布: 隔週土曜日 15:00 (Asia/Tokyo)
- 配布期間: 開始から次の配布日まで
- 未受取アイテム: サイクル終了時に破棄
- プールベース配布: コミュニティごとにアイテムプールを作成し、複数プレイヤーで山分け可能
- 原子的操作: トランザクションとロックにより同時アクセス時の競合を防止
- インベントリ対応: 空き容量に応じて自動調整、入りきらない分は後から受け取り可能
- サイクル管理: 配布期間ごとに独立したデータ管理
- LuckPermsをインストール
MofuAssistant.jarをpluginsフォルダに配置- サーバーを再起動
config.ymlで設定を調整(必要に応じて)
plugins/MofuAssistant/config.yml:
database:
type: SQLITE # SQLITE, MYSQL, MARIADB
address: localhost
port: 3306
database: plugins/MofuAssistant/database.db # SQLiteの場合はファイルパス
username: root
password: password
tablePrefix: ""
# Discord webhook settings for distribution notifications
discord:
webhookUrl: "" # Discord Webhook URL(空の場合は通知なし)
enableNotifications: true # Discord通知の有効/無効配布サイクルが開始されたときに、Discordへ自動通知を送信できます。
-
Discord Webhook URLの取得
- Discordサーバーの設定 → 連携サービス → ウェブフック
- 「新しいウェブフック」を作成し、URLをコピー
-
config.ymlに設定
discord: webhookUrl: "https://discord.com/api/webhooks/..." enableNotifications: true
-
通知内容
- 配布サイクルの種類(定期配布/手動配布)
- 配布期間(開始時刻・終了時刻)
- コミュニティごとの配布個数一覧
注意: webhookUrlが空の場合、またはプラグイン起動時に設定項目がない場合は、自動的にconfig.ymlに追加されます。
- Paper 1.21.4以降
- Java 21以降
- LuckPerms 5.4以降
おすそわ券システムを含むバージョンにアップグレードする場合:
-
データベースのバックアップ
# SQLiteの場合 cp plugins/MofuAssistant/database.db plugins/MofuAssistant/database.db.backup # MySQLの場合 mysqldump -u username -p database_name > backup.sql
-
プラグインの更新
# 古いjarファイルを削除 rm plugins/MofuAssistant-old.jar # 新しいjarファイルを配置 cp MofuAssistant-new.jar plugins/MofuAssistant.jar
-
サーバーを再起動
- プラグインが自動的にデータベーステーブルをマイグレーションします
community_distributionテーブルにcycle_idカラムが追加されます- 古い配布履歴データは削除され、新しい構造でテーブルが再作成されます
-
配布アイテムの設定
/osusowaken setitem手に持っているアイテムを配布アイテムとして設定します。
-
配布サイクルの開始
/osusowaken start手動で最初の配布サイクルを開始するか、次の隔週土曜日15時まで待ちます。
- データ損失: 古い
community_distributionテーブルのデータは新しいスキーマと互換性がないため削除されます - LuckPerms必須: おすそわ券システムを使用するにはLuckPerms 5.4以降が必要です
- 初回起動時: プラグイン起動時にマイグレーション処理が実行されるため、初回起動は若干時間がかかる場合があります
エラー: no such column: cycle_id
解決策:
- サーバーを停止
community_distributionテーブルを削除DROP TABLE IF EXISTS community_distribution;
- サーバーを再起動(テーブルが自動的に再作成されます)
原因: 配布サイクルが開始されていない、またはコミュニティにメンバーがいない
解決策:
/osusowaken statusで配布サイクルの状態を確認/osusowaken startで手動でサイクルを開始- LuckPermsでコミュニティグループが正しく設定されているか確認
チェックリスト:
- 配布アイテムが設定されているか(
/osusowaken setitem) - 配布サイクルが有効か(
/osusowaken status) - プールに残量があるか(GUIで確認)
- インベントリに空きがあるか
- LuckPermsグループに所属しているか
Apache License 2.0