Sobrescrita de Comandos
Interceptar, modificar ou substituir comandos existentes
O sistema de Sobrescrita de Comandos permite interceptar, modificar ou substituir completamente comandos existentes de outros plugins ou do PocketMine-MP.
Tipos de Override
1. Override Completo (Replace)
Substitui completamente um comando existente pela sua implementação:
override command /help:
permission: lazuli.override.help
send "&6Custom Help Menu" to sender
send "&7- /spawn - Teleport to spawn" to sender
send "&7- /kit - Get a starter kit" to sender
send "&7- /shop - Open the shop" to sender2. Before Hook
Executa código ANTES do comando original. Pode cancelar a execução do original:
before command /tp:
# Log tentativas de teleporte
log "&7[TP] %player% is trying to teleport"
# Opcionalmente cancelar
if player doesn't have permission "tp.allowed":
send "&cYou cannot teleport!" to player
cancel command3. After Hook
Executa código DEPOIS do comando original completar:
after command /give:
# Log de itens dados
log "&7[GIVE] Command completed by %sender%"
broadcast "&a%sender% just gave items!"Efeitos Disponíveis
execute original command
Dentro de um override, executa a implementação original do comando:
override command /help:
send "&6=== Custom Header ===" to sender
execute original command
send "&6=== Custom Footer ===" to sendercancel command
Em um hook before, previne o comando original de executar:
before command /stop:
if player doesn't have permission "admin.stop":
send "&cOnly admins can stop the server!" to player
cancel commandVariáveis de Contexto
Dentro de command overrides, você tem acesso a estas variáveis:
| Variável | Descrição |
|---|---|
| %sender% | Quem executou (player ou console) |
| %player% | O player (se sender for player) |
| %player-name% | Nome do player |
| %command% | Nome do comando |
| %args% | Array de todos os argumentos |
| %args-string% | Todos argumentos como string |
| %arg-1%, %arg-2% | Argumentos individuais |
| %arg-count% | Número de argumentos |
Prioridade
Before e after hooks podem especificar prioridade (maior = executa primeiro):
before command /spawn with priority 100:
# Executa primeiro
log "High priority hook"
before command /spawn with priority 10:
# Executa depois
log "Low priority hook"Prioridade padrão é 50.
Exemplos Práticos
Sistema de Help Customizado
override command /help:
permission: lazuli.help
send "&6&l=== Server Help ===" to sender
send "" to sender
send "&e/spawn &7- Teleport to spawn" to sender
send "&e/home &7- Teleport to your home" to sender
send "&e/shop &7- Open the shop menu" to sender
send "&e/kit &7- Get a starter kit" to sender
send "" to sender
send "&6&l===================" to senderSistema de Cooldown
before command /kit:
# Verificar cooldown
if {kit_cooldown::%player-name%} is set:
set {_remaining} to {kit_cooldown::%player-name%}
if {_remaining} > now:
send "&cPlease wait before using /kit again!" to player
cancel command
# Definir cooldown de 5 minutos
set {kit_cooldown::%player-name%} to now + 5 minutes
after command /kit:
log "&7[KIT] %player-name% used /kit"Proteção de Comandos Admin
before command /stop:
if sender is not op:
send "&cThis command requires operator status!" to sender
cancel command
else:
broadcast "&c&lServer shutting down in 10 seconds..."
wait 10 seconds
# Deixa o comando original executar
before command /ban:
# Log todas tentativas de ban
log "&c[BAN] %sender% is banning with args: %args-string%"
after command /ban:
# Anunciar ban
broadcast "&c%arg-1% has been banned!"Wrapper com Original
override command /gamemode <mode>:
permission: lazuli.gamemode
send "&7Changing gamemode..." to player
execute original command
send "&aGamemode changed successfully!" to playerAutocomplete de Argumentos
Lazuli automaticamente fornece sugestões de autocomplete no cliente. Use type hints para melhor autocomplete:
command /heal <player:target> [amount:int]:
trigger:
heal %arg-1% by %arg-2% hearts
override command /warp <name:string>:
send "Warping to %arg-1%..." to playerType Hints Suportados
| Tipo | Descrição | Display no Cliente |
|---|---|---|
| target / player | Seletor de player | Mostra nomes de players |
| int / number | Input inteiro | Teclado numérico |
| float / decimal | Input decimal | Numérico com decimais |
| bool / boolean | True/False | Mostra true/false |
| text / message | Input de texto | Campo de texto |
| position / pos | Coordenadas | Seletor de posição |
Notas Importantes
- Overrides aplicam a todos os comandos, incluindo de outros plugins
- Múltiplos hooks
beforepodem existir (ordenados por prioridade) - Múltiplos hooks
afterpodem existir (ordenados por prioridade) - Apenas um override completo pode existir por comando
- Use
cancel commandapenas em hooks before - Use
execute original commandapenas em overrides completos
Cuidado
/stop, /opdevem ser feitos com cuidado para não quebrar a funcionalidade do servidor.