This update is for the beta fix of EssentialsX Migrator Bug 1 Wrong world key (homes & warps) EssentialsX's LocationTypeSerializer writes two separate keys:
world: "550e8400-e29b-41d4-a716-446655440000" # world UUID AND NOT the name
world-name: "world" # human-readable name
My original code read cfg.getString(path + ".world") and passed the UUID string directly to Bukkit.getWorld(String), which looks up by name so it would silently return null for every home and warp, and everything would be skipped.
Bug 2 — Warp name from file vs. from key EssentialsX sanitises warp filenames ("My Home" → my-home.yml). The canonical name is stored in a name: key inside the file. The old code derived the warp name from the filename, which would produce wrong names for warps with spaces or special characters.