Files
Documentation/content/world/portals/portal-commands.fr.md
2026-01-20 20:33:59 +01:00

225 lines
6.0 KiB
Markdown

---
title: Commandes Portail
type: docs
weight: 3
---
Commandes pour gerer les portails, fragments et evenements du vide.
**Package:** `com.hypixel.hytale.builtin.portals.commands`
## Commandes Joueur
### /leave
Quitter le monde portail actuel et retourner au monde d'origine.
```
/leave
```
**Comportement:**
- Fonctionne uniquement dans un monde portail
- Retire la malediction de tous les items avant de partir
- Teleporte le joueur vers l'emplacement du dispositif portail
**Implementation:**
```java
public class LeaveCommand extends AbstractPlayerCommand {
@Override
protected void execute(CommandContext context, Store<EntityStore> store,
Ref<EntityStore> ref, PlayerRef playerRef, World world) {
PortalWorld portalWorld = store.getResource(PortalWorld.getResourceType());
if (!portalWorld.exists()) {
playerRef.sendMessage(MESSAGE_NOT_IN_PORTAL);
return;
}
// Retirer malediction de tous items
CursedItems.uncurseAll(player.getInventory().getCombinedEverything());
// Sortir de l'instance
InstancesPlugin.exitInstance(ref, store);
}
}
```
## Commandes Fragment
### /fragment
Commande parente pour gestion fragments.
```
/fragment <sous-commande>
```
| Sous-commande | Description |
|---------------|-------------|
| `timer` | Modifier temps restant fragment |
### /fragment timer
Definir le temps restant pour le fragment portail actuel.
```
/fragment timer <secondes>
```
**Arguments:**
| Argument | Type | Description |
|----------|------|-------------|
| `secondes` | INTEGER | Nouveau temps restant en secondes |
**Exemple:**
```
/fragment timer 300 # Definir 5 minutes restantes
/fragment timer 60 # Definir 1 minute restante
```
**Implementation:**
```java
public class TimerFragmentCommand extends PortalWorldCommandBase {
private final RequiredArg<Integer> remainingSecondsArg;
@Override
protected void execute(CommandContext context, World world,
PortalWorld portalWorld, Store<EntityStore> store) {
int before = (int) portalWorld.getRemainingSeconds(world);
int desired = remainingSecondsArg.get(context);
portalWorld.setRemainingSeconds(world, desired);
// Rapporte: "Change de {before} a {after}"
}
}
```
## Commandes Evenement Vide
### /voidevent
Commande parente pour gestion evenement vide.
```
/voidevent <sous-commande>
```
| Sous-commande | Description |
|---------------|-------------|
| `start` | Demarrer un evenement vide |
### /voidevent start
Demarrer un evenement invasion du vide dans le monde actuel.
```
/voidevent start [--override]
```
**Flags:**
| Flag | Description |
|------|-------------|
| `--override` | Forcer demarrage meme si pas dans monde portail |
**Comportement:**
- Si deja dans monde portail avec evenement vide actif: echoue
- Si pas dans monde portail sans `--override`: echoue
- Avec `--override`: cree configuration monde portail temporaire
- Met temps restant a 1 seconde pour declencher evenement vide
**Implementation:**
```java
public class StartVoidEventCommand extends AbstractWorldCommand {
private final FlagArg overrideWorld;
@Override
protected void execute(CommandContext context, World world,
Store<EntityStore> store) {
PortalWorld portalWorld = store.getResource(PortalWorld.getResourceType());
// Verifier si deja en cours
if (portalWorld.exists() && portalWorld.isVoidEventActive()) {
context.sendMessage("Evenement vide deja en cours");
return;
}
// Si pas dans monde portail, requiert --override
if (!portalWorld.exists()) {
if (!overrideWorld.get(context)) {
context.sendMessage("Pas dans monde portail");
return;
}
// Configurer monde portail temporaire
portalWorld.init(portalType, timeLimit, removalCondition, config);
}
// Declencher evenement vide en mettant timer a 1 seconde
portalWorld.setRemainingSeconds(world, 1.0);
}
}
```
## Commandes Utilitaires
### /cursehelditem
Marquer l'item tenu comme maudit (commande debug/test).
```
/cursehelditem
```
**Comportement:**
- Ajoute marqueur malediction a l'item en main principale
- Items maudits sont perdus quand joueur meurt dans monde portail
## Classes de Base Commandes
### PortalWorldCommandBase
Classe de base pour commandes necessitant un monde portail:
```java
public abstract class PortalWorldCommandBase extends AbstractWorldCommand {
@Override
protected final void execute(CommandContext context, World world,
Store<EntityStore> store) {
PortalWorld portalWorld = store.getResource(PortalWorld.getResourceType());
if (!portalWorld.exists()) {
context.sendMessage(MESSAGE_NOT_IN_PORTAL);
return;
}
execute(context, world, portalWorld, store);
}
protected abstract void execute(CommandContext context, World world,
PortalWorld portalWorld,
Store<EntityStore> store);
}
```
## Enregistrement Commandes
Les commandes sont enregistrees dans setup PortalsPlugin:
```java
this.getCommandRegistry().registerCommand(new LeaveCommand());
this.getCommandRegistry().registerCommand(new CursedHeldItemCommand());
this.getCommandRegistry().registerCommand(new VoidEventCommands());
this.getCommandRegistry().registerCommand(new FragmentCommands());
```
## Messages
Les commandes portail utilisent des cles de traduction pour les messages:
| Cle | Description |
|-----|-------------|
| `server.commands.leave.notInPortal` | Pas dans monde portail |
| `server.commands.leave.uncursedTemp` | Items ont ete decursifies |
| `server.commands.portals.notInPortal` | Pas dans monde portail |
| `server.commands.voidevent.start.alreadyRunning` | Evenement vide actif |
| `server.commands.voidevent.start.success` | Evenement vide demarre |
| `server.commands.fragment.timer.success` | Timer modifie |