Saltar a contenido

Client Interactions

Interacciones que se ejecutan y verifican en el cliente, sincronizándose con el servidor.

Tipos de Client Interactions

DestroyBlockInteraction

Destruye un bloque objetivo.

Ubicación: com.hypixel.hytale.server.core.modules.interaction.interaction.config.client.DestroyBlockInteraction.java

public class DestroyBlockInteraction extends SimpleInstantInteraction {
    protected void firstRun(InteractionType type,
                           InteractionContext context,
                           CooldownHandler cooldownHandler) {
        BlockPosition blockPosition = context.getTargetBlock();
        if (blockPosition != null) {
            BlockHarvestUtils.performBlockBreak(...);
        }
    }
}

PlaceBlockInteraction

Coloca un bloque en la posición objetivo.

public class PlaceBlockInteraction extends SimpleInstantInteraction {
    protected void firstRun(...) {
        // Colocar bloque
    }
}

UseEntityInteraction

Interactúa con una entidad (abrir interfaz, montar, etc.).

public class UseEntityInteraction extends SimpleInstantInteraction {
    protected void firstRun(...) {
        // Usar entidad
    }
}

ChargingInteraction

Interacción progresiva que se carga con el tiempo (ej: arco).

public class ChargingInteraction extends Interaction {
    float chargeTime;  // Tiempo para carga completa

    protected void tick0(...) {
        float charge = time / chargeTime;
        // Actualizar carga
    }
}

Ejemplo de Uso

// Definir interacción personalizada
public class MiInteraccionCliente extends SimpleInstantInteraction {
    @Override
    protected void firstRun(InteractionType type,
                           InteractionContext ctx,
                           CooldownHandler cooldown) {
        // Obtener datos del contexto
        BlockPosition block = ctx.getTargetBlock();
        Ref<EntityStore> entity = ctx.getMetaObject(Interaction.TARGET_ENTITY);

        // Ejecutar lógica
        if (block != null) {
            processBlock(block, ctx);
        }

        // Marcar como completada
        ctx.getState().state = InteractionState.Finished;
    }
}

Ver También