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

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

クラス説明

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

責務と見どころ

重点クラスの詳細解説

Armor Upgrade Manager に関する管理・集約処理を担当します。(root) パッケージの 小〜中規模クラスで、責務境界の要点を確認する起点です。全面展開版では、他の重点クラスと同じ章立てで読めるように補強しています。

最初に追う読む順番

  1. ArmorUpgradeManager
    依存オブジェクトと初期状態を束ね、このクラスが担当するランタイムの前提を固めます。
  2. getOrInitUpgradeKey
    UPGRADE_KEY を安全に取得(null ならここで初期化)
  3. readUpgradeLevel
    ItemMeta からレベルを安全に読む(キー未初期化や型違いでも 0 を返す)
  4. register
    定期処理や公開 API の起動地点で、外部から見える挙動がここから立ち上がります。
  5. isUpgradeablePiece
    条件判定を行い、後続処理の分岐に使える真偽値を返します。
  6. maxLevelOf
    maxLevelOf の主要処理を担当します。
  7. niceArmorName
    niceArmorName の主要処理を担当します。

内部サブシステムの地図

起動・前提準備

初期テーブル、依存状態、定期処理の点灯など、このクラスが動き始める前提をまとめています。

主なメソッド
主なフィールド

入口 API と対象解決

外部から呼ばれる公開メソッドや、対象プレイヤー・対象データ・対象ワールドを引き当てる経路です。

主なメソッド
主なフィールド

代表フロー詳解

初期化と起動の流れ

  1. ArmorUpgradeManager
  2. register
  3. getOrInitUpgradeKey

このクラスが前提状態を揃え、外部から利用可能な形まで立ち上がる流れです。新規依存の追加や起動失敗の調査はまずここから追います。

変更時の注意点

フィールド

VisibilityTypeName役割
publicNamespacedKeyUPGRADE_KEY強化レベルPDCキー(staticだが、必ずアクセサ経由で取得する)
privateJavaPluginpluginプラグイン本体参照です。
publicintMAX_IRON_LEVELMAX_IRON_LEVEL の状態を保持します。
publicintMAX_DIAMOND_LEVELMAX_DIAMOND_LEVEL の状態を保持します。
publicintMAX_NETHERITE_LEVELMAX_NETHERITE_LEVEL の状態を保持します。
publicdoublePIECE_MAX_REDUCEPIECE_MAX_REDUCE の状態を保持します。
publicdoubleDIAMOND_SHIELD_PER_LVDIAMOND_SHIELD_PER_LV の状態を保持します。
publicdoubleNETHERITE_SHIELD_PER_LVNETHERITE_SHIELD_PER_LV の状態を保持します。

コンストラクタ / 初期化

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

メソッド索引

NameVisibilityKind説明
ArmorUpgradeManagerpublicコンストラクタ依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
getOrInitUpgradeKeypublicメソッドUPGRADE_KEY を安全に取得(null ならここで初期化)
readUpgradeLevelpublicメソッドItemMeta からレベルを安全に読む(キー未初期化や型違いでも 0 を返す)
readUpgradeLevelpublicメソッドItemMeta からレベルを安全に読む(キー未初期化や型違いでも 0 を返す)
registerprivateメソッド初期化と各種登録を行い、機能を有効化します。
readUpgradeLevelpublicイベント処理ItemMeta からレベルを安全に読む(キー未初期化や型違いでも 0 を返す)
isUpgradeablePieceprivateメソッド条件判定を行い、後続処理の分岐に使える真偽値を返します。
maxLevelOfprivateメソッドmaxLevelOf の主要処理を担当します。
readUpgradeLevelpublicイベント処理ItemMeta からレベルを安全に読む(キー未初期化や型違いでも 0 を返す)
niceArmorNameprivateメソッドniceArmorName の主要処理を担当します。

メソッド詳細

ArmorUpgradeManager

コンストラクタpublic
public ArmorUpgradeManager(JavaPlugin plugin)

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

引数

throws

なし

主要な呼び出し順

getOrInitUpgradeKeyregisterAllRecipesgetServergetPluginManagerregisterEvents

getOrInitUpgradeKey

メソッドpublicstatic
public static NamespacedKey getOrInitUpgradeKey(JavaPlugin plugin)

UPGRADE_KEY を安全に取得(null ならここで初期化)

引数

throws

なし

主要な呼び出し順

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

readUpgradeLevel

メソッドpublicstatic
public static int readUpgradeLevel(ItemMeta meta, JavaPlugin plugin)

ItemMeta からレベルを安全に読む(キー未初期化や型違いでも 0 を返す)

引数

throws

なし

主要な呼び出し順

getOrInitUpgradeKeygetPersistentDataContainer

readUpgradeLevel

メソッドpublicstatic
public static int readUpgradeLevel(ItemMeta meta, JavaPlugin plugin) { if (meta == null) return 0; try { NamespacedKey key = getOrInitUpgradeKey(plugin); Integer v = meta.getPersistentDataContainer().get(key, PersistentDataType.INTEGER); return (v != null) ? v : 0; } catch (IllegalArgumentException ignored) { return 0; } } /* ========================= * 登録系 * ========================= */ private void registerAllRecipes()

ItemMeta からレベルを安全に読む(キー未初期化や型違いでも 0 を返す)

引数

throws

なし

主要な呼び出し順

register

register

メソッドprivate
private void register(Material armorPiece, Material surroundBlock, String keyName, int maxLevel)

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

引数

throws

なし

主要な呼び出し順

getItemMetagetPersistentDataContainergetOrInitUpgradeKeysetItemMetashapesetIngredientaddRecipe

readUpgradeLevel

イベント処理publicstatic
public static int readUpgradeLevel(ItemMeta meta, JavaPlugin plugin) { if (meta == null) return 0; try { NamespacedKey key = getOrInitUpgradeKey(plugin); Integer v = meta.getPersistentDataContainer().get(key, PersistentDataType.INTEGER); return (v != null) ? v : 0; } catch (IllegalArgumentException ignored) { return 0; } } /* ========================= * 登録系 * ========================= */ private void registerAllRecipes() { register(Material.IRON_HELMET, Material.IRON_BLOCK, "iron_helmet_upg", MAX_IRON_LEVEL); register(Material.IRON_CHESTPLATE, Material.IRON_BLOCK, "iron_chest_upg", MAX_IRON_LEVEL); register(Material.IRON_LEGGINGS, Material.IRON_BLOCK, "iron_legs_upg", MAX_IRON_LEVEL); register(Material.IRON_BOOTS, Material.IRON_BLOCK, "iron_boots_upg", MAX_IRON_LEVEL); register(Material.DIAMOND_HELMET, Material.DIAMOND_BLOCK, "diamond_helmet_upg", MAX_DIAMOND_LEVEL); register(Material.DIAMOND_CHESTPLATE, Material.DIAMOND_BLOCK, "diamond_chest_upg", MAX_DIAMOND_LEVEL); register(Material.DIAMOND_LEGGINGS, Material.DIAMOND_BLOCK, "diamond_legs_upg", MAX_DIAMOND_LEVEL); register(Material.DIAMOND_BOOTS, Material.DIAMOND_BLOCK, "diamond_boots_upg", MAX_DIAMOND_LEVEL); register(Material.NETHERITE_HELMET, Material.NETHERITE_BLOCK, "netherite_helmet_upg", MAX_NETHERITE_LEVEL); register(Material.NETHERITE_CHESTPLATE, Material.NETHERITE_BLOCK, "netherite_chest_upg", MAX_NETHERITE_LEVEL); register(Material.NETHERITE_LEGGINGS, Material.NETHERITE_BLOCK, "netherite_legs_upg", MAX_NETHERITE_LEVEL); register(Material.NETHERITE_BOOTS, Material.NETHERITE_BLOCK, "netherite_boots_upg", MAX_NETHERITE_LEVEL); } private void register(Material armorPiece, Material surroundBlock, String keyName, int maxLevel) { NamespacedKey key = new NamespacedKey(plugin, keyName); ItemStack base = new ItemStack(armorPiece); ItemMeta meta = base.getItemMeta(); meta.getPersistentDataContainer().set(getOrInitUpgradeKey(plugin), PersistentDataType.INTEGER, 0); base.setItemMeta(meta); ShapedRecipe recipe = new ShapedRecipe(key, base); recipe.shape("BBB", "BAB", "BBB"); recipe.setIngredient('B', surroundBlock); recipe.setIngredient('A', armorPiece); Bukkit.addRecipe(recipe); } /* ========================= * イベント * ========================= */ public void onPrepareCraft(PrepareItemCraftEvent e)

ItemMeta からレベルを安全に読む(キー未初期化や型違いでも 0 を返す)

引数

throws

なし

主要な呼び出し順

getRecipegetNametoLowerCasegetKeygetNamespaceequalsstreamgetInventory

isUpgradeablePiece

メソッドprivate
private boolean isUpgradeablePiece(Material t)

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

引数

throws

なし

主要な呼び出し順

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

maxLevelOf

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

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

引数

throws

なし

主要な呼び出し順

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

readUpgradeLevel

イベント処理publicstatic
public static int readUpgradeLevel(ItemMeta meta, JavaPlugin plugin) { if (meta == null) return 0; try { NamespacedKey key = getOrInitUpgradeKey(plugin); Integer v = meta.getPersistentDataContainer().get(key, PersistentDataType.INTEGER); return (v != null) ? v : 0; } catch (IllegalArgumentException ignored) { return 0; } } /* ========================= * 登録系 * ========================= */ private void registerAllRecipes() { register(Material.IRON_HELMET, Material.IRON_BLOCK, "iron_helmet_upg", MAX_IRON_LEVEL); register(Material.IRON_CHESTPLATE, Material.IRON_BLOCK, "iron_chest_upg", MAX_IRON_LEVEL); register(Material.IRON_LEGGINGS, Material.IRON_BLOCK, "iron_legs_upg", MAX_IRON_LEVEL); register(Material.IRON_BOOTS, Material.IRON_BLOCK, "iron_boots_upg", MAX_IRON_LEVEL); register(Material.DIAMOND_HELMET, Material.DIAMOND_BLOCK, "diamond_helmet_upg", MAX_DIAMOND_LEVEL); register(Material.DIAMOND_CHESTPLATE, Material.DIAMOND_BLOCK, "diamond_chest_upg", MAX_DIAMOND_LEVEL); register(Material.DIAMOND_LEGGINGS, Material.DIAMOND_BLOCK, "diamond_legs_upg", MAX_DIAMOND_LEVEL); register(Material.DIAMOND_BOOTS, Material.DIAMOND_BLOCK, "diamond_boots_upg", MAX_DIAMOND_LEVEL); register(Material.NETHERITE_HELMET, Material.NETHERITE_BLOCK, "netherite_helmet_upg", MAX_NETHERITE_LEVEL); register(Material.NETHERITE_CHESTPLATE, Material.NETHERITE_BLOCK, "netherite_chest_upg", MAX_NETHERITE_LEVEL); register(Material.NETHERITE_LEGGINGS, Material.NETHERITE_BLOCK, "netherite_legs_upg", MAX_NETHERITE_LEVEL); register(Material.NETHERITE_BOOTS, Material.NETHERITE_BLOCK, "netherite_boots_upg", MAX_NETHERITE_LEVEL); } private void register(Material armorPiece, Material surroundBlock, String keyName, int maxLevel) { NamespacedKey key = new NamespacedKey(plugin, keyName); ItemStack base = new ItemStack(armorPiece); ItemMeta meta = base.getItemMeta(); meta.getPersistentDataContainer().set(getOrInitUpgradeKey(plugin), PersistentDataType.INTEGER, 0); base.setItemMeta(meta); ShapedRecipe recipe = new ShapedRecipe(key, base); recipe.shape("BBB", "BAB", "BBB"); recipe.setIngredient('B', surroundBlock); recipe.setIngredient('A', armorPiece); Bukkit.addRecipe(recipe); } /* ========================= * イベント * ========================= */ public void onPrepareCraft(PrepareItemCraftEvent e) { if (!(e.getRecipe() instanceof ShapedRecipe sr)) return; String ns = plugin.getName().toLowerCase(java.util.Locale.ROOT); if (!sr.getKey().getNamespace().equals(ns)) return; ItemStack baseArmor = Arrays.stream(e.getInventory().getMatrix()) .filter(Objects::nonNull) .filter(s -> isUpgradeablePiece(s.getType())) .findFirst().orElse(null); if (baseArmor == null) return; ItemMeta m = baseArmor.getItemMeta(); int cur = readUpgradeLevel(m, plugin); int max = maxLevelOf(baseArmor.getType()); if (cur >= max) { e.getInventory().setResult(null); return; } ItemStack upgraded = upgradeArmor(baseArmor.clone(), cur + 1); e.getInventory().setResult(upgraded); } private boolean isUpgradeablePiece(Material t) { return switch (t) { case IRON_HELMET, IRON_CHESTPLATE, IRON_LEGGINGS, IRON_BOOTS, DIAMOND_HELMET, DIAMOND_CHESTPLATE, DIAMOND_LEGGINGS, DIAMOND_BOOTS, NETHERITE_HELMET, NETHERITE_CHESTPLATE, NETHERITE_LEGGINGS, NETHERITE_BOOTS -> true; default -> false; }; } private static int maxLevelOf(Material m) { return switch (m) { case IRON_HELMET, IRON_CHESTPLATE, IRON_LEGGINGS, IRON_BOOTS -> MAX_IRON_LEVEL; case DIAMOND_HELMET, DIAMOND_CHESTPLATE, DIAMOND_LEGGINGS, DIAMOND_BOOTS -> MAX_DIAMOND_LEVEL; case NETHERITE_HELMET, NETHERITE_CHESTPLATE, NETHERITE_LEGGINGS, NETHERITE_BOOTS -> MAX_NETHERITE_LEVEL; default -> 0; }; } /* ========================= * コア処理 * ========================= */ private ItemStack upgradeArmor(ItemStack armor, int newLevel)

ItemMeta からレベルを安全に読む(キー未初期化や型違いでも 0 を返す)

引数

throws

なし

主要な呼び出し順

getItemMetagetPersistentDataContainergetOrInitUpgradeKeyminmaxLevelOfgetTyperoundname

niceArmorName

メソッドprivate
private String niceArmorName(Material m)

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

引数

throws

なし

主要な呼び出し順

nametoLowerCasereplace

代表的な処理フロー

  1. 初期化フロー
    ArmorUpgradeManager → getOrInitUpgradeKey → registerAllRecipes → getServer → getPluginManager → registerEvents
    依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
  2. readUpgradeLevel フロー
    readUpgradeLevel → getRecipe → getName → toLowerCase → getKey → getNamespace
    ItemMeta からレベルを安全に読む(キー未初期化や型違いでも 0 を返す)
  3. readUpgradeLevel フロー
    readUpgradeLevel → getItemMeta → getPersistentDataContainer → getOrInitUpgradeKey → min → maxLevelOf
    ItemMeta からレベルを安全に読む(キー未初期化や型違いでも 0 を返す)
  4. register フロー
    register → getItemMeta → getPersistentDataContainer → getOrInitUpgradeKey → setItemMeta → shape
    初期化と各種登録を行い、機能を有効化します。
  5. niceArmorName フロー
    niceArmorName → name → toLowerCase → replace
    niceArmorName の主要処理を担当します。
  6. readUpgradeLevel フロー
    readUpgradeLevel → getOrInitUpgradeKey → getPersistentDataContainer
    ItemMeta からレベルを安全に読む(キー未初期化や型違いでも 0 を返す)

外部との接点

Web ルート

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

SQL / テーブル

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

関連クラス

補足