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

6.0 KiB

title, type, weight
title type weight
Commandes Portail docs 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:

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:

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:

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:

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:

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