Traveling Merchant Manager に関する管理・集約処理を担当します。

21Fields
1Constructors
23Methods
464Lines
Package
com.example.rankingplugin.merchant
Source
merchant/TravelingMerchantManager.java
Kind
class
Roles
イベント駆動非同期 / スケジューラ初期化 / ブートストラップ集約 / 制御
このクラスにも章立て解説を追加しています。 自動抽出の一覧だけでなく、下の『重点クラスの詳細解説』で読む順番・内部サブシステム・変更時の注意点まで追えます。 全クラス章立てガイドを見る

クラス説明

クラス直前の Javadoc は見つかりませんでした。ソースとメソッド構成から責務を補完しています。

責務と見どころ

重点クラスの詳細解説

Traveling Merchant Manager に関する管理・集約処理を担当します。merchant パッケージの中でも 464 行規模の中核クラスで、運用中の主ループ・スケジューラが一か所に集まっています。中規模クラス群の中では変更影響が広く、章立てで読む価値が高いため重点解説へ追加しています。

最初に追う読む順番

  1. TravelingMerchantManager
    依存オブジェクトと初期状態を束ね、このクラスが担当するランタイムの前提を固めます。
  2. startMerchantWatchdog
    定期処理や公開 API の起動地点で、外部から見える挙動がここから立ち上がります。
  3. buildRecipes
    表示用または出力用のデータを組み立てます。
  4. buildCostItem
    表示用または出力用のデータを組み立てます。
  5. syncDisplayedCost
    syncDisplayedCost の主要処理を担当します。
  6. onInventoryOpen
    運用中の中心ループです。イベント受理から状態更新までの主経路を追えます。
  7. onMerchantInventoryClick
    運用中の中心ループです。イベント受理から状態更新までの主経路を追えます。
  8. onMerchantInventoryDrag
    運用中の中心ループです。イベント受理から状態更新までの主経路を追えます。
  9. onMerchantClose
    運用中の中心ループです。イベント受理から状態更新までの主経路を追えます。

内部サブシステムの地図

代表フロー詳解

反映・保存・終了の流れ

  1. cleanupAfterGone

結果を保持し、必要なら永続化し、最後に掃除まで行う出口です。画面更新だけ合って保存が壊れるケースや残骸が残るケースの確認に向きます。

変更時の注意点

フィールド

VisibilityTypeName役割
privateJavaPluginpluginプラグイン本体参照です。
privateCurrencyServicecurrencyService関連サービスへの参照です。
privateWanderingTradercurrentMerchantcurrentMerchant の状態を保持します。
privateBukkitRunnabledespawnTask非同期処理やスケジューラ制御に使うハンドルです。
privateList<MerchantRecipe>recipesrecipes の状態を保持します。
privateBukkitRunnablespawnCheckTask非同期処理やスケジューラ制御に使うハンドルです。
privateStringserverIdserverId の状態を保持します。
privatedoubleSPAWN_RATESPAWN_RATE の状態を保持します。
privatelongSPAWN_INTERVALSPAWN_INTERVAL の状態を保持します。
privateBukkitTaskmerchantWatchTask非同期処理やスケジューラ制御に使うハンドルです。
privatelongWATCH_INTERVAL_TICKSWATCH_INTERVAL_TICKS の状態を保持します。
privatelongLIFETIME_MINUTESLIFETIME_MINUTES の状態を保持します。
privateNamespacedKeyKEY_EXPIREKEY_EXPIRE の状態を保持します。
privateNamespacedKeyKEY_TYPEKEY_TYPE の状態を保持します。
privateNamespacedKeyKEY_RP_COINKEY_RP_COIN の状態を保持します。
privateNamespacedKeyKEY_RP_PRICEKEY_RP_PRICE の状態を保持します。
privateStringTAGTAG の状態を保持します。
privateStringforcedWorldNameforcedWorldName の状態を保持します。
privateint forcedChunkX,forcedChunkZforcedChunkZ の状態を保持します。
privatebooleanforcedChunkActiveforcedChunkActive の状態を保持します。
privateSet<Material>ORE_RESOURCESORE_RESOURCES の状態を保持します。

コンストラクタ / 初期化

Signature説明主要呼び出し
public TravelingMerchantManager(JavaPlugin plugin, CurrencyService currencyService)依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。getConfig → getString → trim → isEmpty → valueOf → getServer

メソッド索引

NameVisibilityKind説明
isOreBlockprivateメソッド条件判定を行い、後続処理の分岐に使える真偽値を返します。
isFoodprivateメソッド条件判定を行い、後続処理の分岐に使える真偽値を返します。
isAllowedForShopprivateメソッド条件判定を行い、後続処理の分岐に使える真偽値を返します。
priceForprivateメソッドpriceFor の主要処理を担当します。
TravelingMerchantManagerpublicコンストラクタ依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
startMerchantWatchdogprivateメソッド初期化と各種登録を行い、機能を有効化します。
findTaggedTraderprivateメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
trySpawnMerchantprivateメソッドtrySpawnMerchant の主要処理を担当します。
buildRecipesprivateメソッド表示用または出力用のデータを組み立てます。
isOurMerchantViewprivateメソッド条件判定を行い、後続処理の分岐に使える真偽値を返します。
buildCostItemprivateメソッド表示用または出力用のデータを組み立てます。
getPriceFromItemprivateメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
syncDisplayedCostprivateメソッドsyncDisplayedCost の主要処理を担当します。
clearDisplayedCostprivateメソッドclearDisplayedCost の主要処理を担当します。
onInventoryOpenpublicイベント処理イベント発生時の分岐と後続処理を担当します。
onMerchantInventoryClickpublicイベント処理イベント発生時の分岐と後続処理を担当します。
onMerchantInventoryDragpublicイベント処理イベント発生時の分岐と後続処理を担当します。
onMerchantClosepublicイベント処理イベント発生時の分岐と後続処理を担当します。
onEntityDeathpublicイベント処理イベント発生時の分岐と後続処理を担当します。
onPlayerQuitpublicイベント処理イベント発生時の分岐と後続処理を担当します。
onChunkLoadpublicイベント処理チャンクが読み込まれた際、期限切れのRP行商人がいたら即除去する
cleanupAfterGoneprivateメソッド全出口共通の後始末(チャンク強制解除・チケット解除・参照クリア・タスク停止)
releaseForcedChunkprivateメソッドreleaseForcedChunk の主要処理を担当します。

メソッド詳細

isOreBlock

メソッドprivatestatic
private static boolean isOreBlock(Material m)

条件判定を行い、後続処理の分岐に使える真偽値を返します。

引数

throws

なし

主要な呼び出し順

nameendsWithequals

isFood

メソッドprivatestatic
private static boolean isFood(Material m)

条件判定を行い、後続処理の分岐に使える真偽値を返します。

引数

throws

なし

主要な呼び出し順

isEdible

isAllowedForShop

メソッドprivatestatic
private static boolean isAllowedForShop(Material m)

条件判定を行い、後続処理の分岐に使える真偽値を返します。

引数

throws

なし

主要な呼び出し順

isItemisFoodisOreBlockcontains

priceFor

メソッドprivatestatic
private static int priceFor(Material m)

priceFor の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

nameisEdibleequalsstartsWithendsWithcontainsisOreBlock

TravelingMerchantManager

コンストラクタpublic
public TravelingMerchantManager(JavaPlugin plugin, CurrencyService currencyService)

依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。

引数

throws

なし

主要な呼び出し順

getConfiggetStringtrimisEmptyvalueOfgetServergetPortgetPluginManager

startMerchantWatchdog

メソッドprivate
private void startMerchantWatchdog()

初期化と各種登録を行い、機能を有効化します。

引数

throws

なし

主要な呼び出し順

runisDeadisValidfindTaggedTradergetPersistentDataContainercurrentTimeMillisgetSchedulerrunTask

findTaggedTrader

メソッドprivate
private WanderingTrader findTaggedTrader()

必要な状態を取得し、呼び出し側で利用しやすい形へ返します。

引数

throws

なし

主要な呼び出し順

getWorldsgetEntitiesByClassgetScoreboardTagscontains

trySpawnMerchant

メソッドprivate
private void trySpawnMerchant()

trySpawnMerchant の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

isDeadrandomgetLoggerinfogetOnlinePlayersisEmptynextIntsize

buildRecipes

メソッドprivate
private void buildRecipes()

表示用または出力用のデータを組み立てます。

引数

throws

なし

主要な呼び出し順

clearstreamvaluesfiltercollecttoListshufflelimit

isOurMerchantView

メソッドprivate
private boolean isOurMerchantView(InventoryView view)

条件判定を行い、後続処理の分岐に使える真偽値を返します。

引数

throws

なし

主要な呼び出し順

getTypegetTopInventorygetMerchantequals

buildCostItem

メソッドprivate
private ItemStack buildCostItem(int coinsRequired, int price)

表示用または出力用のデータを組み立てます。

引数

throws

なし

主要な呼び出し順

getItemMetasetDisplayNamelCoinsetLoregetPersistentDataContainersetItemMeta

getPriceFromItem

メソッドprivate
private long getPriceFromItem(ItemStack cost)

必要な状態を取得し、呼び出し側で利用しやすい形へ返します。

引数

throws

なし

主要な呼び出し順

hasItemMetagetItemMetagetPersistentDataContainer

syncDisplayedCost

メソッドprivate
private void syncDisplayedCost(MerchantInventory inv, Player opener)

syncDisplayedCost の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

getSelectedRecipeIndexsizegetIngredientsisEmptyclonegetBalancegetNamegetPriceFromItem

clearDisplayedCost

メソッドprivate
private void clearDisplayedCost(MerchantInventory inv)

clearDisplayedCost の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

setItem

onInventoryOpen

イベント処理public
public void onInventoryOpen(InventoryOpenEvent evt)

イベント発生時の分岐と後続処理を担当します。

引数

throws

なし

主要な呼び出し順

isOurMerchantViewgetViewgetTopInventorygetPlayergetBalancegetNamesendMessagesyncDisplayedCost

onMerchantInventoryClick

イベント処理public
public void onMerchantInventoryClick(InventoryClickEvent evt)

イベント発生時の分岐と後続処理を担当します。

引数

throws

なし

主要な呼び出し順

isOurMerchantViewgetViewgetTopInventorygetWhoClickedgetRawSlotgetSizesetCancelledgetScheduler

onMerchantInventoryDrag

イベント処理public
public void onMerchantInventoryDrag(InventoryDragEvent evt)

イベント発生時の分岐と後続処理を担当します。

引数

throws

なし

主要な呼び出し順

isOurMerchantViewgetViewgetTopInventorygetSizegetRawSlotssetCancelled

onMerchantClose

イベント処理public
public void onMerchantClose(org.bukkit.event.inventory.InventoryCloseEvent evt)

イベント発生時の分岐と後続処理を担当します。

引数

throws

なし

主要な呼び出し順

isOurMerchantViewgetViewgetTopInventoryclearDisplayedCost

onEntityDeath

イベント処理public
public void onEntityDeath(EntityDeathEvent e)

イベント発生時の分岐と後続処理を担当します。

引数

throws

なし

主要な呼び出し順

getEntitygetUniqueIdequalscleanupAfterGone

onPlayerQuit

イベント処理public
public void onPlayerQuit(PlayerQuitEvent evt)

イベント発生時の分岐と後続処理を担当します。

引数

throws

なし

主要な呼び出し順

getPlayergetOpenInventorygetTypecloseInventory

onChunkLoad

イベント処理public
public void onChunkLoad(ChunkLoadEvent e)

チャンクが読み込まれた際、期限切れのRP行商人がいたら即除去する

引数

throws

なし

主要な呼び出し順

getChunkgetEntitiesgetScoreboardTagscontainsgetPersistentDataContainerequalscurrentTimeMillisremove

cleanupAfterGone

メソッドprivate
private void cleanupAfterGone()

全出口共通の後始末(チャンク強制解除・チケット解除・参照クリア・タスク停止)

引数

throws

なし

主要な呼び出し順

getLocationgetChunkremovePluginChunkTicketreleaseForcedChunkcancel

releaseForcedChunk

メソッドprivate
private void releaseForcedChunk()

releaseForcedChunk の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

getWorldsetChunkForceLoaded

代表的な処理フロー

  1. 初期化フロー
    TravelingMerchantManager → getConfig → getString → trim → isEmpty → valueOf
    依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
  2. onChunkLoad フロー
    onChunkLoad → getChunk → getEntities → getScoreboardTags → contains → getPersistentDataContainer
    チャンクが読み込まれた際、期限切れのRP行商人がいたら即除去する
  3. onInventoryOpen フロー
    onInventoryOpen → isOurMerchantView → getView → getTopInventory → getPlayer → getBalance
    イベント発生時の分岐と後続処理を担当します。
  4. onMerchantInventoryClick フロー
    onMerchantInventoryClick → isOurMerchantView → getView → getTopInventory → getWhoClicked → getRawSlot
    イベント発生時の分岐と後続処理を担当します。
  5. onMerchantInventoryDrag フロー
    onMerchantInventoryDrag → isOurMerchantView → getView → getTopInventory → getSize → getRawSlots
    イベント発生時の分岐と後続処理を担当します。
  6. onEntityDeath フロー
    onEntityDeath → getEntity → getUniqueId → equals → cleanupAfterGone
    イベント発生時の分岐と後続処理を担当します。

外部との接点

Web ルート

このクラス内に目立つ Web ルート定義は見つかりませんでした。

SQL / テーブル

テーブル名の抽出はありませんでした。

関連クラス

補足