召喚・登録・セッション管理
オーナーごとの active servant と周辺状態を束ねます。召喚失敗、重複召喚、再ログイン復元はここが起点です。
Lv20 で解禁される「しもべ」管理。
com.example.rankingplugin.levellevel/LevelServantService.javaclassLv20 で解禁される「しもべ」管理。 Citizens がある場合は PLAYER NPC を優先し、ない場合は内部Mob + フェイクプレイヤー表示で動作する。
しもべ機能の本体で、召喚・追従・戦闘・見た目・装備 GUI・保存・Citizens 互換・Protocol 補助が一つに集まっています。プレイヤー体験に直結するため説明を厚くする価値が高いクラスです。
startsummonFormaintainBehaviourmaintainCitizensBehaviourmaintainManualPlayerBehaviourresolveAssistOrNearestTargetrefreshAppearancerenderEquipmentMenuapplyLoadoutToServantshutdownオーナーごとの active servant と周辺状態を束ねます。召喚失敗、重複召喚、再ログイン復元はここが起点です。
通常追従と戦闘状態の遷移を毎 tick で維持します。Citizens 経由か手動制御かで分岐するため、両経路の存在を意識して読むと理解しやすいです。
Mob 実体と可視プレイヤー表現を同期させる層です。スキン解決の遅延や visual の角度補正もここに入ります。
プレイヤーが GUI 上でしもべの装備を操作し、その結果を保存・再適用する塊です。見た目更新とも密に繋がっています。
最大体力再計算や遅延再試行、死亡音抑制など、表に見えづらいが壊れると違和感が大きい補助層です。
summonForensureServantMarkersrefreshStatsscheduleSpawnVitalsBootstrapattachOrRefreshVisualmaintainBehaviourresolveAssistOrNearestTarget実体生成直後は見た目と体力がまだ完全でないため、召喚後すぐに複数段階の補正が入ります。スポーン直後の不調はこの流れを追うと原因を掴みやすいです。
tickmaintainBehaviourisOwnerMovingstableFollowAnchormaintainFollowStatefaceAlongVelocityIfNeeded追従は単純なテレポ連打ではなく、歩行・停止・ワープ閾値を使い分けています。違和感のある追従挙動は anchor 計算周辺を見ます。
openEquipmentGuirenderEquipmentMenusaveLoadoutapplyLoadoutToServantrefreshAppearanceGUI はその場の見た目変更だけでなく永続化まで担うため、画面だけ合って保存が壊れるケースを切り分けるときに有効です。
removeServantdestroyVisualclearPendingVitalsclearAssistTargetしもべは実体・見た目・補助状態の三層を持つため、掃除漏れが最も起きやすいです。オーナー不在時の残骸はここを見てください。
SQL 文字列から抽出できた主要テーブルです。スキーマ変更時の確認用です。
| Signature | 説明 | 主要呼び出し |
|---|---|---|
public LevelServantService(Plugin plugin, DataSource ds, LevelingService leveling) | 依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。 | getScoreService → getConfig → getBoolean → max → getInt → getDouble |
| Name | Visibility | Kind | 説明 |
|---|---|---|---|
| LevelServantService | public | コンストラクタ | 依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。 |
| ensureTables | public | メソッド | 必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。 |
| start | public | メソッド | 初期化と各種登録を行い、機能を有効化します。 |
| shutdown | public | メソッド | 動作中の処理やリソースを安全に停止・解放します。 |
| handleLevelUp | public | メソッド | 入力やリクエストを受けて、検証・処理・応答までをまとめて担当します。 |
| summonFor | public | メソッド | summonFor の主要処理を担当します。 |
| dismiss | public | メソッド | dismiss の主要処理を担当します。 |
| describeSkin | public | メソッド | describeSkin の主要処理を担当します。 |
| sendInfo | public | メソッド | sendInfo の主要処理を担当します。 |
| openEquipmentGui | public | メソッド | openEquipmentGui の主要処理を担当します。 |
| getScoringOwnerFromLastDamage | public | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| isTrackedServant | public | メソッド | 条件判定を行い、後続処理の分岐に使える真偽値を返します。 |
| getOwnerIdIfServant | public | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| resolveOwnerIdForPotentialServant | public | メソッド | resolveOwnerIdForPotentialServant の主要処理を担当します。 |
| resolveOwnerIdByServantEntityUuid | public | メソッド | resolveOwnerIdByServantEntityUuid の主要処理を担当します。 |
| setSkinSelf | public | メソッド | setSkinSelf の主要処理を担当します。 |
| setSkinByName | public | メソッド | setSkinByName の主要処理を担当します。 |
| setSkinByUrl | public | メソッド | setSkinByUrl の主要処理を担当します。 |
| tick | private | メソッド | tick の主要処理を担当します。 |
| maintainBehaviour | private | メソッド | maintainBehaviour の主要処理を担当します。 |
| maintainCitizensBehaviour | private | メソッド | maintainCitizensBehaviour の主要処理を担当します。 |
| maintainManualPlayerBehaviour | private | メソッド | maintainManualPlayerBehaviour の主要処理を担当します。 |
| isOwnerMoving | private | メソッド | 条件判定を行い、後続処理の分岐に使える真偽値を返します。 |
| updateOwnerMotionState | private | メソッド | 状態を永続化または更新し、最新状態へ反映します。 |
| resolveStateMachineTarget | private | メソッド | resolveStateMachineTarget の主要処理を担当します。 |
| engageCitizensTarget | private | メソッド | engageCitizensTarget の主要処理を担当します。 |
| maintainFollowState | private | メソッド | maintainFollowState の主要処理を担当します。 |
| clearCombatState | private | メソッド | clearCombatState の主要処理を担当します。 |
| desiredTrailOffset | private | メソッド | desiredTrailOffset の主要処理を担当します。 |
| desiredIdleOffset | private | メソッド | desiredIdleOffset の主要処理を担当します。 |
| stableFollowAnchor | private | メソッド | stableFollowAnchor の主要処理を担当します。 |
| brakeServant | private | メソッド | brakeServant の主要処理を担当します。 |
| maybeScrubServantScore | private | メソッド | maybeScrubServantScore の主要処理を担当します。 |
| canEngageTarget | private | メソッド | 条件判定を行い、後続処理の分岐に使える真偽値を返します。 |
| hasDirectSight | private | メソッド | 条件判定を行い、後続処理の分岐に使える真偽値を返します。 |
| isEffectivelyInvisible | private | メソッド | 条件判定を行い、後続処理の分岐に使える真偽値を返します。 |
| configureHuskServant | private | メソッド | configureHuskServant の主要処理を担当します。 |
| configureCommonServant | private | メソッド | configureCommonServant の主要処理を担当します。 |
| ensureServantMarkers | private | メソッド | 必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。 |
| refreshStats | private | メソッド | refreshStats の主要処理を担当します。 |
| currentMaxHealth | private | メソッド | currentMaxHealth の主要処理を担当します。 |
| applyPlayerSpecificVitals | private | メソッド | applyPlayerSpecificVitals の主要処理を担当します。 |
| trySetPlayerMaxHealthDirect | private | メソッド | trySetPlayerMaxHealthDirect の主要処理を担当します。 |
| trySetPlayerHealthDirect | private | メソッド | trySetPlayerHealthDirect の主要処理を担当します。 |
| scheduleDelayedPlayerVitalRetry | private | メソッド | scheduleDelayedPlayerVitalRetry の主要処理を担当します。 |
| queuePendingVitals | private | メソッド | queuePendingVitals の主要処理を担当します。 |
| clearPendingVitals | private | メソッド | clearPendingVitals の主要処理を担当します。 |
| maintainPendingVitals | private | メソッド | maintainPendingVitals の主要処理を担当します。 |
| forceServantVitalsNow | private | メソッド | forceServantVitalsNow の主要処理を担当します。 |
| scheduleSpawnVitalsBootstrap | private | メソッド | scheduleSpawnVitalsBootstrap の主要処理を担当します。 |
| maxHealthForSpentSp | private | メソッド | maxHealthForSpentSp の主要処理を担当します。 |
| maxHealthForSession | private | メソッド | maxHealthForSession の主要処理を担当します。 |
| servantCombatBonus | private | メソッド | servantCombatBonus の主要処理を担当します。 |
| servantAttackDamage | private | メソッド | servantAttackDamage の主要処理を担当します。 |
| servantAttackDamage | private | メソッド | servantAttackDamage の主要処理を担当します。 |
| servantArmor | private | メソッド | servantArmor の主要処理を担当します。 |
| setAttributeBase | private | メソッド | setAttributeBase の主要処理を担当します。 |
| equipFallbackAppearance | private | メソッド | equipFallbackAppearance の主要処理を担当します。 |
| clearFallbackAppearance | private | メソッド | clearFallbackAppearance の主要処理を担当します。 |
| makeLeatherArmor | private | メソッド | makeLeatherArmor の主要処理を担当します。 |
| colorForOwner | private | メソッド | colorForOwner の主要処理を担当します。 |
| buildSkinHead | private | メソッド | 表示用または出力用のデータを組み立てます。 |
| refreshAppearance | private | メソッド | refreshAppearance の主要処理を担当します。 |
| resolveSkinAsync | private | メソッド | resolveSkinAsync の主要処理を担当します。 |
| resolveSkinUrlAsync | private | メソッド | resolveSkinUrlAsync の主要処理を担当します。 |
| createProfileByName | private | メソッド | createProfileByName の主要処理を担当します。 |
| getProfileForOwner | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| updateProfileIfPossible | private | メソッド | 状態を永続化または更新し、最新状態へ反映します。 |
| applyResolvedProfile | private | メソッド | applyResolvedProfile の主要処理を担当します。 |
| getActiveServant | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| attachOrRefreshVisual | private | メソッド | attachOrRefreshVisual の主要処理を担当します。 |
| syncVisual | private | メソッド | syncVisual の主要処理を担当します。 |
| applyVisualRotation | private | メソッド | applyVisualRotation の主要処理を担当します。 |
| computeDesiredPose | private | メソッド | computeDesiredPose の主要処理を担当します。 |
| lookAt | private | メソッド | lookAt の主要処理を担当します。 |
| vectorPose | private | メソッド | vectorPose の主要処理を担当します。 |
| smoothYaw | private | メソッド | smoothYaw の主要処理を担当します。 |
| smoothPitch | private | メソッド | smoothPitch の主要処理を担当します。 |
| wrapDegrees | private | メソッド | wrapDegrees の主要処理を担当します。 |
| clampPitch | private | メソッド | clampPitch の主要処理を担当します。 |
| playSwing | private | メソッド | playSwing の主要処理を担当します。 |
| playHurtReaction | private | メソッド | playHurtReaction の主要処理を担当します。 |
| destroyVisual | private | メソッド | destroyVisual の主要処理を担当します。 |
| isTrackedServantEntityId | package | メソッド | 条件判定を行い、後続処理の分岐に使える真偽値を返します。 |
| setupOptionalProtocolSoundMuteHook | private | メソッド | 初期化と各種登録を行い、機能を有効化します。 |
| teardownOptionalProtocolSoundMuteHook | private | メソッド | teardownOptionalProtocolSoundMuteHook の主要処理を担当します。 |
| maybeStopLeakedServantSounds | private | メソッド | maybeStopLeakedServantSounds の主要処理を担当します。 |
| stopServantSoundNear | private | メソッド | 動作中の処理やリソースを安全に停止・解放します。 |
| stopServantSoundFor | private | メソッド | 動作中の処理やリソースを安全に停止・解放します。 |
| invokeStopSound | private | メソッド | invokeStopSound の主要処理を担当します。 |
| suppressServantDeathSound | private | メソッド | suppressServantDeathSound の主要処理を担当します。 |
| removeServant | private | メソッド | 対象データや登録状態を削除・解除します。 |
| isServant | private | メソッド | 条件判定を行い、後続処理の分岐に使える真偽値を返します。 |
| getOwnerId | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| findNearestTarget | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| isValidTarget | private | メソッド | 条件判定を行い、後続処理の分岐に使える真偽値を返します。 |
| isBossType | private | メソッド | 条件判定を行い、後続処理の分岐に使える真偽値を返します。 |
| pushTargetFromOwnerContext | private | メソッド | pushTargetFromOwnerContext の主要処理を担当します。 |
| teleportNearOwner | private | メソッド | teleportNearOwner の主要処理を担当します。 |
| pickDirectFollowTeleportLocation | private | メソッド | pickDirectFollowTeleportLocation の主要処理を担当します。 |
| followAnchor | private | メソッド | followAnchor の主要処理を担当します。 |
| findSpawnLocationNear | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| isSafeStandingLocation | private | メソッド | 条件判定を行い、後続処理の分岐に使える真偽値を返します。 |
| trySpawnCitizensServant | private | メソッド | trySpawnCitizensServant の主要処理を担当します。 |
| effectiveSkinName | private | メソッド | effectiveSkinName の主要処理を担当します。 |
| setAssistTarget | private | メソッド | setAssistTarget の主要処理を担当します。 |
| clearAssistTarget | private | メソッド | clearAssistTarget の主要処理を担当します。 |
| resolveAssistOrNearestTarget | private | メソッド | resolveAssistOrNearestTarget の主要処理を担当します。 |
| moveServantTowards | private | メソッド | moveServantTowards の主要処理を担当します。 |
| faceTarget | private | メソッド | faceTarget の主要処理を担当します。 |
| faceAlongVelocityIfNeeded | private | メソッド | faceAlongVelocityIfNeeded の主要処理を担当します。 |
| maybeAutoEat | private | メソッド | maybeAutoEat の主要処理を担当します。 |
| healAmountForFood | private | メソッド | healAmountForFood の主要処理を担当します。 |
| getLoadout | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| saveLoadout | private | メソッド | 状態を永続化または更新し、最新状態へ反映します。 |
| serializeItem | private | メソッド | serializeItem の主要処理を担当します。 |
| deserializeItem | private | メソッド | deserializeItem の主要処理を担当します。 |
| renderEquipmentMenu | private | メソッド | 表示用または出力用のデータを組み立てます。 |
| namedItem | private | メソッド | namedItem の主要処理を担当します。 |
| cloneOrNull | private | メソッド | cloneOrNull の主要処理を担当します。 |
| preferredSlotForShift | private | メソッド | preferredSlotForShift の主要処理を担当します。 |
| isAllowedForSlot | private | メソッド | 条件判定を行い、後続処理の分岐に使える真偽値を返します。 |
| applyLoadoutToServant | private | メソッド | applyLoadoutToServant の主要処理を担当します。 |
| resolveSkinOwner | private | メソッド | resolveSkinOwner の主要処理を担当します。 |
| safeSetDropChance | private | メソッド | safeSetDropChance の主要処理を担当します。 |
| equipmentArmorBonus | private | メソッド | equipmentArmorBonus の主要処理を担当します。 |
| shieldArmorBonus | private | メソッド | shieldArmorBonus の主要処理を担当します。 |
| armorValue | private | メソッド | armorValue の主要処理を担当します。 |
| weaponDamageBonus | private | メソッド | weaponDamageBonus の主要処理を担当します。 |
| decrementOne | private | メソッド | decrementOne の主要処理を担当します。 |
| equipmentSnapshotFrom | private | メソッド | equipmentSnapshotFrom の主要処理を担当します。 |
| equipmentSnapshotForOwner | private | メソッド | equipmentSnapshotForOwner の主要処理を担当します。 |
| createSkinDataFromTextureUrl | private | メソッド | createSkinDataFromTextureUrl の主要処理を担当します。 |
| cleanupOrphanedServantsRuntime | private | メソッド | cleanupOrphanedServantsRuntime の主要処理を担当します。 |
| cleanupStaleServantsOnStartup | private | メソッド | cleanupStaleServantsOnStartup の主要処理を担当します。 |
| getSkinPref | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| saveSkinPref | private | メソッド | 状態を永続化または更新し、最新状態へ反映します。 |
| uuidToBytes | private | メソッド | uuidToBytes の主要処理を担当します。 |
| playerDamager | private | メソッド | playerDamager の主要処理を担当します。 |
| livingDamager | private | メソッド | livingDamager の主要処理を担当します。 |
| servantDamager | private | メソッド | servantDamager の主要処理を担当します。 |
| onJoin | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onQuit | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onKick | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onServantTarget | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onDamage | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onServantDeath | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onServantEquipmentClick | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onServantEquipmentDrag | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onServantEquipmentClose | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
public LevelServantService(Plugin plugin, DataSource ds, LevelingService leveling)依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
Plugin pluginDataSource dsLevelingService levelingなし
public void ensureTables()必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。
なし
public void start()初期化と各種登録を行い、機能を有効化します。
なし
public void shutdown()動作中の処理やリソースを安全に停止・解放します。
なし
public void handleLevelUp(Player player, int oldLevel, int newLevel)入力やリクエストを受けて、検証・処理・応答までをまとめて担当します。
Player playerint oldLevelint newLevelなし
public boolean summonFor(Player p, boolean manual)summonFor の主要処理を担当します。
Player pboolean manualなし
public void dismiss(Player p)dismiss の主要処理を担当します。
Player pなし
public String describeSkin(UUID ownerId)describeSkin の主要処理を担当します。
UUID ownerIdなし
public void sendInfo(Player p)sendInfo の主要処理を担当します。
Player pなし
public void openEquipmentGui(Player p)openEquipmentGui の主要処理を担当します。
Player pなし
public UUID getScoringOwnerFromLastDamage(LivingEntity victim)必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
LivingEntity victimなし
public boolean isTrackedServant(LivingEntity entity)条件判定を行い、後続処理の分岐に使える真偽値を返します。
LivingEntity entityなし
public UUID getOwnerIdIfServant(LivingEntity entity)必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
LivingEntity entityなし
public UUID resolveOwnerIdForPotentialServant(Player player)resolveOwnerIdForPotentialServant の主要処理を担当します。
Player playerなし
public UUID resolveOwnerIdByServantEntityUuid(UUID entityUuid)resolveOwnerIdByServantEntityUuid の主要処理を担当します。
UUID entityUuidなし
public boolean setSkinSelf(Player p)setSkinSelf の主要処理を担当します。
Player pなし
public boolean setSkinByName(Player p, String name)setSkinByName の主要処理を担当します。
Player pString nameなし
public boolean setSkinByUrl(Player p, String url)setSkinByUrl の主要処理を担当します。
Player pString urlなし
private void tick()tick の主要処理を担当します。
なし
private void maintainBehaviour(Player owner, LivingEntity servant, long now)maintainBehaviour の主要処理を担当します。
Player ownerLivingEntity servantlong nowなし
private void maintainCitizensBehaviour(Player owner, LivingEntity servant, LevelServantCitizensBridge.SpawnedNpc citizens, long now)maintainCitizensBehaviour の主要処理を担当します。
Player ownerLivingEntity servantLevelServantCitizensBridge.SpawnedNpc citizenslong nowなし
private void maintainManualPlayerBehaviour(Player owner, LivingEntity servant, long now)maintainManualPlayerBehaviour の主要処理を担当します。
Player ownerLivingEntity servantlong nowなし
private boolean isOwnerMoving(Player owner)条件判定を行い、後続処理の分岐に使える真偽値を返します。
Player ownerなし
private boolean updateOwnerMotionState(Player owner, LivingEntity servant, ServantBrain brain, long now)状態を永続化または更新し、最新状態へ反映します。
Player ownerLivingEntity servantServantBrain brainlong nowなし
private LivingEntity resolveStateMachineTarget(Player owner, LivingEntity servant, ServantBrain brain, long now)resolveStateMachineTarget の主要処理を担当します。
Player ownerLivingEntity servantServantBrain brainlong nowなし
private void engageCitizensTarget(Player owner, LivingEntity servant, LevelServantCitizensBridge.SpawnedNpc citizens, ServantBrain brain, LivingEntity target, long now)engageCitizensTarget の主要処理を担当します。
Player ownerLivingEntity servantLevelServantCitizensBridge.SpawnedNpc citizensServantBrain brainLivingEntity targetlong nowなし
private void maintainFollowState(Player owner, LivingEntity servant, LevelServantCitizensBridge.SpawnedNpc citizens, ServantBrain brain, Location anchor, boolean ownerMoving, long now)maintainFollowState の主要処理を担当します。
Player ownerLivingEntity servantLevelServantCitizensBridge.SpawnedNpc citizensServantBrain brainLocation anchorboolean ownerMovinglong nowなし
private void clearCombatState(UUID ownerId, ServantBrain brain)clearCombatState の主要処理を担当します。
UUID ownerIdServantBrain brainなし
private Vector desiredTrailOffset(Player owner)desiredTrailOffset の主要処理を担当します。
Player ownerなし
private Vector desiredIdleOffset(Player owner)desiredIdleOffset の主要処理を担当します。
Player ownerなし
private Location stableFollowAnchor(Player owner, LivingEntity servant, ServantBrain brain, boolean ownerMoving)stableFollowAnchor の主要処理を担当します。
Player ownerLivingEntity servantServantBrain brainboolean ownerMovingなし
private void brakeServant(LivingEntity servant, double factor)brakeServant の主要処理を担当します。
LivingEntity servantdouble factorなし
private void maybeScrubServantScore(LivingEntity servant, long now)maybeScrubServantScore の主要処理を担当します。
LivingEntity servantlong nowなし
private boolean canEngageTarget(Player owner, LivingEntity servant, LivingEntity target)条件判定を行い、後続処理の分岐に使える真偽値を返します。
Player ownerLivingEntity servantLivingEntity targetなし
private boolean hasDirectSight(LivingEntity observer, LivingEntity target, double maxDistance)条件判定を行い、後続処理の分岐に使える真偽値を返します。
LivingEntity observerLivingEntity targetdouble maxDistanceなし
private boolean isEffectivelyInvisible(LivingEntity target)条件判定を行い、後続処理の分岐に使える真偽値を返します。
LivingEntity targetなし
private void configureHuskServant(Husk servant, Player owner)configureHuskServant の主要処理を担当します。
Husk servantPlayer ownerなし
private void configureCommonServant(LivingEntity servant, Player owner)configureCommonServant の主要処理を担当します。
LivingEntity servantPlayer ownerなし
private void ensureServantMarkers(LivingEntity servant, UUID ownerId)必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。
LivingEntity servantUUID ownerIdなし
private void refreshStats(LivingEntity servant, Player owner)refreshStats の主要処理を担当します。
LivingEntity servantPlayer ownerなし
private double currentMaxHealth(LivingEntity servant)currentMaxHealth の主要処理を担当します。
LivingEntity servantなし
private void applyPlayerSpecificVitals(UUID ownerId, Player playerEntity, double maxHealth, double newHealth)applyPlayerSpecificVitals の主要処理を担当します。
UUID ownerIdPlayer playerEntitydouble maxHealthdouble newHealthなし
private void trySetPlayerMaxHealthDirect(Player playerEntity, double maxHealth)trySetPlayerMaxHealthDirect の主要処理を担当します。
Player playerEntitydouble maxHealthなし
private boolean trySetPlayerHealthDirect(Player playerEntity, double health)trySetPlayerHealthDirect の主要処理を担当します。
Player playerEntitydouble healthなし
private void scheduleDelayedPlayerVitalRetry(UUID ownerId, double targetHealth, long delayTicks)scheduleDelayedPlayerVitalRetry の主要処理を担当します。
UUID ownerIddouble targetHealthlong delayTicksなし
private void queuePendingVitals(UUID ownerId, double targetHealth, long retryUntilMs)queuePendingVitals の主要処理を担当します。
UUID ownerIddouble targetHealthlong retryUntilMsなし
private void clearPendingVitals(UUID ownerId)clearPendingVitals の主要処理を担当します。
UUID ownerIdなし
private void maintainPendingVitals(UUID ownerId, LivingEntity servant, long now)maintainPendingVitals の主要処理を担当します。
UUID ownerIdLivingEntity servantlong nowなし
private void forceServantVitalsNow(UUID ownerId, LivingEntity servant, double maxHealth, double health)forceServantVitalsNow の主要処理を担当します。
UUID ownerIdLivingEntity servantdouble maxHealthdouble healthなし
private void scheduleSpawnVitalsBootstrap(UUID ownerId, UUID servantId)scheduleSpawnVitalsBootstrap の主要処理を担当します。
UUID ownerIdUUID servantIdなし
private double maxHealthForSpentSp(int spentSp)maxHealthForSpentSp の主要処理を担当します。
int spentSpなし
private double maxHealthForSession(ServantSession session)maxHealthForSession の主要処理を担当します。
ServantSession sessionなし
private int servantCombatBonus(ServantSession session)servantCombatBonus の主要処理を担当します。
ServantSession sessionなし
private double servantAttackDamage(UUID ownerId)servantAttackDamage の主要処理を担当します。
UUID ownerIdなし
private double servantAttackDamage(UUID ownerId, ServantLoadout loadout, ServantSession session)servantAttackDamage の主要処理を担当します。
UUID ownerIdServantLoadout loadoutServantSession sessionなし
private double servantArmor(UUID ownerId, ServantLoadout loadout, ServantSession session)servantArmor の主要処理を担当します。
UUID ownerIdServantLoadout loadoutServantSession sessionなし
private void setAttributeBase(LivingEntity entity, Attribute attribute, double value)setAttributeBase の主要処理を担当します。
LivingEntity entityAttribute attributedouble valueなし
private void equipFallbackAppearance(LivingEntity servant, UUID ownerId, String ownerName)equipFallbackAppearance の主要処理を担当します。
LivingEntity servantUUID ownerIdString ownerNameなし
private void clearFallbackAppearance(LivingEntity servant)clearFallbackAppearance の主要処理を担当します。
LivingEntity servantなし
private ItemStack makeLeatherArmor(Material type, UUID ownerId, String name)makeLeatherArmor の主要処理を担当します。
Material typeUUID ownerIdString nameなし
private Color colorForOwner(UUID ownerId)colorForOwner の主要処理を担当します。
UUID ownerIdなし
private ItemStack buildSkinHead(UUID ownerId, String ownerName)表示用または出力用のデータを組み立てます。
UUID ownerIdString ownerNameなし
private void refreshAppearance(UUID ownerId)refreshAppearance の主要処理を担当します。
UUID ownerIdなし
private void resolveSkinAsync(UUID ownerId, String skinName)resolveSkinAsync の主要処理を担当します。
UUID ownerIdString skinNameなし
private void resolveSkinUrlAsync(UUID ownerId, String url)resolveSkinUrlAsync の主要処理を担当します。
UUID ownerIdString urlなし
private Object createProfileByName(String name)createProfileByName の主要処理を担当します。
String nameなし
private Object getProfileForOwner(Player owner, SkinPref pref)必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
Player ownerSkinPref prefなし
private Object updateProfileIfPossible(Object profile)状態を永続化または更新し、最新状態へ反映します。
Object profileなし
private void applyResolvedProfile(SkullMeta meta, Object profile)applyResolvedProfile の主要処理を担当します。
SkullMeta metaObject profileなし
private LivingEntity getActiveServant(UUID ownerId)必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
UUID ownerIdなし
private void attachOrRefreshVisual(Player owner, LivingEntity servant)attachOrRefreshVisual の主要処理を担当します。
Player ownerLivingEntity servantなし
private void syncVisual(Player owner, LivingEntity servant)syncVisual の主要処理を担当します。
Player ownerLivingEntity servantなし
private void applyVisualRotation(Player owner, LivingEntity servant, Location visualLoc, boolean snap)applyVisualRotation の主要処理を担当します。
Player ownerLivingEntity servantLocation visualLocboolean snapなし
private VisualPose computeDesiredPose(Player owner, LivingEntity servant)computeDesiredPose の主要処理を担当します。
Player ownerLivingEntity servantなし
private VisualPose lookAt(Location from, Location to, boolean inCombat)lookAt の主要処理を担当します。
Location fromLocation toboolean inCombatなし
private VisualPose vectorPose(Vector v, boolean inCombat)vectorPose の主要処理を担当します。
Vector vboolean inCombatなし
private float smoothYaw(float current, float target, float factor)smoothYaw の主要処理を担当します。
float currentfloat targetfloat factorなし
private float smoothPitch(float current, float target, float factor)smoothPitch の主要処理を担当します。
float currentfloat targetfloat factorなし
private float wrapDegrees(float angle)wrapDegrees の主要処理を担当します。
float angleなし
private float clampPitch(float pitch)clampPitch の主要処理を担当します。
float pitchなし
private void playSwing(UUID ownerId)playSwing の主要処理を担当します。
UUID ownerIdなし
private void playHurtReaction(UUID ownerId, Entity attacker, LivingEntity servant)playHurtReaction の主要処理を担当します。
UUID ownerIdEntity attackerLivingEntity servantなし
private void destroyVisual(LevelServantPlayerNpcBridge.VisualHandle handle)destroyVisual の主要処理を担当します。
LevelServantPlayerNpcBridge.VisualHandle handleなし
boolean isTrackedServantEntityId(int entityId)条件判定を行い、後続処理の分岐に使える真偽値を返します。
int entityIdなし
private void setupOptionalProtocolSoundMuteHook()初期化と各種登録を行い、機能を有効化します。
なし
private void teardownOptionalProtocolSoundMuteHook()teardownOptionalProtocolSoundMuteHook の主要処理を担当します。
なし
private void maybeStopLeakedServantSounds(UUID ownerId, LivingEntity servant, long now)maybeStopLeakedServantSounds の主要処理を担当します。
UUID ownerIdLivingEntity servantlong nowなし
private void stopServantSoundNear(LivingEntity servant)動作中の処理やリソースを安全に停止・解放します。
LivingEntity servantなし
private void stopServantSoundFor(Player viewer)動作中の処理やリソースを安全に停止・解放します。
Player viewerなし
) private void invokeStopSound(Player viewer, String namespacedKey)invokeStopSound の主要処理を担当します。
Player viewerString namespacedKeyなし
private void suppressServantDeathSound(EntityDeathEvent e)suppressServantDeathSound の主要処理を担当します。
EntityDeathEvent eなし
private void removeServant(UUID ownerId, boolean removeEntity)対象データや登録状態を削除・解除します。
UUID ownerIdboolean removeEntityなし
private boolean isServant(Entity entity)条件判定を行い、後続処理の分岐に使える真偽値を返します。
Entity entityなし
private UUID getOwnerId(Entity entity)必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
Entity entityなし
private LivingEntity findNearestTarget(Player owner, LivingEntity servant, Location center, double range)必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
Player ownerLivingEntity servantLocation centerdouble rangeなし
private boolean isValidTarget(Player owner, LivingEntity target)条件判定を行い、後続処理の分岐に使える真偽値を返します。
Player ownerLivingEntity targetなし
private boolean isBossType(EntityType type)条件判定を行い、後続処理の分岐に使える真偽値を返します。
EntityType typeなし
private void pushTargetFromOwnerContext(Player owner, LivingEntity servant)pushTargetFromOwnerContext の主要処理を担当します。
Player ownerLivingEntity servantなし
private void teleportNearOwner(LivingEntity servant, Player owner)teleportNearOwner の主要処理を担当します。
LivingEntity servantPlayer ownerなし
private Location pickDirectFollowTeleportLocation(Player owner, LivingEntity servant)pickDirectFollowTeleportLocation の主要処理を担当します。
Player ownerLivingEntity servantなし
private Location followAnchor(Player owner, LivingEntity servant, boolean ownerMoving)followAnchor の主要処理を担当します。
Player ownerLivingEntity servantboolean ownerMovingなし
private Location findSpawnLocationNear(Player p)必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
Player pなし
private boolean isSafeStandingLocation(Location loc)条件判定を行い、後続処理の分岐に使える真偽値を返します。
Location locなし
private LevelServantCitizensBridge.SpawnedNpc trySpawnCitizensServant(Player owner, Location spawnLoc)trySpawnCitizensServant の主要処理を担当します。
Player ownerLocation spawnLocなし
private String effectiveSkinName(Player owner)effectiveSkinName の主要処理を担当します。
Player ownerなし
private void setAssistTarget(UUID ownerId, LivingEntity target)setAssistTarget の主要処理を担当します。
UUID ownerIdLivingEntity targetなし
private void clearAssistTarget(UUID ownerId)clearAssistTarget の主要処理を担当します。
UUID ownerIdなし
private LivingEntity resolveAssistOrNearestTarget(Player owner, LivingEntity servant)resolveAssistOrNearestTarget の主要処理を担当します。
Player ownerLivingEntity servantなし
private void moveServantTowards(LivingEntity servant, Location target, double strength)moveServantTowards の主要処理を担当します。
LivingEntity servantLocation targetdouble strengthなし
private void faceTarget(LivingEntity servant, LivingEntity target)faceTarget の主要処理を担当します。
LivingEntity servantLivingEntity targetなし
private void faceAlongVelocityIfNeeded(LivingEntity servant, Location loc)faceAlongVelocityIfNeeded の主要処理を担当します。
LivingEntity servantLocation locなし
private void maybeAutoEat(Player owner, LivingEntity servant, long now)maybeAutoEat の主要処理を担当します。
Player ownerLivingEntity servantlong nowなし
private double healAmountForFood(ItemStack food)healAmountForFood の主要処理を担当します。
ItemStack foodなし
private ServantLoadout getLoadout(UUID ownerId)必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
UUID ownerIdなし
private void saveLoadout(UUID ownerId, ServantLoadout loadout)状態を永続化または更新し、最新状態へ反映します。
UUID ownerIdServantLoadout loadoutなし
private String serializeItem(ItemStack item) throws IOExceptionserializeItem の主要処理を担当します。
ItemStack itemIOException
private ItemStack deserializeItem(String raw)deserializeItem の主要処理を担当します。
String rawなし
private void renderEquipmentMenu(Inventory inv, UUID ownerId)表示用または出力用のデータを組み立てます。
Inventory invUUID ownerIdなし
private ItemStack namedItem(Material type, String name, List<String> lore)namedItem の主要処理を担当します。
Material typeString nameList<String> loreなし
private ItemStack cloneOrNull(ItemStack item)cloneOrNull の主要処理を担当します。
ItemStack itemなし
private ServantSlot preferredSlotForShift(ItemStack item)preferredSlotForShift の主要処理を担当します。
ItemStack itemなし
private boolean isAllowedForSlot(ServantSlot slot, ItemStack item)条件判定を行い、後続処理の分岐に使える真偽値を返します。
ServantSlot slotItemStack itemなし
private void applyLoadoutToServant(LivingEntity servant, UUID ownerId, String ownerName)applyLoadoutToServant の主要処理を担当します。
LivingEntity servantUUID ownerIdString ownerNameなし
private Player resolveSkinOwner(Player owner, SkinPref pref)resolveSkinOwner の主要処理を担当します。
Player ownerSkinPref prefなし
private void safeSetDropChance(EntityEquipment eq, String method, float value)safeSetDropChance の主要処理を担当します。
EntityEquipment eqString methodfloat valueなし
private double equipmentArmorBonus(ServantLoadout loadout)equipmentArmorBonus の主要処理を担当します。
ServantLoadout loadoutなし
private double shieldArmorBonus(ItemStack offHand)shieldArmorBonus の主要処理を担当します。
ItemStack offHandなし
private double armorValue(ItemStack item, ServantSlot slot)armorValue の主要処理を担当します。
ItemStack itemServantSlot slotなし
private double weaponDamageBonus(ItemStack item)weaponDamageBonus の主要処理を担当します。
ItemStack itemなし
private ItemStack decrementOne(ItemStack stack)decrementOne の主要処理を担当します。
ItemStack stackなし
private LevelServantPlayerNpcBridge.EquipmentSnapshot equipmentSnapshotFrom(LivingEntity servant)equipmentSnapshotFrom の主要処理を担当します。
LivingEntity servantなし
private LevelServantPlayerNpcBridge.EquipmentSnapshot equipmentSnapshotForOwner(UUID ownerId, String ownerName, boolean playerModel)equipmentSnapshotForOwner の主要処理を担当します。
UUID ownerIdString ownerNameboolean playerModelなし
private LevelServantSkinData createSkinDataFromTextureUrl(String url)createSkinDataFromTextureUrl の主要処理を担当します。
String urlなし
private void cleanupOrphanedServantsRuntime()cleanupOrphanedServantsRuntime の主要処理を担当します。
なし
private void cleanupStaleServantsOnStartup()cleanupStaleServantsOnStartup の主要処理を担当します。
なし
private SkinPref getSkinPref(UUID ownerId)必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
UUID ownerIdなし
private void saveSkinPref(UUID ownerId, SkinPref pref)状態を永続化または更新し、最新状態へ反映します。
UUID ownerIdSkinPref prefなし
private byte[] uuidToBytes(UUID uuid)uuidToBytes の主要処理を担当します。
UUID uuidなし
private Player playerDamager(EntityDamageByEntityEvent e)playerDamager の主要処理を担当します。
EntityDamageByEntityEvent eなし
private LivingEntity livingDamager(EntityDamageByEntityEvent e)livingDamager の主要処理を担当します。
EntityDamageByEntityEvent eなし
private LivingEntity servantDamager(EntityDamageByEntityEvent e)servantDamager の主要処理を担当します。
EntityDamageByEntityEvent eなし
public void onJoin(PlayerJoinEvent e)イベント発生時の分岐と後続処理を担当します。
PlayerJoinEvent eなし
public void onQuit(PlayerQuitEvent e)イベント発生時の分岐と後続処理を担当します。
PlayerQuitEvent eなし
public void onKick(PlayerKickEvent e)イベント発生時の分岐と後続処理を担当します。
PlayerKickEvent eなし
public void onServantTarget(EntityTargetLivingEntityEvent e)イベント発生時の分岐と後続処理を担当します。
EntityTargetLivingEntityEvent eなし
public void onDamage(EntityDamageByEntityEvent e)イベント発生時の分岐と後続処理を担当します。
EntityDamageByEntityEvent eなし
public void onServantDeath(EntityDeathEvent e)イベント発生時の分岐と後続処理を担当します。
EntityDeathEvent eなし
public void onServantEquipmentClick(InventoryClickEvent e)イベント発生時の分岐と後続処理を担当します。
InventoryClickEvent eなし
public void onServantEquipmentDrag(InventoryDragEvent e)イベント発生時の分岐と後続処理を担当します。
InventoryDragEvent eなし
public void onServantEquipmentClose(InventoryCloseEvent e)イベント発生時の分岐と後続処理を担当します。
InventoryCloseEvent eなし
LevelServantService → getScoreService → getConfig → getBoolean → max → getIntonDamage → playerDamager → servantDamager → isServant → getEntity → setCancelledonJoin → getPlayer → getScheduler → runTaskLater → values → getActiveServantonServantDeath → isServant → getEntity → getDrops → clear → setDroppedExponServantEquipmentClick → getWhoClicked → getView → getTopInventory → getHolder → getUniqueIdonServantEquipmentClose → getInventory → getHolder → values → cloneOrNull → getItem