Skip to Content
MoripaFishing

Chum

撒き餌や餌のアイテムを作り、使ったときに魚が釣れる確率を変える公式 Addon です。 撒き餌の種類と効果はconfig.ymlで定義するため、コードを書かずに「周囲でレアな魚が釣れやすくなる撒き餌」や「付けたときだけ釣れる魚がいる餌」を用意できます。

この Addon は Core の公開 API(moripafishing-api)だけを利用します。魚を抽選する直前に発火するAnglerFishDrawEventで、抽選の候補(FishDrawPool)の重みを変更しています。 仕組みの詳細は抽選確率の変更を参照してください。

導入

  1. サーバーのplugins/にリリースのMoripaFishing-Addon-Chum_<version>.jarを配置します(ファイル名はプラグイン名とバージョンからなります)。mpm を使う場合は/mpm add MoripaFishing-Addon-Chumで導入できます。
  2. サーバーを起動します。paper-plugin.ymlでMoripaFishingを必須の依存として宣言しているため、Core より後に読み込まれます。Core が導入されていない場合、この Addon は読み込まれません。
  3. 初回起動時に、設定例を含むplugins/MoripaFishing-Addon-Chum/config.ymlが生成されます。魚やレアリティの ID をサーバーに登録しているものに書き換えてから使ってください。

使い方

  1. 管理者が/chum give <player> <chum> [amount]で撒き餌アイテムを渡します。
  2. プレイヤーが撒き餌アイテムをメインハンドに持って右クリックすると、アイテムを 1 個消費して効果が有効になります。空中とブロックのどちらを右クリックしても使えます。
  3. 効果が有効な間に魚が掛かると、その抽選の確率が変わります。

撒き餌アイテムは、アイテムに保存された撒き餌の ID(PDC)で判別します。表示名や見た目を変えても、同じ ID のアイテムは同じ撒き餌として扱います。 撒き餌アイテムを右クリックしたときは、ブロックの設置や食べるといったバニラの動作は行いません。オフハンドに持った撒き餌アイテムは使えません。 右クリックを押し続けたときに続けて消費しないよう、同じプレイヤーが同じ撒き餌を使った後の 1 秒間は、その撒き餌を使えません。

次の場合はアイテムを消費せず、メッセージで理由を伝えます。

  • 範囲(AREA)やワールド(WORLD)の撒き餌を、釣りワールドの外で使った場合
  • 撒き餌の ID がconfig.ymlから削除されている場合
  • プレイヤーがmoripafishing.addon.chum.useの権限を持っていない場合

config.yml

生成されるconfig.ymlには、レアリティを釣れやすくする撒き餌と、餌限定の魚を釣れるようにする餌の 2 つの例が入っています。

plugins/MoripaFishing-Addon-Chum/config.yml
maxMultiplier: 100.0

chums:
  # 周囲で rare レアリティが釣れやすくなる撒き餌
  rare_chum:
    item:
      material: PUFFERFISH
      name: "<aqua>レアな撒き餌"
      lore:
        - "<gray>右クリックで撒くと、周囲 16 ブロックで"
        - "<gray>5 分間 rare の魚が釣れやすくなります"
    scope: AREA
    radius: 16.0
    durationSeconds: 300
    rarityMultipliers:
      rare: 2.0

  # 使った本人の次の 3 回の釣果まで、餌限定の魚 golden_carp が釣れるようになる餌
  golden_bait:
    item:
      material: GOLDEN_CARROT
      name: "<gold>黄金の練り餌"
      lore:
        - "<gray>右クリックで付けると、次の 3 回の釣果まで"
        - "<gray>黄金の鯉が釣れるようになります"
    scope: ANGLER
    charges: 3
    durationSeconds: 600
    fishWeights:
      golden_carp: 5.0

golden_carpのような餌限定の魚は、魚の定義でweightを 0 にしておきます。重み 0 の魚は通常の抽選では釣れませんが、fishWeightsで重みを与えると釣れるようになります。 詳しくは魚の定義と餌限定の魚を参照してください。

トップレベル

フィールド型説明
maxMultipliernumber有効な全ての撒き餌の倍率を掛け合わせた後の、レアリティごと・魚ごとの倍率の上限です。有限かつ 1 以上でなければなりません(デフォルト: 100.0)
chumsmap撒き餌の ID と定義の組です。ID には英小文字・数字・_・-だけを使えます(デフォルト: 空)

撒き餌の定義

フィールド型説明
item.materialstringアイテムの Material 名(例: PUFFERFISH)。アイテムとして使える Material を指定します
item.namestringアイテムの表示名(MiniMessage 形式)
item.lorestring[]アイテムの説明文(MiniMessage 形式、1 要素が 1 行)。省略できます
item.customModelDatanumber[]カスタムモデルデータの float 値。省略できます
scopestring効果の範囲。ANGLER・AREA・WORLDのいずれかです(後述)
durationSecondsinteger効果の持続時間(秒)。1 以上を指定します
chargesintegerscopeがANGLERのときだけ指定できる、効果が続く釣果の回数です。1 以上を指定します。省略すると時間だけで効果が切れます
radiusnumberscopeがAREAのときに必須の、使用した位置からの水平距離(ブロック)です。0 より大きい値を指定します
rarityMultipliersmapレアリティ ID と、そのレアリティの重みに掛ける倍率の組です
fishMultipliersmap魚 ID と、その魚が釣れる全体の確率に掛ける倍率の組です
fishWeightsmap魚 ID と、その魚に設定する重みの組です。重み 0 の餌限定の魚を釣れるようにするために使います

倍率と重みは有限かつ 0 以上でなければなりません。倍率に 0 を指定すると、そのレアリティや魚は釣れなくなります。

config.ymlは Addon の有効化時と/chum reloadの実行時に読み込みます。YAML として不正な内容、未知のキー、不正な値がある場合は読み込みに失敗します。 有効化時に失敗した場合は Addon の有効化そのものが失敗し、/chum reloadで失敗した場合は以前の設定のまま動作します。

魚とレアリティの ID が登録済みかどうかは、読み込み時には確かめません。Core の設定の再読み込みで登録が変わるためです。 未登録の ID は、効果を適用するときにサーバーのログへ ID ごとに 1 度だけ警告し、無視します。登録済みでも天候やワールドの条件を満たさずに候補にならない魚は、警告せずに無視します。

効果の範囲

scope対象使える場所
ANGLER撒き餌を使ったつりびと本人の釣り。どこで釣っても効果がありますどこでも
AREA使った位置から水平距離radiusブロック以内に釣り針がある釣り。高さは問いません。使った釣りワールドの中だけが対象です釣りワールドの中
WORLD使った釣りワールドでの全てのつりびとの釣り釣りワールドの中

AREAとWORLDの効果は、撒き餌を使ったつりびと以外にも及びます。

重ね掛けと更新

  • 同じ撒き餌を同じ対象にもう一度使うと、効果は重ならず、期限を今からdurationSeconds後に延ばし、chargesを設定値に戻します。
  • AREAの撒き餌は、同じ撒き餌の有効な範囲の中で使うと、その範囲の効果を更新します。範囲の中心は最初に使った位置のままです。範囲の外で使った場合は新しい範囲になります。
  • 同じ撒き餌の範囲が重なっている場所でも、同じ撒き餌の効果は 1 回分だけ掛かります。
  • 異なる撒き餌の効果は掛け合わせます。たとえばrareを 2 倍にする撒き餌と 3 倍にする撒き餌が両方有効なら、rareの重みは 6 倍になります。

複数の撒き餌が有効な場合、効果は次の順に適用します。

  1. fishWeights: 魚の重みを設定します。複数の撒き餌が同じ魚に指定している場合は、最も大きい値を使います
  2. rarityMultipliers: レアリティの重みに、全ての撒き餌の倍率の積を掛けます
  3. fishMultipliers: 魚が釣れる全体の確率に、全ての撒き餌の倍率の積を掛けます

倍率の積は、レアリティごと・魚ごとにmaxMultiplierで頭打ちになります。 fishMultipliersはFishDrawPool#multiplyFishProbabilityで適用するため、同じレアリティ内の割合ではなく、魚が釣れる全体の確率が倍率どおりに変わります。 ただし、確率が 0 の魚(重み 0 の魚など)には倍率が効きません。餌限定の魚にはfishWeightsで重みを与えてください。fishWeightsを先に適用するため、同じ撒き餌で重みを与えてから倍率を掛けることもできます。 複数の魚にfishMultipliersを指定した場合は、候補の魚の並び順に適用し、それぞれ適用した時点の確率に倍率を掛けます。確率が 1 を超える場合は 1 に丸めます。 確率が 1 に達した魚があると、他の魚の重みはすべて 0 になるため、それより後に適用する魚の倍率は効きません。この場合はサーバーのログに魚ごとに 1 度だけ警告を出します。

魚の条件(天候・ワールド)とenabledは撒き餌より優先されます。撒き餌は候補になった魚の重みを変えるだけで、条件を満たさない魚を釣れるようにはできません。

回数(charges)

chargesを指定したANGLERの撒き餌は、魚を釣り上げるたびに残り回数が 1 減り、0 になると効果が切れます。効果が切れたときは、つりびとにメッセージを送ります。 残り回数は、その抽選に効果が掛かり、釣果が確定した(AnglerFishCaughtResultEventが発火した)ときだけ減ります。釣果が他のプラグインにキャンセルされた場合や、抽選対象が無くバニラのドロップのままだった場合は減りません。 残り回数が残っていても、durationSecondsを過ぎると効果は切れます。

効果の保存

有効な撒き餌の効果はメモリ上にだけ保持します。サーバーを再起動したり、プラグインを再読み込みしたりすると、全ての効果が失われます。 効果の期限は抽選やアイテムの使用のたびに確かめ、期限を過ぎた効果をその時点で取り除きます。

/chum reloadでは有効な効果は失われません。効果は撒き餌の ID だけを覚えているため、再読み込み後は新しい定義の倍率や重みで適用します。 config.ymlから削除した撒き餌の効果は適用されなくなります。

コマンドと権限

コマンド権限既定説明
(右クリックでの使用)moripafishing.addon.chum.use全員撒き餌アイテムを使います
/chum give <player> <chum> [amount]moripafishing.addon.chum.giveOP撒き餌アイテムを渡します。amountの既定は 1 です。最大スタック数ごとに分けて渡し、インベントリに入りきらない分は足元に落とします
/chum oddsmoripafishing.addon.chum.oddsOP自分の現在の確率を表示します
/chum odds <player>moripafishing.addon.chum.odds.othersOP指定したプレイヤーの現在の確率を表示します。moripafishing.addon.chum.oddsも必要です
/chum reloadmoripafishing.addon.chum.reloadOPconfig.ymlを読み直します

/chum oddsは、プレイヤーがいる釣りワールドの抽選の候補を作り、そのプレイヤーに掛かる撒き餌の効果を抽選と同じ方法で適用してから、魚ごとの確率(FishDrawPool#getProbability)を確率の高い順に表示します。確率が 0 の候補(餌を使っていないときの餌限定の魚など)も表示します。 釣り針の位置の代わりにプレイヤーの位置でAREAの範囲を判定します。また、有効な撒き餌と残り時間・残り回数も表示します。表示しても残り回数は減りません。 確率は現在の天候で計算するため、天候が変わると変わります。

On this page