サーバー内フォルダ (plugins/ScoreRanking/resourcepacks) の zip を自前HTTPで配る専用版。

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

クラス説明

サーバー内フォルダ (plugins/ScoreRanking/resourcepacks) の zip を自前HTTPで配る専用版。
URL/SHA1 の手動設定は廃止。最新の *.zip を自動選択して配布します。

責務と見どころ

重点クラスの詳細解説

サーバー内フォルダ (plugins/ScoreRanking/resourcepacks) の zip を自前HTTPで配る専用版。resourcepack パッケージの中でも 461 行規模の中核クラスで、運用中の主ループ・Web 導線・スケジューラが一か所に集まっています。中規模クラス群の中では変更影響が広く、章立てで読む価値が高いため重点解説へ追加しています。

最初に追う読む順番

  1. ResourcePackManager
    依存オブジェクトと初期状態を束ね、このクラスが担当するランタイムの前提を固めます。
  2. ensurePackAndServe
    不足テーブル・設定・内部状態を先に揃える入口です。変更を入れる前提条件の確認地点になります。
  3. startHttpIfNeeded
    定期処理や公開 API の起動地点で、外部から見える挙動がここから立ち上がります。
  4. buildComponentFor
    表示用または出力用のデータを組み立てます。
  5. onJoin
    運用中の中心ループです。イベント受理から状態更新までの主経路を追えます。
  6. onPackStatus
    運用中の中心ループです。イベント受理から状態更新までの主経路を追えます。
  7. onCommand
    運用中の中心ループです。イベント受理から状態更新までの主経路を追えます。
  8. onTabComplete
    運用中の中心ループです。イベント受理から状態更新までの主経路を追えます。
  9. shutdown
    後片付けと停止の出口です。残骸や再ログイン後の不整合はここを確認します。

内部サブシステムの地図

代表フロー詳解

通常運用の中心フロー

  1. onJoin
  2. onPackStatus
  3. onCommand
  4. onTabComplete

イベント受理、判定、状態更新、通知までの主経路です。体感不具合や想定外の分岐はこの流れのどこで止まるかを見ると切り分けやすいです。

反映・保存・終了の流れ

  1. shutdown

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

変更時の注意点

フィールド

VisibilityTypeName役割
privatePluginpluginプラグイン本体参照です。
privatebooleanenabledenabled の状態を保持します。
privatebooleanrequiredrequired の状態を保持します。
privatebooleanautoOnJoinautoOnJoin の状態を保持します。
privateStringpromptprompt の状態を保持します。
privateintretrySecondsOnFailretrySecondsOnFail の状態を保持します。
privateStringdeliveryModedeliveryMode の状態を保持します。
privateUUIDpackIdpackId の状態を保持します。
privatejava.io.FilepacksDirpacksDir の状態を保持します。
privatecom.sun.net.httpserver.HttpServerhttphttp の状態を保持します。
privatejava.util.concurrent.ExecutorServicehttpExechttpExec の状態を保持します。
privateStringlocalBindlocalBind の状態を保持します。
privateintlocalPortlocalPort の状態を保持します。
privateStringpublicHostpublicHost の状態を保持します。
privateStringhttpPathhttpPath の状態を保持します。
privateStringcurrentUrlcurrentUrl の状態を保持します。
privatebyte[]currentSha1currentSha1 の状態を保持します。
privatejava.io.FilecurrentZipcurrentZip の状態を保持します。
privateMap<UUID, Long>lastSendlastSend の状態を保持します。

コンストラクタ / 初期化

Signature説明主要呼び出し
public ResourcePackManager(Plugin plugin)依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。reload

メソッド索引

NameVisibilityKind説明
ResourcePackManagerpublicコンストラクタ依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
registerpublicメソッド初期化と各種登録を行い、機能を有効化します。
unregisterpublicメソッドunregister の主要処理を担当します。
reloadpublicメソッドreload の主要処理を担当します。
ensurePackAndServeprivateメソッド必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。
toHexprivateメソッドtoHex の主要処理を担当します。
startHttpIfNeededprivateメソッド初期化と各種登録を行い、機能を有効化します。
shutdownpublicメソッドプラグイン停止時に呼ぶ(ポート占有・スレッド残りを防ぐ)
onJoinpublicイベント処理イベント発生時の分岐と後続処理を担当します。
onPackStatuspublicイベント処理イベント発生時の分岐と後続処理を担当します。
sendTopublicメソッド手動・自動問わず送信実体(最新 zip が無ければ案内)。
getEventPackIdprivateメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
trySendAsStackprivateメソッドtrySendAsStack の主要処理を担当します。
buildComponentForprivateメソッド表示用または出力用のデータを組み立てます。
onCommandpublicメソッドonCommand の主要処理を担当します。
onTabCompletepublicメソッドonTabComplete の主要処理を担当します。

メソッド詳細

ResourcePackManager

コンストラクタpublic
public ResourcePackManager(Plugin plugin)

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

引数

throws

なし

主要な呼び出し順

reload

register

メソッドpublic
public void register()

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

引数

throws

なし

主要な呼び出し順

getPluginManagerregisterEventsgetServergetPluginCommandsetExecutorsetTabCompletergetLoggerwarning

unregister

メソッドpublic
public void unregister()

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

引数

throws

なし

主要な呼び出し順

目立つ内部呼び出しは抽出されませんでした。

reload

メソッドpublic
public void reload()

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

引数

throws

なし

主要な呼び出し順

reloadConfiggetConfiggetConfigurationSectionsaveConfiggetBooleangetStringmaxgetInt

ensurePackAndServe

メソッドprivate
private void ensurePackAndServe()

必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。

引数

throws

なし

主要な呼び出し順

getDataFolderexistsmkdirslistFilestoLowerCaseendsWithgetLoggerwarning

toHex

メソッドprivatestatic
private static String toHex(byte[] b)

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

引数

throws

なし

主要な呼び出し順

appendformattoString

startHttpIfNeeded

メソッドprivate
private void startHttpIfNeeded(java.io.File pack)

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

引数

throws

なし

主要な呼び出し順

createnewCachedThreadPoolsetDaemonsetExecutorstartgetLoggerinforemoveContext

shutdown

メソッドpublic
public void shutdown()

プラグイン停止時に呼ぶ(ポート占有・スレッド残りを防ぐ)

引数

throws

なし

主要な呼び出し順

stopshutdownNow

onJoin

イベント処理public
public void onJoin(PlayerJoinEvent e)

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

引数

throws

なし

主要な呼び出し順

getSchedulerrunTaskLatersendTogetPlayer

onPackStatus

イベント処理public
public void onPackStatus(PlayerResourcePackStatusEvent e)

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

引数

throws

なし

主要な呼び出し順

getEventPackIdequalsgetPlayergetStatussendMessagekickPlayergetSchedulerrunTaskLater

sendTo

メソッドpublic
public void sendTo(Player p, boolean force)

手動・自動問わず送信実体(最新 zip が無ければ案内)。

引数

throws

なし

主要な呼び出し順

sendMessagecurrentTimeMillisgetOrDefaultgetUniqueIdequalsIgnoreCasenameUUIDFromBytesgetNamegetBytes

getEventPackId

メソッドprivate
private UUID getEventPackId(PlayerResourcePackStatusEvent e)

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

引数

throws

なし

主要な呼び出し順

getClassgetMethodinvoke

trySendAsStack

メソッドprivate
private boolean trySendAsStack(Player p)

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

引数

throws

なし

主要な呼び出し順

getMethodinvokegetMethodsgetNameequalsgetParameterTypesbuildComponentForisPrimitive

buildComponentFor

メソッドprivate
private Object buildComponentFor(Class<?> type, String text)

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

引数

throws

なし

主要な呼び出し順

equalsgetNamegetMethodinvoke

onCommand

メソッドpublic
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)

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

引数

throws

なし

主要な呼び出し順

sendMessagesendToequalsIgnoreCasehasPermissionreloadequalsgetOnlinePlayersgetPlayerExact

onTabComplete

メソッドpublic
public List<String> onTabComplete(CommandSender sender, Command cmd, String alias, String[] args)

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

引数

throws

なし

主要な呼び出し順

asListequalsIgnoreCasegetOnlinePlayersgetNameemptyList

代表的な処理フロー

  1. onPackStatus フロー
    onPackStatus → getEventPackId → equals → getPlayer → getStatus → sendMessage
    イベント発生時の分岐と後続処理を担当します。
  2. 初期化フロー
    ResourcePackManager → reload
    依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
  3. onJoin フロー
    onJoin → getScheduler → runTaskLater → sendTo → getPlayer
    イベント発生時の分岐と後続処理を担当します。
  4. onCommand フロー
    onCommand → sendMessage → sendTo → equalsIgnoreCase → hasPermission → reload
    onCommand の主要処理を担当します。
  5. onTabComplete フロー
    onTabComplete → asList → equalsIgnoreCase → getOnlinePlayers → getName → emptyList
    onTabComplete の主要処理を担当します。
  6. register フロー
    register → getPluginManager → registerEvents → getServer → getPluginCommand → setExecutor
    初期化と各種登録を行い、機能を有効化します。

外部との接点

Web ルート

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

SQL / テーブル

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

関連クラス

補足