Archivos y Carpetas
plugins/AxoProtectionBlock/
├─ blocks/
│ ├─ beacon_64.yml
│ └─ otros_bloques.yml
├─ menu/
│ ├─ main.yml
│ ├─ shop.yml
│ ├─ homes.yml
│ ├─ systems.yml
│ └─ otros_menus.yml
├─ recipes/
│ ├─ beacon_64.yml
│ └─ otras_recetas.yml
├─ lang/
│ ├─ es_ES.yml
│ ├─ en_US.yml
│ └─ ru_RU.yml
├─ protecciones/
│ ├─ region-uuid.yml
│ └─ region-otro-uuid.yml
├─ cleanup-previews/
├─ migration-backups/
├─ config.yml
├─ discord.yml
├─ rent-data.yml
├─ tax-data.yml
├─ player-languages.yml
└─ messages.yml
Bloque configurable - Ejemplo básico
type: BEACON
alias: "64"
description: "Protección de radio 64 bloques."
restrict-obtaining: true
worlds:
list-type: blacklist
list:
- world_nether
- world_the_end
region:
x_radius: 64
y_radius: -1
z_radius: 64
home-offset:
x: 0.5
y: 1.0
z: 0.5
yaw: 0.0
pitch: 0.0
flags:
BLOCK_BREAK: false
BLOCK_PLACE: false
INTERACT: false
CONTAINER_ACCESS: false
PVP: false
ENTITY_DAMAGE: false
EXPLOSIONS: false
LIQUID_FLOW: false
PISTONS: false
ENTRY: true
INVINCIBLE: false
MOB_DAMAGE: true
block-data:
display-name: "&b&lProtección &d&l64x64"
lore:
- "&7Coloca este bloque para crear una protección."
- "&bRadio: &f64 bloques"
- "&7Dueño: &f%player%"
enchanted-effect: true
custom-model-data: -1
price: 0.0
Bloque configurable - Opciones avanzadas
recipe:
enabled: false
amount: 1
shape:
- ["", "STONE", ""]
- ["STONE", "BEACON", "STONE"]
- ["", "STONE", ""]
craftengine:
item-id: "craftengine:protection_item"
block-id: "craftengine:protection_block"
shop:
enabled: true
price: 1000.0
material: BEACON
slot: auto
priority: 1
behaviour:
no-drop: false
player:
permission: ""
event:
enable: true
on-region-create:
- "global_message: &b%player% creó una protección."
- "console_command: say Protección creada"
on-region-destroy: []
Bloque con cabeza personalizada
type: PLAYER_HEAD
alias: "head_10"
description: "Protección de radio 10 con cabeza."
region:
x_radius: 10
y_radius: -1
z_radius: 10
block-data:
display-name: "&c&lProtección de Cabeza &7(Radio 10)"
lore:
- "&7Coloca esta cabeza para proteger una zona."
- "&cRadio: &f10 bloques"
head:
enabled: true
owner: "%player%"
texture: ""
Configuración - config.yml (parte 1)
settings:
default-radius: 16
max-regions-per-player: 3
region-shape: CUBE
disabled-worlds:
- world_nether
- world_the_end
menus:
size: 27
rows: 3
shop:
enabled: true
command: "apb shop"
menu-file: "shop.yml"
language:
default: "es_ES"
auto-detect-client: true
fallback: "en_US"
fallbacks: ["en_US"]
Configuración - config.yml (parte 2)
recipes:
auto-register: true
homes:
enabled: true
default-home-at-protection-block: true
allow-members-teleport: true
safe-teleport: true
teleport-delay: 3
combat:
tag-seconds: 15
cleanup:
enabled: false
inactive-days: 30
automatic:
enabled: true
check-members-activity: true
delete-if-owner-inactive-only: false
Configuración - config.yml (parte 3)
sql:
enabled: false
type: sqlite
host: localhost
port: 3306
database: axoprotectionblock
username: root
password: ""
pool:
maximum-pool-size: 10
minimum-idle: 2
connection-timeout-ms: 30000
idle-timeout-ms: 600000
max-lifetime-ms: 1800000
tax-system:
enabled: false
interval-hours: 24
grace-period-days: 7
action-on-unpaid: DISABLE
rent-system:
enabled: false
min-price: 100.0
max-price: 100000.0
allow-auto-renew: true
menu-system:
enabled: true
Base de Datos SQL
HikariCP incluido con relocation. Drivers JDBC descargados automáticamente por Paper.
- SQLite: Sin configuración de red, ideal para servidores pequeños.
- MySQL: Para servidores en red o múltiples instancias.
- El migrador automático lee YAML y
regions.yml legacy.
- Crea respaldos en
migration-backups/ antes de insertar.
- Normaliza datos en tablas para regiones, co-dueños, miembros, bloqueos, flags y homes.
Discord Webhooks
Se configura en discord.yml. Soporta eventos con content, embeds, colores y placeholders.
webhooks:
on-region-create:
enabled: true
webhook-url: "https://discord.com/api/webhooks/..."
embed:
title: "Nueva Protección"
description: "%player% creó una protección"
color: "#00ff00"
fields:
- name: "Región"
value: "%region%"
- name: "Ubicación"
value: "%x%, %y%, %z%"
placeholders:
- "%player%"
- "%target%"
- "%region%"
- "%region_id%"
- "%owner%"
- "%world%"
- "%radius%"
- "%x_radius%"
- "%y_radius%"
- "%z_radius%"
PlaceholderAPI - Placeholders registrados
Funcionan si PlaceholderAPI está instalado. Prefijo: axoprotectionblock
| Placeholder | Valor |
%axoprotectionblock_region% | Nombre de la región actual, o vacío. |
%axoprotectionblock_in_region% | true o false. |
%axoprotectionblock_region_owner% | Dueño de la región actual. |
%axoprotectionblock_region_radius% | Radio de la región actual. |
%axoprotectionblock_region_x_radius% | Radio X de la región actual. |
%axoprotectionblock_region_y_radius% | Radio Y (-1 = altura completa). |
%axoprotectionblock_region_z_radius% | Radio Z de la región actual. |
%axoprotectionblock_region_world% | Mundo de la región actual. |
%axoprotectionblock_region_id% | UUID completo de la región actual. |
%axoprotectionblock_region_short_id% | ID corto de la región actual. |