This commit is contained in:
2026-01-20 20:33:59 +01:00
commit b16a40e431
583 changed files with 87339 additions and 0 deletions

View File

@@ -0,0 +1,147 @@
---
title: Portails
type: docs
weight: 6
---
Le systeme de portails fournit des mecaniques de voyage inter-dimensionnel entre les mondes, incluant les dispositifs de portail, les evenements du vide et les instances de fragment.
**Package:** `com.hypixel.hytale.builtin.portals`
## Architecture
```
Systeme Portails
├── Composants
│ ├── PortalDevice - Composant bloc portail
│ ├── VoidEvent - Evenement invasion du vide
│ └── VoidSpawner - Entite spawner du vide
├── Ressources
│ └── PortalWorld - Donnees monde portail
├── Interactions
│ ├── EnterPortalInteraction - Entrer portail
│ └── ReturnPortalInteraction - Retour du portail
├── Systemes
│ ├── PortalTrackerSystems - Suivi UI
│ ├── PortalInvalidDestinationSystem - Validation destination
│ ├── VoidEventStagesSystem - Progression evenement vide
│ └── VoidSpawnerSystems - Gestion spawners
└── Commandes
├── FragmentCommands - Gestion fragments
├── LeaveCommand - Quitter monde portail
└── VoidEventCommands - Controle evenement vide
```
## Concepts Cles
### Dispositif Portail
Un dispositif de portail est une entite basee sur un bloc qui peut transporter les joueurs vers des mondes fragments:
```java
// PortalDevice est un composant ChunkStore
PortalDevice portal = BlockModule.get().getComponent(
PortalDevice.getComponentType(),
world, x, y, z
);
// Obtenir monde de destination
World targetWorld = portal.getDestinationWorld();
```
### Monde Portail
Un monde portail est une instance temporaire creee quand les joueurs activent un portail:
```java
// PortalWorld est une ressource EntityStore
PortalWorld portalWorld = store.getResource(PortalWorld.getResourceType());
// Verifier si c'est un monde portail
if (portalWorld.exists()) {
Transform spawn = portalWorld.getSpawnPoint();
double remaining = portalWorld.getRemainingSeconds(world);
}
```
### Instances Fragment
Les fragments sont des mondes temporaires avec:
- Limite de temps avant fermeture automatique
- Point de spawn pour les joueurs revenant
- Suivi des morts (les joueurs morts ne peuvent pas re-entrer)
- Evenements d'invasion du vide optionnels
## Fonctionnalites Cles
### Etats du Portail
Les portails ont trois etats visuels:
- **Eteint** - Portail inactif
- **Invocation** - Instance en creation
- **Actif** - Portail pret pour le voyage
### Limites de Temps
Les mondes portails ont des limites de temps configurables:
```java
int totalTime = portalWorld.getTimeLimitSeconds();
double elapsed = portalWorld.getElapsedSeconds(world);
double remaining = portalWorld.getRemainingSeconds(world);
```
### Suivi des Morts
Les joueurs morts dans un monde portail ne peuvent pas re-entrer:
```java
Set<UUID> deaths = portalWorld.getDiedInWorld();
if (deaths.contains(playerUuid)) {
// Joueur mort ici - afficher etat "DIED_IN_WORLD"
}
```
### Items Maudits
Les items peuvent devenir "maudits" dans les mondes portails et sont retires a la mort:
```java
// Retirer malediction des items au retour
CursedItems.uncurseAll(inventory.getCombinedEverything());
```
## Acces au Plugin
```java
PortalsPlugin portals = PortalsPlugin.getInstance();
// Types de composants
ComponentType<ChunkStore, PortalDevice> portalDeviceType =
portals.getPortalDeviceComponentType();
ComponentType<EntityStore, VoidEvent> voidEventType =
portals.getVoidEventComponentType();
ComponentType<EntityStore, VoidSpawner> voidSpawnerType =
portals.getVoidPortalComponentType();
// Type de ressource
ResourceType<EntityStore, PortalWorld> portalWorldType =
portals.getPortalResourceType();
```
## Limite Fragments Concurrents
Le systeme limite les fragments portails concurrents:
```java
public static final int MAX_CONCURRENT_FRAGMENTS = 4;
int active = portals.countActiveFragments();
if (active >= MAX_CONCURRENT_FRAGMENTS) {
// Impossible de creer nouveaux fragments
}
```
## Sujets Connexes
{{< cards >}}
{{< card link="portal-components" title="Composants Portail" subtitle="Composants PortalDevice, VoidEvent" >}}
{{< card link="portal-systems" title="Systemes Portail" subtitle="Systemes ECS pour logique portail" >}}
{{< card link="portal-commands" title="Commandes Portail" subtitle="Commandes admin et joueur" >}}
{{< /cards >}}