24 lines
1.7 KiB
Markdown
24 lines
1.7 KiB
Markdown
# Spec: Proteção de Itens no Vácuo (Void Protection)
|
|
|
|
## 1. Problema e Motivação
|
|
Quando um jogador morre no vácuo (caindo no The End, Nether ou Overworld profundo), todos os itens e armaduras caem abaixo de Y = -64 e são excluídos pelo motor do Minecraft, impossibilitando qualquer recuperação legítima e gerando frustração.
|
|
|
|
## 2. Solução
|
|
Implementar o módulo `salvavoid` no plugin Canalhandia:
|
|
1. **Detecção:** Identifica mortes por vácuo (`DamageCause.VOID` ou coordenada Y abaixo da altura mínima do mundo).
|
|
2. **Busca de Terreno Seguro:** Procura o bloco sólido mais próximo da posição horizontal onde o jogador caiu (raio configurável, padrão 32 blocos).
|
|
3. **Opção A (Baú de Resgate):** Se encontrar terreno seguro:
|
|
- Cria um baú (ou baú duplo se necessário) sobre o bloco seguro.
|
|
- Guarda todos os itens e armaduras do jogador dentro do baú.
|
|
- Limpa os drops do evento de morte (para não cair no vácuo).
|
|
- Informa ao jogador a localização exata (coordenadas X, Y, Z) do baú no chat.
|
|
4. **Opção B (Preservação Direta no Inventário):** Se NÃO houver nenhum bloco seguro por perto (ex: caiu no meio do vácuo infinito do End):
|
|
- Preserva o inventário e nível de XP do jogador (`keepInventory = true`, `keepLevel = true`).
|
|
- Limpa os drops do evento de morte.
|
|
- Envia mensagem confortando o jogador e avisando que os itens foram mantidos no inventário.
|
|
|
|
## 3. Critérios de Aceitação
|
|
- Módulo integrado ao `/canalhandia modulo salvavoid <on|off>`.
|
|
- Configurações em `Settings.java`: `voidProtectionEnabled`, `voidProtectionRadius`, `voidProtectionKeepXp`.
|
|
- Testes unitários cobrindo detecção de morte no vácuo, cálculo de busca e empacotamento de inventário.
|