yTerrenosBlocksAddon
Sistema de blocos para criação e expansão de terrenos no yTerrenos.
Visão geral
O yTerrenosBlocksAddon habilita o sistema de blocos do yTerrenos. Quando o addon está ativo, o plugin libera comandos e eventos extras para trabalhar com blocos como uma moeda interna usada na criação e expansão de terrenos.
No código, a ativação é detectada por:
BukkitBootstrap.isActivated("yTerrenosBlocksAddon")Quando essa verificação retorna true, o yTerrenos registra:
- Comando
/blocks, com aliases configuráveis. - Listener de item de blocos ativável.
- Ferramenta de seleção para criar e expandir terrenos visualmente.
- Limpeza automática de previews de seleção ao sair, trocar item ou trocar mão.
Recursos habilitados
Sistema de blocos
Cada jogador possui um saldo de blocos armazenado no objeto PlayerTerreno.
Esse saldo pode ser usado para:
- Consultar quantos blocos o jogador possui.
- Enviar blocos para outros jogadores.
- Receber blocos via item ativável.
- Criar terrenos usando a ferramenta de seleção.
- Expandir terrenos existentes usando a ferramenta de seleção.
Quando um terreno é criado pela ferramenta com selection-tool.use-blocks: true, o custo é:
tamanho * tamanhoExemplo: um terreno 16x16 custa 256 blocos.
Quando um terreno é expandido pela ferramenta, o custo é incremental:
novo_tamanho^2 - tamanho_atual^2Item de blocos
O addon permite gerar um item físico que representa uma quantidade de blocos.
Ao clicar com o botão direito segurando o item, o jogador ativa os blocos e o valor é somado ao saldo dele.
Ao clicar com shift + botão direito, o jogador compacta todos os itens de blocos do inventário em um único item, somando os valores contidos neles.
O item é identificado por NBT:
yTerrenos-BlockFerramenta de seleção
A ferramenta de seleção permite criar ou expandir terrenos clicando em blocos do mundo.
Ela é entregue pelo comando:
/terreno tool
/terreno ferramenta
/terreno wandA ferramenta é identificada por NBT:
yTerrenos-SelectionToolFluxo para criar um terreno:
- O jogador pega a ferramenta com
/terreno tool. - Clica com botão direito no primeiro canto.
- Mira ou clica no segundo canto para gerar a pré-visualização.
- Clica dentro da área selecionada para confirmar a criação.
Fluxo para expandir um terreno:
- O jogador segura a ferramenta.
- Clica na borda de um terreno próprio.
- Seleciona o novo canto externo da área.
- Clica dentro da área expandida para confirmar.
Durante a seleção, o addon renderiza fake-blocks para mostrar o estado da área:
| Estado | Material usado |
|---|---|
| Área válida | selection-tool.preview-material |
| Área bloqueada | selection-tool.preview-material-blocked |
| Blocos insuficientes | selection-tool.preview-material-no-blocks |
O preview é limpo automaticamente quando o jogador:
- Sai do servidor.
- Troca o slot da hotbar segurando a ferramenta.
- Usa a tecla de troca de mão, quando suportado pela versão do servidor.
Comandos
O comando principal do sistema de blocos é configurado em commands.yml:
commands:
blocks: 'blocks|block|blocos|bloco'| Comando | Descrição | Permissão |
|---|---|---|
/blocks | Mostra o saldo de blocos do próprio jogador. | yterrenos.blocks.use |
/blocks top | Ver o ranking de blocos. | yterrenos.blocks.use |
/blocks <player> | Mostra o saldo de blocos de outro jogador online. | yterrenos.blocks.look |
/blocks enviar <player> <quantia> | Envia blocos do saldo do jogador para outro jogador online. | yterrenos.blocks.send |
/blocks add <player/all> <quantia> | Adiciona blocos ao saldo de um jogador online ou de todos os jogadores online. | yterrenos.blocks.add |
/blocks remove <player> <quantia> | Remove blocos do saldo de um jogador online. | yterrenos.blocks.remove |
/blocks set <player> <quantia> | Define o saldo de blocos de um jogador online. | yterrenos.blocks.set |
/blocks give <player/all> <quantia> | Entrega blocos em forma de item para um jogador online ou para todos os jogadores online. | yterrenos.blocks.give |
/blocks help | Mostra a ajuda do comando de blocos. | yterrenos.blocks.help |
/terreno tool | Entrega a ferramenta de seleção ao jogador. | yterrenos.tool |
Aliases do subcomando enviar:
sendAliases do subcomando add:
add
adicionarAliases do subcomando remove:
remove
removerAliases do subcomando set:
set
setarAliases do subcomando give:
giveAliases do subcomando help:
help
ajudaAliases do comando /terreno tool:
tool
ferramenta
wandRequisitos do /terreno tool:
- O executor precisa ser um jogador.
selection-tool.enabledprecisa estar ativo.- O inventário do jogador precisa ter espaço livre.
Configuração
commands.yml
Define o comando e aliases do sistema de blocos:
commands:
blocks: 'blocks|block|blocos|bloco'config.yml - item de blocos
Seção responsável pelo item ativável de blocos:
block:
material: '3173cb01a8185f4018e219c2e24c1f72140a7bace55aec93d5087b4d81860364'
name: '&b+{amount} Blocos'
lore:
- ''
- '&fQuantia: &b{amount}'
- ''
- '&7Clique com botao direito para ativar.'
- ''
- '&7Clique com shift + botao direito para compactar'
- '&7todos os seus blocos no inventario em 1 so.'
- ''Placeholder disponível:
{amount}config.yml - ferramenta de seleção
Seção responsável pela criação e expansão visual de terrenos:
selection-tool:
enabled: true
use-blocks: true
item:
material: 'DIAMOND_AXE'
name: '&6Ferramenta de Selecao'
lore:
- '&7Clique direito: Selecionar canto'
- '&7Dentro da area: Confirmar criacao'
preview-material: 'GLASS'
preview-material-blocked: 'REDSTONE_BLOCK'
preview-material-no-blocks: 'BEDROCK'Campos:
| Campo | Descrição |
|---|---|
enabled | Ativa ou desativa a ferramenta de seleção. |
use-blocks | Quando true, a ferramenta desconta blocos do saldo do jogador. |
item | Define o item entregue pelo comando /terreno tool. |
preview-material | Material usado na pré-visualização válida. |
preview-material-blocked | Material usado quando a área não pode ser usada. |
preview-material-no-blocks | Material usado quando o jogador não tem blocos suficientes. |
Quando use-blocks está como false, a criação e expansão passam a usar o fluxo normal de custo do yTerrenos, como buy-cost e demais regras internas.
Regras da ferramenta de seleção
Ao criar um terreno, a ferramenta respeita:
- Mundos permitidos em
general.allowed-worlds. - Permissão de mundo
yterrenos.terreno.world.<mundo>. - Tamanho mínimo em
general.terrain-min-size. - Tamanho máximo em
general.terrain-max-size. - Distância mínima em
general.terrain-min-distance. - Limites da world border.
- Saldo de blocos, quando
selection-tool.use-blocksestá ativo.
Ao expandir um terreno, a ferramenta respeita:
- Propriedade do terreno.
- Tamanho máximo configurado.
- Distância mínima de outros terrenos.
- Limites da world border.
- Saldo de blocos para o custo incremental.
Mensagens
As mensagens do addon ficam em messages.yml, dentro da seção chat.
Principais chaves:
selection-tool-off: '&cO sistema de ferramenta de selecao esta desativado.'
selection-tool-received: '&aVoce recebeu a Ferramenta de Selecao.'
selection-corner1: '&aCanto 1 definido em &f({x}, {y}, {z})&a.'
selection-corner2: '&aCanto 2 definido. Tamanho: &f{size}x{size} &a(&f{blocks} blocos&a). Clique dentro da area para confirmar.'
selection-confirm: '&aTerreno criado com sucesso via ferramenta de selecao.'
selection-cancelled: '&cSelecao cancelada.'
selection-not-enough-blocks: '&cVoce nao tem blocos suficientes. Necessario: &f{needed}&c, disponivel: &f{available}&c.'
selection-expand-mode: '&emodo de expansao ativado para o terreno &f{name}&e. Selecione os cantos da nova area.'
blocks: '&bVoce possui &f{blocks} blocos&b.'
blocks-player: '&bO jogador &f{player}&b possui &f{blocks} blocos&b.'
blocks-added: '&bVoce adicionou &f{blocks} blocos&b ao jogador &f{player}&b.'
blocks-removed: '&bVoce removeu &f{blocks} blocos&b do jogador &f{player}&b.'
blocks-set: '&bVoce setou &f{blocks} blocos&b para o jogador &f{player}&b.'
blocks-give: '&bVoce deu &f{blocks} &bblocos para o jogador &f{player}&b.'
blocks-converted: '&bVoce compactou todos seus blocos em 1.'
blocks-activated: '&bVoce ativou &f{blocks} blocos&b.'
blocks-sent: '&bVoce enviou &f{blocks} blocos&b para o jogador &f{player}&b.'
blocks-received: '&bVoce recebeu &f{blocks} blocos&b do jogador &f{player}&b.'Permissões
| Permissão | Descrição |
|---|---|
yterrenos.blocks.use | Permite ver o próprio saldo de blocos. |
yterrenos.blocks.look | Permite ver o saldo de outro jogador online. |
yterrenos.blocks.send | Permite enviar blocos para outro jogador. |
yterrenos.blocks.add | Permite adicionar blocos ao saldo de jogadores. |
yterrenos.blocks.remove | Permite remover blocos do saldo de jogadores. |
yterrenos.blocks.set | Permite definir o saldo de blocos de jogadores. |
yterrenos.blocks.give | Permite entregar blocos como item. |
yterrenos.blocks.help | Permite ver a ajuda do comando de blocos. |
yterrenos.tool | Permite pegar a ferramenta de seleção. |
yterrenos.terreno.world.<mundo> | Permite criar terrenos no mundo informado. |
Observações técnicas
- O addon precisa estar ativo no yPlugins/bootstrap para que os comandos e listeners sejam registrados.
- O comando
/blockssó é registrado quandoyTerrenosBlocksAddonestá ativo. - A maioria das operações administrativas de blocos trabalha apenas com jogadores online, pois usa
Bukkit.getPlayerExact. - O item de blocos e a ferramenta de seleção dependem de NBT para identificação.
- Os previews da ferramenta são fake-blocks enviados por pacote; eles não alteram os blocos reais do mundo.
- Ao desligar o plugin, o
yTerrenossalva snapshots de blocos e limpa seleções temporárias ativas.