Init
This commit is contained in:
147
content/world/portals/_index.fr.md
Normal file
147
content/world/portals/_index.fr.md
Normal 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 >}}
|
||||
Reference in New Issue
Block a user