1. トイレしないと死んでしまうプラグイン

制作:天才ぺやんぐさん


  1. クエストについて

+ 一定期間に一度、クエストが発布されます。
+ 一分~三分程度の制限時間が設けられ、制限時間以内にトイレ\(排便\)を行う必要があります。
+ クエストに失敗すると死亡し、一定期間ないしは無期限の間スペクテイタになります。
+ クエストを完了すると一定期間**トイレに閉じ込められ**ます。

  1. トイレ\(構造物\)について

+ トイレはワールドの中にいくつか点在し、他プレイヤが使用中の場合は使用できません。
+ クエスト中以外はトイレに入れません。
+ トイレの外にはインジケータがあり、トイレの状態を見られます。

  1. トイレ\(排便\)について

+ 一度のクエストで、排便は一回~五回程度する必要があります。
+ 排便はシフトを連打して行う方式と、シフトを押し続けて行う方法があります。
+ 上記を行うとパワーがたまります。
+ パワーを一定まで貯め、一定時間**維持**する必要があります。
+ パワーが限界値\(100\)を超過すると爆発する可能性があります。


  1. ToiletPlugin - 管理者向け
  1. トイレ設置の方法/目安\(ワールド準備手順\)
  1. トイレの設置方法

+ `/toilet tool <トイレ名>` コマンドを使用して、トイレ生成のためのツールを入手します。
+ そのツールを、置きたいトイレの扉の方向に向けて設置し、右クリックします。
注意:設置場所周辺に 鉄のドア/大釜 がある場合、生成がバグる可能性があります。必ず、それらから5ブロック以上離れた場所で行ってください。

  1. トイレの除去方法

+ 除去したいトイレの 鉄のドア/大釜 手動で破壊します。
+ チャットにトイレに関する情報が表示されます。
+ そのメッセージの削除ボタンをクリックします。
+ トイレのインジケータなどのエンティティが除去されます。
+ あとは適当に手動で除去します。

  1. トイレの設置目安

+ トイレの間は200ブロック程度離すことが望ましい。
+ トイレの数はプレイヤ数の1/3程度が望ましい。

  1. トイレのモデルの作成方法

+ `/toilet tool toiletplugin:toilet_build_guideline_1.5x` コマンドを実行し、アイテムを入手します。
+ 入手したアイテムを設置し、右クリックします。
+ 看板の指示の通りに建築をします。
+ 岩盤の指示のとおりにストラクチャーブロックを設置し、保存します。
+ `/toilet reloadmodel` コマンドを実行します。
+ 保存したトイレは、 `/toilet tool <ストラクチャ名>` コマンドを使用し生成します。

  1. 設定一覧

+ 範囲指定について:
範囲指定のある設定は、`最小~最大`, `最小~`, `~最大` の書式で設定する必要があり、この一覧でも同じように記載されます。
また、範囲指定がある場合は、その範囲の中からランダムで選択されます。

  1. クエスト
  1. クエスト => 時間

+ `questTime`:クエストの制限時間
+ 型:整数
+ 範囲:(1~)~(2~)
+ デフォルト:30~180
+ `scheduleTime`:クエストを実行するまでの時間\(スケジュール\)
+ 型:整数
+ 範囲:(1~)~(1~)
+ デフォルト:30~180

  1. クエスト => スケジューラ

+ `autoScheduleOnJoin`:プレイヤがゲームを参加したときにクエストを自動スケジュール
+ 型:真偽
+ デフォルト:false
+ `autoRescheduleOnRespawn`:プレイヤがリスポーンしたときにクエストを自動スケジュール
+ 型:真偽
+ デフォルト:true
+ `autoRescheduleOnSuccess`:プレイヤがクエストを完了したときにクエストを自動スケジュール
+ 型:真偽
+ デフォルト:true

  1. クエスト => クエスト中

+ `poopAmount`:1度のクエストで行う必要のある便の数
+ 型:整数
+ 範囲:(1~5)~(2~6)
+ デフォルト:1~3
+ `placeLavaOnFail`:プレイヤがクエストを失敗したとき、その位置に溶岩を設置します。
+ 型:真偽
+ デフォルト:false
+ `spreadPoopOnFail`:プレイヤがクエストを失敗したとき、周囲に便をばらまきます。
+ 型:真偽
+ デフォルト:true
+ `spreadPoopAmount`:ばらまく便の数です。
+ 型:整数
+ デフォルト:6
+ `spreadPoopDistanceMax`:ばらまく便の最大の強さです。\(Velocity\)
+ 型:倍精度浮動小数点数
+ デフォルト:0.6

  1. プレイヤ
  1. プレイヤ => ロジック

+ `playerCooldownEnable`:プレイヤのトイレ後のクールダウン有効化
+ 型:真偽
+ デフォルト:true
+ `playerCooldownTime`:プレイヤのトイレ後のクールダウンの時間
+ 型:整数
+ 範囲:(1~)~(1~)
+ デフォルト:30~31
+ `respawnEnable`:リスポーンの有効化
+ 型:真偽
+ デフォルト:true
+ `respawnTime`:リスポーンまでの時間
+ 型:整数
+ 範囲:(1~)~(1~)
+ デフォルト:5~30
+ `broadcastOnQuestStart`:クエスト開始時にその内容をブロードキャストします。
+ 型:真偽
+ デフォルト:true

  1. プレイヤ => 効果

+ `questingOppressiveSoundEnable`:クエスト中の緊迫感のある音の再生
+ 型:真偽
+ デフォルト:true
+ `glowingOnQuesting`:クエスト中のプレイヤの発光
+ 型:真偽
+ デフォルト:true
+ `glowingOnQuestingColorEnable`:クエスト中のプレイヤの発光を紅色にします。
+ 型:真偽
+ デフォルト:true
+ メモ:Bukkitのチーム機能を使用する場合、正常に動作しない可能性があります。
+ `explictExpressionEnable`:露骨な表現の有効化
+ 型:真偽
+ デフォルト:true
+ メモ:コンプラ的にまずい場合は`false`にセットしてください。

  1. プレイヤ => アシスト

+ `giveToiletMap`:クエスト開始時に地図を与えます。
+ 型:真偽
+ デフォルト:true

  1. トイレ
  1. トイレ => ロジック

+ `toiletCooldownEnable`:プレイヤの排便後の**トイレ**のクールダウン
+ 型:真偽
+ デフォルト:true
+ `toiletCooldownTime`:トイレのクールダウンの時間
+ 型:整数
+ 範囲:(1~)~(1~)
+ デフォルト:30~31

  1. トイレ => ロジック => 排便

+ `defecationType`:排便の方法
+ 型:列挙
+ 使用可能:SHIFT_HOLD, SHIFT_MASH
+ デフォルト:SHIFT_HOLD
+ メモ:SHIFT_HOLD は、シフトを押し続けます。 SHIFT_MASHはシフトを連打します。
+ `strictDefacation`:排便時に大釜の中に必要があるか
+ 型:真偽
+ デフォルト:false

  1. トイレ => ロジック => 排便 => パワー

+ `powerKeepCountSeconds`:排便時にパワーを維持する必要がある時間
+ 型:整数
+ 有効:0~10
+ デフォルト:5
+ `powerGainAmount`:スニークで与えるパワー
+ 型:整数
+ 有効:1~10
+ デフォルト:10
+ メモ:SHIFT_HOLDの場合は1秒に与えるパワー、SHIFT_MASHの場合は1回で与えるパワーです。
+ `powerLossOnSecAmount`:1秒で剥奪するパワー
+ 型:整数
+ 有効:1~99
+ デフォルト:20
+ `defecationNeedPower`:排便時に必要なパワー
+ 型:整数
+ 有効:1~100
+ デフォルト:80
+ `powerLossOnUnnecessaryActionAmount`:余計な動きをしたときに剥奪するパワー
+ 型:整数
+ 有効:0~
+ デフォルト:10

  1. トイレ => ロジック => その他

+ `enablePowerBurst`:パワーが最大に達したときの爆発
+ 型:真偽
+ デフォルト:true
+ `stopTimerOnToilet`:トイレに入った瞬間にタイマーをとめます。
+ 型:真偽
+ デフォルト:false

  1. バランス調整
  1. バランス調整の方法
  1. トイレ中にクエスト制限時間が来て、死んでしまう

以下の方法をそれぞれお試しください。

+ `stopTimerOnJoinToilet`を有効にする。
+ `poopAmount`を低い値にする。
+ `questTime`を延ばす。
+ `powerGainAmount`を増やす。
+ `defecationNeedPower`を減らす。
+ `powerKeepCountSeconds`を減らす。

  1. 頻繁にクエストが来てしまい、サバイバルが行えない

+ scheduleTime を延ばす。

  1. クエストが簡単すぎる

+ `poopAmount`を高い値にする。
+ `questTime`を減らす
+ `defecationNeedPower`を増やす。
+ `giveToiletMap`を無効にする。
+ `strictDefecation`を有効にする。
+ `powerLossOnUnnecessaryActionAmount`を増やす。

  1. コマンド

すべてのコマンドは`/toilet`ないしは`/poop`のサブコマンドです。

+ `config [<設定名:string> [値:any]]`
+ 設定を変更します。
第二引数を省略した場合、現在の値が表示されます。
+ 第一引数を省略した場合、設定の一覧と型が表示されます。
+ `help [コマンド名:string]`
+ コマンドのリストを表示します。
+ 第一引数を指定した場合、そのコマンドのサブコマンド一覧が表示されます。
+ `quest [<サブコマンド名:string> [引数:any...]]`
+ クエストに関する操作を実行します。
+ 第一引数を省略した場合、サブコマンド一覧が表示されます。
+ サブコマンド:
+ `cancel <プレイヤ名|セレクタ:string>`
+ プレイヤのクエストをキャンセルします。
+ そのプレイヤのクエストが進行中でないとキャンセルできません。
+ `schedule <プレイヤ名|セレクタ:string> [時間:秒:int]`
+ プレイヤのクエストをスケジュールします。
+ 第二引数を省略した場合、設定からランダムな時間が設定されます。
+ `start <プレイヤ名|セレクタ:string> [時間:秒:int]`
+ プレイヤのクエストを強制開始します。
+ すでにそのプレイヤのクエストが開始している場合は使用できません。
+ 第二引数を省略した場合、設定からランダムな時間が設定されます。
+ `status <プレイヤ名|セレクタ:string>`
+ プレイヤのステータスを表示します。
+ `unschedule <プレイヤ名|セレクタ:string>`
+ プレイヤのクエストのスケジュールを削除します。
+ `reloadmodel`
+ トイレのモデルを再読込します。
+ ストラクチャを新たに保存したり、`plugin/ToiletPlugin/assets`を変更した場合は実行してください。
+ `tool <アッセト名|ストラクチャ名>`
+ トイレを生成するためのツールを与えます。

  1. コマンド(本番環境での使用は非推奨)
    + debug [<サブコマンド名:string> [引数:any...]]`
    + デバッグ用のコマンドです。
    + 第一引数を省略した場合、サブコマンド一覧が表示されます。
    + サブコマンド:
    + `changeToiletCooldown <toiletName:toilet> <maxSeconds:秒:int> [remainingTime:秒:int] [state:State]`
    + トイレのクールダウンを変更します。
    + `chamgeToiletState <toiletName:toilet> <state:State>`
    + トイレの状態を変更します。
    + `createHD [entity:UUID] [text:string]`
    + プレイヤまたはエンティティの上にホログラムを作成します。
    + このコマンドはコードを変更しながら使用することを目的にしており、本番環境では絶対に使用しないでください。
    + `killPassengers`
    + 実行者にマウントしているエンティティをすべて殺します。
    + `playSound <sound:GameSound> <area:SoundArea> [volume:float] [pitch:float]`
    + 列挙型 GameSound に定義されている音を再生します。
    + VolumeまたはPitchを省略した場合、GameSound の定義通りに再生されます。
    + `purgeToiletLocalData <toiletName:toilet>`
    + トイレのすべてのデータを削除します。
  1. API
    + `PlayerRespawnEvent`
    + プレイヤがリスポーンしたときに呼び出されます。
    + `PlayerToiletJoinEvent`
    + プレイヤがトイレに入ったときに呼び出されます。
    + `PlayerToiletQuitEvent`
    + プレイヤがトイレからでたときに呼び出されます。