3.9 KiB
Portails Sanctuary — contrat v2
I Like To Move It possède le transport et les liens. Sanctuary possède les identifiants et les générateurs. Le schéma v2 ajoute une destination dépendant de la topologie enregistrée du monde ; les routes fixes v1 restent lisibles.
Définition de route
Une route est un JSON sous data/<namespace>/sanctuary_portal/<id>.json :
{
"schema_version": 2,
"source_dimension": "minecraft:overworld",
"destination_dimension": "sanctuary:alpha",
"destination_resolver": "fixed",
"frame_blocks": ["minecraft:mossy_cobblestone"],
"preferred_frame_block": "minecraft:mossy_cobblestone",
"activation_items": ["minecraft:flint_and_steel"],
"coordinate_scale": 1.0,
"arrival": { "type": "surface" },
"priority": 100
}
frame_blocksaccepte plusieurs blocs, ce qui permet les cadres mixtes.preferred_frame_blocksert uniquement lors de la création de la moitié distante.activation_itemspermet d'ajouter d'autres activateurs sans changer Java.coordinate_scaletransforme X/Z vers la destination et son inverse est appliqué au retour.destination_resolvervautfixedpar défaut.overworld_pairest réservé à la paire principale et résout sa destination depuissanctuary:world_profile.arrival.typevautsurface,matched_youfixed_y; ce dernier exigearrival.y.prioritydépartage deux routes acceptant le même cadre.
Les neuf routes historiques restent déclarées pour la compatibilité. Depuis l'alpha.219, trois routes sont actives : terre vers la paire Sanctuary/Overworld, pierre vers sanctuary:caverns et cobblestone moussue vers sanctuary:alpha. Sheep Land, Skeleton Waste, Lost City, Painted Canyons, Breaker Sea et Laputa restent réservées mais ne sont pas chargeables.
La route en terre est la seule route v2 dynamique. Dans le profil Sanctuary, elle relie minecraft:overworld à sanctuary:overworld. Dans le profil Overworld, elle relie minecraft:overworld à sanctuary:main. Le choix appartient à la sauvegarde, jamais à une préférence cliente.
Persistance et cycle de vie
iliketomoveit:portal_links est un SavedData global de version 1, stocké avec le monde principal. Chaque moitié conserve un UUID, sa route, sa dimension, l'origine et l'axe du cadre, son état actif et l'UUID de sa moitié liée.
- L'allumage réactive l'identité déjà connue au même cadre ou crée un endpoint.
- La première traversée réutilise une moitié libre, sinon elle crée une arrivée sûre puis lie les deux UUID.
- La destruction d'une moitié la désactive et délie l'autre.
- Reconstruire le même cadre réactive son endpoint; la traversée suivante régénère un lien.
- Une destination absente refuse la traversée proprement. Elle ne crée aucune dimension et n'endommage pas la sauvegarde.
La route Alpha exige un cadre extérieur de 4 × 5 avec un intérieur vide de
2 × 3, entièrement en cobblestone moussue, puis un briquet. Le serveur valide
le cadre, l'activateur et la présence de sanctuary:alpha avant de l'allumer.
Sa première moitié distante utilise l'arrivée sûre calculée par l'API publique
de Sanctuary, hors de la maison Indev ; le client ne choisit ni la destination
ni les coordonnées. L'Atlas découvre le bloc de portail actif comme les autres
points d'intérêt locaux.
Le bloc intérieur actif est iliketomoveit:portal. Les neuf anciens blocs portals:*_portal restent enregistrés comme compatibilité de lecture; une première utilisation les rattache au nouvel index.
État des générateurs
Le générateur principal Sanctuary et sa paire Overworld sont actifs depuis l'alpha.71. Caverns et Alpha sont également générés ; Alpha est le monde Indev fini 128 × 128 × 64 possédé par Sanctuary. Sheep Land, Skeleton Waste, Lost City, Painted Canyons, Breaker Sea et Laputa restent réservés mais non générés. Une traversée vers une destination absente est refusée proprement dès l'allumage.