Toda a documentação
WIKI DO PLUGIN

InventorySync PRO — Configuração

Partilha inventários, baús do Ender e experiência entre mundos e servidores e gere os dados de jogadores online ou offline.

Ver plugin

Configuração

Informações da versão atual
Versão mais recente
1.7.4
Minecraft
26.x
Plataformas
Spigot, Paper, Folia, Purpur, Velocity, BungeeCord
Versão mínima do Java
25+
Notas de versão

Este artigo foi escrito para 1.7.0. A versão estável mais recente é 1.7.4; consulta os requisitos atuais acima.

Versão 1.7.0Última atualização: 17/10/2026 22:00
Configuração
Ao usar um exemplo, substitui as chaves ou seções correspondentes e preserva os outros padrões. Reinicia após mudanças manuais do backend. /isync reload valida a configuração e recarrega mensagens; não reconecta o armazenamento nem aplica mudanças de sincronização, ponte ou administração. Os controlos administrativos do GUI são salvos e aplicados imediatamente; mantém a política igual na rede MySQL.

Ficheiros gerados
Os caminhos do backend são relativos a plugins/InventorySyncPRO/. As definições do proxy normalmente ficam em plugins/InventorySyncPRO/ no BungeeCord ou plugins/inventorysyncpro/ no Velocity.
Código · Texto simples

config.yml — Armazenamento, perfis, ponte e política administrativa do backend
messages.yml — Chat do backend, prefixo, cores e variáveis
inventories-spigot.db — Banco local padrão; não edite seus bytes manualmente
backups/ — Capturas consistentes de SQLite criadas por /isync backup
proxy.properties — Configuração exclusiva do proxy; formato properties, não YAML


Definições de armazenamento
Código · Texto simples

storage.type (padrão: SQLITE) — SQLITE para um backend; MYSQL para rede compartilhada
storage.server-id (padrão: survival) — ID exclusivo; 1–32 letras/números/._-; nome exato do proxy ao usar a ponte
storage.sqlite.file (padrão: inventories-spigot.db) — Caminho relativo do banco dentro da pasta do plugin
storage.mysql.host (padrão: 127.0.0.1) — Host ou IP MySQL, sem URL JDBC
storage.mysql.port (padrão: 3306) — Porta MySQL; 1–65535
storage.mysql.database (padrão: inventorysync) — Nome do banco
storage.mysql.username (padrão: inventorysync) — Usuário do banco
storage.mysql.password (padrão: "") — Senha do banco
storage.mysql.pool-size (padrão: 10) — Tamanho do pool de conexões; 1–50
storage.mysql.lock-ttl-ms (padrão: 10000) — Validade do bloqueio de sessão/gravação; 2000–300000 ms
storage.mysql.connection-timeout-ms (padrão: 10000) — Espera por conexão do pool; 1000–120000 ms
storage.mysql.validation-timeout-ms (padrão: 5000) — Validação da conexão; de 1000 ms até connection-timeout-ms
storage.mysql.socket-timeout-ms (padrão: 30000) — Espera por resposta MySQL; 1000–300000 ms
storage.mysql.max-lifetime-ms (padrão: 1800000) — Vida útil da conexão; 30000–3600000 ms
storage.mysql.keepalive-time-ms (padrão: 30000) — 0 desativa; caso contrário, mínimo de 30000 ms e menos que max-lifetime-ms
storage.mysql.use-ssl (padrão: false) — Ative TLS se o serviço MySQL estiver configurado para isso


Sincronização e perfis
Código · Texto simples

sync.debounce-ms (padrão: 750) — Atraso que agrupa mudanças rápidas; 0–60000 ms
sync.mode (padrão: GLOBAL) — GLOBAL / PER_WORLD / PER_GROUP
sync.ender-chest (padrão: true) — Ativa sincronização EnderChest e /endersee
sync.xp (padrão: true) — Ativa sincronização XP e /xpsee
sync.restore-on-join (padrão: true) — Restaura dados na entrada; deve ser true no MySQL
sync.session-acquire-timeout-ms (padrão: 15000) — Espera pela liberação da sessão anterior; 1000–120000 ms
sync.operation-timeout-ms (padrão: 20000) — Limite da operação protegida; 1000–120000 ms, não inferior a session-acquire-timeout-ms
sync.kick-on-failure (padrão: true) — Desconecta em falha protegida de sincronização; deve ser true no MySQL
sync.group-default (padrão: global) — Perfil alternativo para PER_GROUP
sync.group-by-server (padrão: {}) — Mapa opcional server-id → grupo; prioridade sobre mundos
sync.group-by-world (padrão: {}) — Mapa opcional mundo → grupo; usado sem servidor correspondente


Acesso da equipe
Código · Texto simples

admin.allow-offline-view (padrão: true) — Permite consultar dados offline salvos
admin.allow-offline-edit (padrão: true) — Permite mudanças offline com a permissão edit correspondente
admin.allow-remote-edit (padrão: true) — Permite mudanças remotas com edit e remote-edit


Ponte do backend
Código · Texto simples

bridge.enabled (padrão: false) — Ponte opcional; exige MYSQL
bridge.secret (padrão: RANDOM_SECRET) — Mesmo segredo aleatório no proxy e backends; 16–256 caracteres, de preferência 32+; substitua RANDOM_SECRET
bridge.timeout-ms (padrão: 4000) — Espera de solicitações da ponte; 250–15000 ms


Definições do proxy
Código · Texto simples

enabled (padrão: false) — Ativa o roteamento no proxy e nos backends
secret (padrão: RANDOM_SECRET) — Exatamente o mesmo valor de bridge.secret do backend
packets-per-second (padrão: 200) — Limite por backend, incluindo entregas por transmissão; 10–2000
allowed-servers (padrão: "") — Nomes registrados separados por vírgula; vazio permite todos os nomes registrados válidos


Prioridade PER_GROUP: group-by-server → group-by-world → group-default. O mapeamento de um servidor abrange todos os seus mundos. Omite esse backend do mapa de servidores para separar mundos. Usa nomes simples em minúsculas, como survival; caracteres não aceitos são normalizados. Os comandos recebem o perfil base, sem sufixos internos de baú do Ender/XP.

As opções antigas invsee.allow-offline-view, invsee.allow-offline-edit e invsee.allow-remote-edit só são usadas quando falta a chave admin.* correspondente. Usa as chaves admin atuais em novas instalações.

Exemplo: mundos Survival e Creative separado
Os nomes devem corresponder aos seus mundos. Substitui as seções correspondentes e deixe group-by-server ausente ou vazio para usar os mapeamentos de mundos.
Código · Texto simples

storage:
  type: SQLITE
  server-id: "survival"
  sqlite:
    file: "inventories-spigot.db"

sync:
  mode: PER_GROUP
  ender-chest: true
  xp: true
  restore-on-join: true
  kick-on-failure: true
  group-default: "survival"
  group-by-server: {}
  group-by-world:
    world: "survival"
    world_nether: "survival"
    world_the_end: "survival"
    creative: "creative"

bridge:
  enabled: false


Exemplo: dois servidores Survival e Lobby separado
Usa o mesmo banco e o mapa completo de grupos nos três backends. Altera apenas storage.server-id para survival-1, survival-2 ou lobby. Substitui credenciais e segredo compartilhado. Preserva os outros padrões. O bloco de proxy abaixo só é necessário ao ativar a ponte opcional.
Código · Texto simples

storage:
  type: MYSQL
  server-id: "survival-1"
  mysql:
    host: "mysql.internal"
    port: 3306
    database: "inventorysync"
    username: "inventorysync"
    password: "REPLACE_WITH_YOUR_DATABASE_PASSWORD"

sync:
  mode: PER_GROUP
  ender-chest: true
  xp: true
  restore-on-join: true
  kick-on-failure: true
  group-default: "lobby"
  group-by-server:
    survival-1: "survival"
    survival-2: "survival"
    lobby: "lobby"
  group-by-world: {}

bridge:
  enabled: true
  secret: "REPLACE_WITH_ONE_RANDOM_SECRET_FOR_THE_WHOLE_NETWORK"
  timeout-ms: 4000

Código · Texto simples

enabled=true
secret=REPLACE_WITH_ONE_RANDOM_SECRET_FOR_THE_WHOLE_NETWORK
packets-per-second=200
allowed-servers=survival-1,survival-2,lobby


Personalizar mensagens
messages.yml aceita textos ou listas, cores &, HEX &#RRGGBB e variáveis específicas como %prefix%, %player% e %profile%. Usa "" para silenciar uma entrada ou enabled: false para desativar este sistema. YAML inválido ao recarregar mantém as mensagens anteriores. Rótulos de GUI e respostas do proxy não são configurados aqui. Chaves antigas invsee permanecem por compatibilidade; comandos atuais usam data.

Padrões completos incluídos na versão 1.7.0
Estes são os ficheiros completos da versão 1.7.0, com comentários e mensagens originais. As traduções da Wiki não traduzem automaticamente as mensagens do plugin no jogo.
config.yml

Código · Texto simples

storage:
  type: SQLITE        # SQLITE = single server | MYSQL = network
  server-id: "survival" # Unique backend ID (must match the backend name in BungeeCord/Velocity)

  mysql:
    host: "127.0.0.1"     # MySQL host
    port: 3306            # MySQL port
    database: "inventorysync" # Database name
    username: "inventorysync"      # MySQL user
    password: ""          # MySQL password
    pool-size: 10         # Connection pool size
    lock-ttl-ms: 10000    # Distributed write/session lock lifetime
    connection-timeout-ms: 10000 # Maximum wait for a pooled connection
    validation-timeout-ms: 5000  # Connection validation timeout
    socket-timeout-ms: 30000     # Maximum wait for a MySQL response
    max-lifetime-ms: 1800000     # Maximum pooled connection lifetime
    keepalive-time-ms: 30000     # Keep idle network connections healthy (0 = disabled)
    use-ssl: false                # Enable TLS when MySQL is configured for it

  sqlite:
    file: "inventories-spigot.db" # SQLite file (local server)

sync:
  debounce-ms: 750        # Save delay after last change (ms)
  mode: GLOBAL            # GLOBAL / PER_WORLD / PER_GROUP

  ender-chest: true       # Sync EnderChest
  xp: true                # Sync XP (level + bar)
  restore-on-join: true   # Restore inventory/ender/xp on join
  session-acquire-timeout-ms: 15000 # Wait for the previous backend to finish saving
  operation-timeout-ms: 20000       # Maximum protected join/world-switch operation time
  kick-on-failure: true             # Disconnect instead of risking stale/duplicated data

  group-default: "global" # Default group (PER_GROUP)
  # group-by-server:      # Map server-id -> group
  #   spigot-1: "survival"
  #   spigot-2: "survival"

  # group-by-world:       # Map world -> group
  #   world: "survival"
  #   world_nether: "survival"

bridge:
  enabled: false          # Enable the signed InventorySyncPRO BungeeCord/Velocity bridge
  secret: "RANDOM_SECRET" # Same secret on proxy + every backend (16..256 characters; 32+ recommended)
  timeout-ms: 4000        # Remote request timeout (ms)

admin:
  # Shared switches for /invsee, /endersee and /xpsee. Each has separate permissions.
  # Legacy invsee.* keys are used only when the corresponding admin.* key is absent.
  allow-offline-view: true # Allow viewing saved player data
  allow-offline-edit: true # Allow editing saved player data
  allow-remote-edit: true # Also requires the command's .edit and .remote-edit permissions

# /invsee, /endersee and /xpsee use the shared database directly; bridge.enabled is not required.
# Install the same JAR on BungeeCord/Velocity and every backend. Configure proxy.properties.
# Use the same MySQL database, unique
# server-id values matching proxy backend names, matching sync settings, and one bridge secret.
# SQLite supports local and offline players on this server only.
# With no profile argument, offline operations select the latest saved profile for that data type.
# Names enter the shared directory when players join; older data can also be opened by UUID.


messages.yml

Código · Texto simples

# Every user-facing chat message can be changed here.
# Set a message to "" to disable only that message. Supports & colors and &#RRGGBB HEX colors.
enabled: true
prefix: "&8[&#38BDF8InventorySyncPRO&8] &r"

sync:
  join-start: "%prefix%&7Synchronizing your inventory..."
  join-success: "%prefix%&aYour inventory has been synchronized."
  join-empty: "%prefix%&7No synchronized data exists yet. Your current inventory will be used."
  world-start: "%prefix%&7Saving &f%old_profile%&7 and loading &f%new_profile%&7..."
  world-success: "%prefix%&aInventory profile changed to &f%profile%&a."
  interaction-blocked: "%prefix%&ePlease wait until inventory synchronization finishes."
  session-busy: "%prefix%&eWaiting for the previous server to finish saving your inventory..."
  load-failed: "%prefix%&cYour inventory could not be loaded safely. Please reconnect."
  save-failed: "%prefix%&cYour inventory could not be saved safely. Please reconnect."
  session-lost: "%prefix%&cThe inventory session lock was lost. Please reconnect."
  kick-load-failed: "&cInventory synchronization failed.\n&7Please reconnect in a moment."
  kick-save-failed: "&cInventory could not be saved safely.\n&7Please reconnect in a moment."
  kick-session-lost: "&cYour inventory session expired.\n&7Please reconnect to protect your items."
  kick-plugin-disable: "&cInventory synchronization is restarting.\n&7Please reconnect in a moment."

general:
  no-permission: "%prefix%&cYou do not have permission to use this command."
  players-only: "%prefix%&cOnly players can use this command."

data:
  invsee-usage: "&eUsage: /{label} <player|uuid> [profile]"
  denied: "&cYou no longer have permission to edit this data."
  endersee-usage: "%prefix%&7Usage: &f/%label% <player|uuid> [profile]"
  xpsee-usage:
    - "%prefix%&7View: &f/%label% <player|uuid> [profile]"
    - "%prefix%&7Edit: &f/%label% <player|uuid> <set|add|remove> <amount> [levels|points] [profile]"
  loading: "%prefix%&7Loading current player data..."
  saving: "%prefix%&7Applying and saving changes..."
  saved: "%prefix%&aChanges for &f%player% &awere applied and saved."
  xp: "%prefix%&f%player% &7| Level: &f%level% &7| Bar: &f%progress%%% &7| Points: &f%points% &7| Profile: &f%profile% &7| &f%location%"
  not_found: "%prefix%&cPlayer not found. For older offline data, try the player's UUID."
  no_data: "%prefix%&eNo saved data exists for this player/profile."
  disabled: "%prefix%&cThis data type is disabled. Enable sync.ender-chest or sync.xp and restart."
  offline_disabled: "%prefix%&cOffline viewing or editing is disabled."
  remote_disabled: "%prefix%&cYou cannot edit this data on another backend."
  busy: "%prefix%&eA request is already running. Please wait."
  conflict: "%prefix%&eThe data changed while you were editing. Refresh and try again; your draft was not applied."
  moved: "%prefix%&eThe player changed server or is synchronizing. Try again in a moment."
  profile_changed: "%prefix%&eThe player's active profile changed. Reopen the data before editing."
  invalid_amount: "%prefix%&cUse a non-negative whole number. The resulting XP must fit within 2,147,483,647 points."
  timeout: "%prefix%&eThe request timed out. Refresh to check the current data before retrying an edit."
  save_uncertain: "%prefix%&eThe live edit was applied, but its database save could not be confirmed. Refresh before retrying."
  error: "%prefix%&cThe operation failed. Check the console and refresh the data before retrying."

invsee:
  usage: "%prefix%&7Usage: &f/%label% <player>"
  self-denied: "%prefix%&cUse your normal inventory instead of /invsee on yourself."
  target-syncing: "%prefix%&eThat player's inventory is still synchronizing. Try again in a moment."
  player-not-found: "%prefix%&cPlayer not found: &f%player%"
  locating: "%prefix%&7Checking the network location of &f%player%&7..."
  location-unknown-readonly: "%prefix%&eThe player's network location could not be verified. Opening a safe read-only snapshot."
  remote-flush: "%prefix%&7Player is online on &f%server%&7. Requesting a fresh inventory..."
  remote-flush-failed: "%prefix%&eThe remote refresh failed. Showing the latest safe saved inventory."
  remote-flush-success: "%prefix%&aFresh inventory received."
  remote-flush-timeout: "%prefix%&eThe remote refresh timed out. Showing the latest safe saved inventory."
  remote-flush-error: "%prefix%&cRemote refresh failed. Showing the latest safe saved inventory."
  offline-disabled: "%prefix%&cOffline inventory viewing is disabled."
  no-saved-data: "%prefix%&eNo saved inventory exists for &f%player%&e."
  unsupported-data: "%prefix%&cThe saved inventory uses an unsupported or damaged data format."
  load-failed: "%prefix%&cCould not load the inventory of &f%player%&c."
  edit-locked: "%prefix%&eAnother administrator is already editing this inventory."
  save-success: "%prefix%&aInventory changes were saved."
  save-failed: "%prefix%&cInventory changes could not be saved."

admin:
  usage: "%prefix%&7Usage: &f/%label% <status|backup|reload>"
  status:
    - "%prefix%&#38BDF8InventorySyncPRO status"
    - "&7Storage: &f%storage%"
    - "&7Active sessions: &f%sessions%"
    - "&7Protected/retiring sessions: &f%protected_sessions%"
    - "&7Live queue entries: &f%live_queue%"
    - "&7Offline queue entries: &f%offline_queue%"
    - "&7Active database writes: &f%active_writes%"
  reload-success: "%prefix%&aMessages reloaded. Configuration is valid; restart to apply storage or sync changes."
  reload-invalid: "%prefix%&cConfiguration was not applied because it is invalid: &f%reason%"
  reload-messages-invalid: "%prefix%&cMessages were not reloaded because messages.yml contains invalid YAML. The previous messages remain active."
  backup-unavailable: "%prefix%&eBuilt-in backup is unavailable in MySQL mode. Use your database backup tool."
  backup-start: "%prefix%&7Creating a consistent SQLite backup..."
  backup-already-running: "%prefix%&eA SQLite backup is already running."
  backup-success: "%prefix%&aBackup created: &f%file%"
  backup-failed: "%prefix%&cBackup failed. Check the server console."


proxy.properties

Código · Texto simples

# InventorySyncPRO BungeeCord / Velocity bridge
# Set enabled=true and the same bridge.secret as on EVERY backend.
enabled=false
secret=RANDOM_SECRET
# Per-backend budget, including broadcast fan-out. Bursts of twice this size are allowed.
packets-per-second=200
# Optional comma-separated backend names. Empty = all registered backends.
allowed-servers=


Bem-vindo — idioma e privacidade

Os cookies necessários protegem o início de sessão e guardam as suas escolhas. As estatísticas opcionais e o YouTube ficam desativados até dar consentimento. Pode alterar esta escolha no rodapé. Privacidade