ワールド解決とゲート保証
どの world をメイン扱いするかを決め、そこから資源ワールドへの固定ゲートを維持します。
資源ワールド(Overworld / Nether / End)の管理。
com.example.rankingplugin.dimensiondimension/ResourceWorldManager.javaclass資源ワールド(Overworld / Nether / End)の管理。 特に「岩盤ゲート前へ確実に出す」ことを最優先に、 ゲート配置・月次リセット・安全テレポートを面で保証する。
資源ワールド再生、ゲート再構築、安全テレポート、月次リセット、戻り位置保存までを持ち、「事故らない資源ワールド」を保証する責務が集中しています。
ResourceWorldManagersetupWorldsrefreshGateLocationsensureStaticGatescomputePortalDestinationfindSafeArrivalscheduleMonthlyResetresetAllResourceWorldsどの world をメイン扱いするかを決め、そこから資源ワールドへの固定ゲートを維持します。
PlayerPortalEvent と TeleportEvent の両方を保険で拾い、安全な位置へ誘導します。プレイヤー事故防止の中心です。
定期リセット前に人を避難させ、ワールドをアンロード/削除して再生成します。大きな運用責務です。
資源へ入る前の位置をファイルへ保存し、帰還時の不整合を防ぎます。
ResourceWorldManagersetupWorldsrefreshGateLocationsensureStaticGatesscheduleGateHealingscheduleMonthlyResetロード直後に世界そのものと導線を整え、その後で自己修復とリセット予約を点灯します。起動後すぐゲートが欠けるときはこの順です。
computePortalDestinationfindSafeArrivalcreateEmergencyPlatformapplyTeleportSafety送る先のワールドを決めるだけでなく、立てる足場まで保証するのがこのクラスの特徴です。岩盤内・虚空落下の対策はここにあります。
scheduleMonthlyResetevacuatePlayersFromResourceWorldsunloadAndDeleteWorldsetupWorldsrefreshGateLocationsensureStaticGates人を避難させてから世界を消し、最後にゲートと着地点を再構築します。プレイヤーが巻き込まれる不具合は避難順序を確認してください。
| Signature | 説明 | 主要呼び出し |
|---|---|---|
public ResourceWorldManager(JavaPlugin plugin) | 依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。 | getDataFolder → exists → mkdirs → getPluginManager → registerEvents → setupWorlds |
| Name | Visibility | Kind | 説明 |
|---|---|---|---|
| ResourceWorldManager | public | コンストラクタ | 依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。 |
| resolveMainWorld | private | メソッド | resolveMainWorld の主要処理を担当します。 |
| getMainWorldName | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| getMainLevelName | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| isMainWorld | private | メソッド | 条件判定を行い、後続処理の分岐に使える真偽値を返します。 |
| isForbiddenMainGateWorld | private | メソッド | 条件判定を行い、後続処理の分岐に使える真偽値を返します。 |
| isResourceGateWorld | private | メソッド | 条件判定を行い、後続処理の分岐に使える真偽値を返します。 |
| isExplicitlyExcludedMainGateWorld | private | メソッド | 条件判定を行い、後続処理の分岐に使える真偽値を返します。 |
| isCandidateMainWorld | private | メソッド | 条件判定を行い、後続処理の分岐に使える真偽値を返します。 |
| hasGateStructure | private | メソッド | 条件判定を行い、後続処理の分岐に使える真偽値を返します。 |
| forceMainGateToWorld | private | メソッド | forceMainGateToWorld の主要処理を担当します。 |
| ensureAllCandidateMainWorldGates | private | メソッド | 必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。 |
| cleanupExcludedMainGateArtifacts | private | メソッド | cleanupExcludedMainGateArtifacts の主要処理を担当します。 |
| removeGateSite | private | メソッド | 対象データや登録状態を削除・解除します。 |
| scheduleGateHealing | private | メソッド | scheduleGateHealing の主要処理を担当します。 |
| refreshGateLocations | private | メソッド | refreshGateLocations の主要処理を担当します。 |
| getMainGateLoc | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| getResourceGateLoc | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| computeGateOrigin | private | メソッド | ワールドのスポーン基準からゲート原点を決める。 |
| findGateGroundY | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| isBadGateGround | private | メソッド | 条件判定を行い、後続処理の分岐に使える真偽値を返します。 |
| ensureStaticGates | private | メソッド | 必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。 |
| ensureGateSite | private | メソッド | 岩盤ゲート周辺を必ず整地し、 「前面プラットフォーム + クリア空間 + ゲート枠」を強制的に揃える。 |
| isWithinGate | private | メソッド | 条件判定を行い、後続処理の分岐に使える真偽値を返します。 |
| gateFrontSpawn | private | メソッド | ゲートの前面プラットフォーム中央へ確実に出す。 |
| ensureWorldLoaded | private | メソッド | 必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。 |
| applyWorldSettings | private | メソッド | applyWorldSettings の主要処理を担当します。 |
| setupWorlds | private | メソッド | 初期化と各種登録を行い、機能を有効化します。 |
| ensureEndWorldState | private | メソッド | 必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。 |
| ensureFallbackEndExit | private | メソッド | 必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。 |
| onServerLoad | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onWorldLoad | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onJoin | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onChangedWorld | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onPlayerMove | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onPortal | public | イベント処理 | イベント発生時の分岐と後続処理を担当します。 |
| onTeleport | public | イベント処理 | Paper/一部環境で PlayerPortalEvent が飛ばないケースの保険。 |
| computePortalDestination | private | メソッド | computePortalDestination の主要処理を担当します。 |
| findSafeArrival | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| createEmergencyPlatform | private | メソッド | createEmergencyPlatform の主要処理を担当します。 |
| scheduleMonthlyReset | private | メソッド | scheduleMonthlyReset の主要処理を担当します。 |
| resetAllResourceWorlds | private | メソッド | resetAllResourceWorlds の主要処理を担当します。 |
| evacuatePlayersFromResourceWorlds | private | メソッド | evacuatePlayersFromResourceWorlds の主要処理を担当します。 |
| unloadAndDeleteWorld | private | メソッド | unloadAndDeleteWorld の主要処理を担当します。 |
| deleteFolder | private | メソッド | 対象データや登録状態を削除・解除します。 |
| saveBackLocation | private | メソッド | 状態を永続化または更新し、最新状態へ反映します。 |
| loadBackLocation | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| clearBackLocation | private | メソッド | clearBackLocation の主要処理を担当します。 |
| sanitizeBackLocation | private | メソッド | sanitizeBackLocation の主要処理を担当します。 |
| ensureSafeLocation | private | メソッド | 必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。 |
| findSafeNear | private | メソッド | 必要な状態を取得し、呼び出し側で利用しやすい形へ返します。 |
| isSafeStand | private | メソッド | 条件判定を行い、後続処理の分岐に使える真偽値を返します。 |
| applyTeleportSafety | private | メソッド | applyTeleportSafety の主要処理を担当します。 |
public ResourceWorldManager(JavaPlugin plugin)依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
JavaPlugin pluginなし
private World resolveMainWorld()resolveMainWorld の主要処理を担当します。
なし
private String getMainWorldName()必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
なし
private String getMainLevelName()必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
なし
private boolean isMainWorld(World world)条件判定を行い、後続処理の分岐に使える真偽値を返します。
World worldなし
private boolean isForbiddenMainGateWorld(World world)条件判定を行い、後続処理の分岐に使える真偽値を返します。
World worldなし
private boolean isResourceGateWorld(World world)条件判定を行い、後続処理の分岐に使える真偽値を返します。
World worldなし
private boolean isExplicitlyExcludedMainGateWorld(World world)条件判定を行い、後続処理の分岐に使える真偽値を返します。
World worldなし
private boolean isCandidateMainWorld(World world)条件判定を行い、後続処理の分岐に使える真偽値を返します。
World worldなし
private boolean hasGateStructure(Location origin)条件判定を行い、後続処理の分岐に使える真偽値を返します。
Location originなし
private synchronized void forceMainGateToWorld(World world, String reason)forceMainGateToWorld の主要処理を担当します。
World worldString reasonなし
private void ensureAllCandidateMainWorldGates(String reason)必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。
String reasonなし
private void cleanupExcludedMainGateArtifacts()cleanupExcludedMainGateArtifacts の主要処理を担当します。
なし
private void removeGateSite(Location origin)対象データや登録状態を削除・解除します。
Location originなし
private void scheduleGateHealing()scheduleGateHealing の主要処理を担当します。
なし
private synchronized void refreshGateLocations()refreshGateLocations の主要処理を担当します。
なし
private Location getMainGateLoc()必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
なし
private Location getResourceGateLoc()必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
なし
private Location computeGateOrigin(World world)ワールドのスポーン基準からゲート原点を決める。
World worldなし
private int findGateGroundY(World world, int x, int z)必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
World worldint xint zなし
private boolean isBadGateGround(Material material)条件判定を行い、後続処理の分岐に使える真偽値を返します。
Material materialなし
private void ensureStaticGates()必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。
なし
private void ensureGateSite(Location origin, Material frameMaterial)岩盤ゲート周辺を必ず整地し、 「前面プラットフォーム + クリア空間 + ゲート枠」を強制的に揃える。
Location originMaterial frameMaterialなし
private boolean isWithinGate(Location origin, Location pos)条件判定を行い、後続処理の分岐に使える真偽値を返します。
Location originLocation posなし
private Location gateFrontSpawn(Location gateOrigin)ゲートの前面プラットフォーム中央へ確実に出す。
Location gateOriginなし
private World ensureWorldLoaded(String name, World.Environment env)必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。
String nameWorld.Environment envなし
private void applyWorldSettings(World world, Difficulty diff)applyWorldSettings の主要処理を担当します。
World worldDifficulty diffなし
private void setupWorlds()初期化と各種登録を行い、機能を有効化します。
なし
private void ensureEndWorldState(World end)必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。
World endなし
private void ensureFallbackEndExit(World end)必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。
World endなし
public void onServerLoad(ServerLoadEvent e)イベント発生時の分岐と後続処理を担当します。
ServerLoadEvent eなし
public void onWorldLoad(WorldLoadEvent e)イベント発生時の分岐と後続処理を担当します。
WorldLoadEvent eなし
public void onJoin(PlayerJoinEvent e)イベント発生時の分岐と後続処理を担当します。
PlayerJoinEvent eなし
public void onChangedWorld(PlayerChangedWorldEvent e)イベント発生時の分岐と後続処理を担当します。
PlayerChangedWorldEvent eなし
public void onPlayerMove(PlayerMoveEvent e)イベント発生時の分岐と後続処理を担当します。
PlayerMoveEvent eなし
public void onPortal(PlayerPortalEvent e)イベント発生時の分岐と後続処理を担当します。
PlayerPortalEvent eなし
public void onTeleport(PlayerTeleportEvent e)Paper/一部環境で PlayerPortalEvent が飛ばないケースの保険。
PlayerTeleportEvent eなし
private Location computePortalDestination(Location from, PlayerTeleportEvent.TeleportCause cause)computePortalDestination の主要処理を担当します。
Location fromPlayerTeleportEvent.TeleportCause causeなし
private Location findSafeArrival(World world, double targetX, double targetZ, int preferredY)必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
World worlddouble targetXdouble targetZint preferredYなし
private Location createEmergencyPlatform(World world, int x, int z)createEmergencyPlatform の主要処理を担当します。
World worldint xint zなし
private void scheduleMonthlyReset()scheduleMonthlyReset の主要処理を担当します。
なし
private synchronized void resetAllResourceWorlds()resetAllResourceWorlds の主要処理を担当します。
なし
private void evacuatePlayersFromResourceWorlds()evacuatePlayersFromResourceWorlds の主要処理を担当します。
なし
private void unloadAndDeleteWorld(String name)unloadAndDeleteWorld の主要処理を担当します。
String nameなし
private void deleteFolder(File folder)対象データや登録状態を削除・解除します。
File folderなし
private void saveBackLocation(Player p, Location loc)状態を永続化または更新し、最新状態へ反映します。
Player pLocation locなし
private Location loadBackLocation(Player p)必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
Player pなし
private void clearBackLocation(Player p)clearBackLocation の主要処理を担当します。
Player pなし
private Location sanitizeBackLocation(Location loc)sanitizeBackLocation の主要処理を担当します。
Location locなし
private Location ensureSafeLocation(Location base)必要なテーブル・状態・前提条件が揃っているかを確認し、不足分を補います。
Location baseなし
private Location findSafeNear(World w, Location base)必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
World wLocation baseなし
private boolean isSafeStand(World w, Location loc)条件判定を行い、後続処理の分岐に使える真偽値を返します。
World wLocation locなし
private void applyTeleportSafety(Player p)applyTeleportSafety の主要処理を担当します。
Player pなし
ResourceWorldManager → getDataFolder → exists → mkdirs → getPluginManager → registerEventsonChangedWorld → getScheduler → runTask → getPlayer → getWorld → isCandidateMainWorldonJoin → getScheduler → runTask → getPlayer → getWorld → isCandidateMainWorldonPlayerMove → getMainGateLoc → getResourceGateLoc → getTo → getWorld → getPlayeronPortal → getCause → getFrom → getWorld → getPlayer → computePortalDestinationonServerLoad → getScheduler → runTask → setupWorlds → refreshGateLocations → ensureStaticGates