式・相・術・具を組み合わせて戦う、Paper向けの異能力PvP。 間合いを取る、術を通す、返しの一撃を狙う。ビルドによって戦い方が変わります。
Java 25 / Paper 26.2 を使用します。
./gradlew.bat buildbuild/libs/Otogi-0.1.0-all.jar をサーバーの plugins に配置して起動してください。
通常の Otogi-0.1.0.jar にはメニュー用ライブラリを含みません。
Windowsで JAVA_HOME が不正と出る場合は、JDKの bin ではなくJDK本体を指定します。
$env:JAVA_HOME = 'C:/Users/newak/.jdks/temurin-25.0.4'
./gradlew.bat build- 運営が自作マップにスポーン・観戦地点・範囲を登録する。マップ設定手順
- 各プレイヤーがコンパスの右クリックか
/otogiでロビーを開き、ビルドを選んで試合に参加待機を押す。 - 運営がロビーでマップ・モードを選び、待機者で試合開始を押す。
- 具を持って左クリック、術を持って右クリック。長柄はしゃがみ+左クリックで突き、灯籠は右クリックで封殺。
同時に進行する試合は1つです。マップの地形・ワールドは運営が用意します。プラグインから生成や設置は行いません。
初回はマップ未登録で起動します。/otogi map create <id> から、既存のロード済みワールドを登録してください。
FFAは初期設定で10キル先取・10分。残機戦、拠点制圧も選べます。復帰直後は3秒間の加護があり、攻撃や術の使用で解除されます。
試合終了・退出・プラグイン停止時に、参加前の持ち物、体力、効果、経験値、ゲームモード、位置を戻します。
サイドバーにモードの目標・自分の成績・順位、ボスバーに時間や拠点状況を表示します。参加前のスコアボードも復元します。
| コマンド | 操作 |
|---|---|
/otogi / /otogi menu |
ロビー・戦績・参加待機・操作案内 |
/otogi build |
ビルド選択 |
/otogi build show |
選択内容を確認 |
/otogi build reset |
選択を解除 |
/otogi stats |
通算戦績 |
/otogi game join / leave |
参加待機・退出 |
/otogi game modes |
モードと勝利条件を確認 |
/otogi game start <mode> [map] |
待機者で開始(otogi.admin) |
/otogi game status |
試合状況 |
/otogi game stop |
試合終了(otogi.admin) |
/otogi reload |
設定・翻訳を再読込(otogi.admin) |
/otogi map help |
自作マップの設定案内 |
/otogi architect info <id> |
能力の実装方式・調整値を確認(otogi.admin) |
/otogi architect validate |
JSON・Luaを反映せずに検証(otogi.admin) |
初期設定は5枠。式は1つまでで、相・術・具は枠内で自由に選べます。 空のビルドにはランダムで能力を割り当てます。 相・術だけのビルドも選べるため、通常攻撃を使いたい場合は具を1つ選んでください。
| 分類 | 実装 |
|---|---|
| 式(常時効果) | 韋駄天、金剛、金城、生気、浮力、導線、研澄、共鳴 |
| 相(自動発動) | 不死、隠密、献上、首狩り、拾得、残影、応報、怨恨、反響、先見 |
| 術(右クリック) | 神隠し、浄化、過速、錨撃、惑乱、鏡界、断界、縁結び、帳 |
| 具(通常攻撃) | 刀、細剣、長柄、書、輪刃、灯籠、護符 |
追加の19種は、先に draft に仕様を書いたJSON/Lua版です。合計53種。 狐火・輪灯、天狗の羽団扇、鶴の恩返し、鬼の縫い針、鬼の血脈、天女の羽衣、八咫鏡・返照を同梱しています。 さらに鳴神・白息・鬼宴の術、蛇骨・白兎の具、玉手箱・件の相、一寸法師・修羅の式を選べます。 八尺様・呼び声は予告領域からの術封印、口裂け・二口は命中後の精密な追撃、送り犬・護り牙は連続被弾からの切り返しを担います。 重い判定と描画はJava、短い条件や組み合わせはLuaが担当します。
plugins/Otogi に生成されるファイルを編集して /otogi reload を実行します。
config.yml: ビルド枠数、FFAの時間・勝利条件、能力の威力・射程・持続時間。abilities.<id>.nameとdescriptionで表示も変更できます。combat.yml: 具の威力・判定・攻撃間隔、SFX/VFXの有無・音量。時間はtickです(20tick = 1秒)。lang/ja_jp.json: 翻訳。既存ファイルは起動時に上書きしません。builds.yml: UUIDごとの選択内容。保存時は一時ファイルを経由して置換します。maps/<id>.json: 自作マップのワールド・範囲・スポーン等。地形は変更しません。modes.json: 残機戦と拠点制圧の数値・制限時間。architects/*.json/architects/scripts/*.lua: 追加能力の表示・数値・振る舞い。player-stats.json: 通算戦績。正常終了の試合を一度だけ集計し、途中退出者も含めます。運営による中止は集計しません。
config.yml の能力設定の時間は秒、combat.yml の具設定の時間はtickです。変更した説明とアイテムは、次の試合の配布から反映します。
追加JSONの時間はtickです。試合中の再読み込みは拒否します。YAML・翻訳・能力・モード・マップを全て検証してから反映し、不正な定義があれば動作中の設定を維持します。
削除された能力や変更されたビルド制約は、再読み込み後の選択内容にも反映します。
api/architect が能力の共通インターフェース、core/architect が個別実装です。
能力のインスタンスは共有します。プレイヤー固有の値は ArenaPlayer に置いてください。
命中判定は Targets、ダメージは Combat、演出は CombatEffects / AbilitySupport を通します。
通常・術・範囲・反射を区別し、追加効果の連鎖や、防いだ攻撃からの誤発動を抑えています。
詳細は 実装メモ、JSON・Lua編集、ロビー、当たり判定、ゲーム概要 を参照。
./gradlew.bat test