Pular para o conteúdo principal

MathPix

Visao geral

O MathPix cria pedidos PIX para compra de produtos dentro do Minecraft, entrega QR Code ao jogador e acompanha a aprovacao do pagamento para concluir a compra.

Compatibilidade

  • Minecraft API: 1.21
  • Dependencia obrigatoria: MathCore
  • Java: 21+

Comando principal

/mathpix reload
/mathpix menu <id>
/mathpix product <id> [jogador]
/mathpix cancel [jogador]
/mathpix estoque <produto> <acao> [qtd]
/mathpix test <produto> <jogador-online>
/mathpix debug <tipo> ...

Aliases: /mp, /pix

Permissoes

  • mathpix.command
  • mathpix.notify
  • mathpix.admin
  • mathpix.product.*
  • mathpix.*

Fluxo de pagamento

  1. o jogador abre a loja com o comando configurado
  2. o plugin cria um pedido via Mercado Pago
  3. o QR Code e o codigo copia e cola sao entregues ao jogador
  4. o plugin acompanha a aprovacao
  5. a compra e concluida e o produto e entregue

Configuracao principal

Loja

  • shop.command-name: comando principal da loja
  • shop.default-menu: menu padrao
  • shop.confirmation-gui: GUI de confirmacao

Pagamento

  • payment.provider.name: provedor atual
  • payment.provider.access-token: Access Token do Mercado Pago
  • payment.cancel-on-leave
  • payment.cooldown-seconds
  • payment.auto-cancel.enabled
  • payment.auto-cancel.timeout-minutes

QR Code

  • qr-code-map.displayname
  • qr-code-map.lore
  • qr-code-map.slot

Integracoes opcionais

Google Sheets

  • google-sheets.enabled
  • google-sheets.web-app-url
  • google-sheets.token
  • google-sheets.columns

Discord

  • discord.notification.enable
  • discord.notification.webhook-url

Bot API

  • integration.bot-api.enabled
  • integration.bot-api.port
  • integration.bot-api.auth-token

Mensagens importantes

  • payment-approved
  • payment-cancelled
  • payment-created
  • payment-creation-error
  • inventory-full
  • payment-timeout

Requisitos reais para gerar PIX

  • um Access Token valido do Mercado Pago
  • acesso de saida HTTPS para a API do Mercado Pago
  • produto configurado corretamente
  • MathCore autorizado

Pontos operacionais

  • o plugin foi endurecido para trabalhar junto com o MathCore
  • o fluxo administrativo permite abrir compra para outro jogador
  • existe suporte a estoque, debug e simulacao de compra aprovada
  • o build atual usa shading e obfuscacao com yGuard

Checklist de producao

  1. preencha payment.provider.access-token
  2. confirme o comando da loja
  3. ajuste o slot do QR Code
  4. teste um pedido real
  5. valide as mensagens e o auto cancelamento

Product

name: "VIP Diamante Mensal"

# Preco em reais (BRL). Aceita decimais (double).
# Este valor e enviado diretamente ao MercadoPago na criacao do PIX.
price: 29.90

# Lista de comandos executados pelo CONSOLE quando o pagamento e aprovado.
# Cada linha e um comando separado, executados em sequencia.
#
# Tambem usado pelo comando de teste: /mathpix debug reward <produto> [jogador]
#
# Placeholders disponiveis (funcionam com {x} e %x%):
# {player} / {player_name} -> nome do jogador comprador
# {product} -> nome do produto (campo "name" acima)
# {product_id} -> id do produto (nome do arquivo sem .yml)
# {price} -> valor formatado com virgula (ex: 29,90)
# {price_raw} -> valor bruto com ponto (ex: 29.9)
# {date} -> data e hora da aprovacao (ex: 15/04/2026 14:35)
#
# Se o PlaceholderAPI estiver instalado, placeholders dele tambem funcionam.
reward:
- "lp user {player} parent addtemp vip-diamante 30d"
- "give {player} minecraft:diamond_block 16"
- "say &a[MathPix] &f{player} &aadquiriu &f{product} &apor &fR${price}&a!"


# ============================================================
# ICONE DO PRODUTO NA GUI DA LOJA
# ============================================================
# Controla como o produto aparece nos menus (ShopGui).
# O placeholder {price} e substituido automaticamente no displayname e lore.

icon:
# Material do item. Aceita qualquer material valido do Paper/Spigot.
# Usa XSeries internamente, entao nomes cross-version funcionam.
#
# Tambem aceita cabecas customizadas com o prefixo "head:":
# material: "head:https://textures.minecraft.net/texture/<hash>"
# material: "head:<base64_da_textura>"
# material: "head:<hash_da_textura>"
material: DIAMOND_BLOCK

# Nome exibido do item no menu.
# Aceita codigos de cor: &a, &#RRGGBB, <#RRGGBB>
displayname: "&b&lVIP Diamante"

# Descricao do item (lista de linhas).
# Aceita codigos de cor e o placeholder {price}.
lore:
- "&7Acesso VIP Diamante por 30 dias."
- "&7Inclui 16 blocos de diamante."
- ""
- "&aPreco: &fR${price}"
- ""
- "&eClique para comprar"

# Quantidade exibida no item da GUI (apenas visual).
amount: 1

# Se true, adiciona brilho de encantamento ao item (apenas visual).
enchanted: true


# ============================================================
# PERMISSAO DE COMPRA
# ============================================================

# Se true, o jogador precisa da permissao mathpix.product.<product_id>
# para poder comprar este produto. Sem a permissao, a compra e bloqueada
# e a mensagem PRODUCT_NO_PERMISSION e enviada.
#
# Se false, qualquer jogador pode comprar.
require-permission: false


# ============================================================
# IMAGEM PARA EMBED DO DISCORD
# ============================================================
# URL da imagem usada no embed de notificacao do Discord quando
# a compra e aprovada. Aparece como "image" no embed.
#
# Aceita placeholders ({player}, {product}, etc).
#
# O plugin busca este valor nas seguintes chaves (primeira encontrada vence):
# discord-image-url
# discord.image-url
# discord.image
# image-url
# imageUrl
# image
#
# Se nenhuma for definida ou estiver vazia, o embed nao tera imagem.
discord-image-url: "https://exemplo.com/imagens/vip-diamante.png"


# ============================================================
# NOTIFICACOES AO APROVAR COMPRA
# ============================================================
# Configuracoes de titles (texto na tela) e sons que sao
# disparados quando o pagamento e aprovado.
#
# Todos os campos de texto aceitam placeholders e codigos de cor:
# &a, &#RRGGBB, <#RRGGBB>, <gradient:#COR1:#COR2>texto</gradient>

notification:

# --------------------------------------------------------
# TITLES - Textos exibidos na tela do jogador
# --------------------------------------------------------
# Lista de titles exibidos em sequencia ou sobrepostos.
# Cada entrada e independente e possui sua propria configuracao.
titles:

# Primeiro title: aparece imediatamente ao aprovar
- enabled: true # Se false, este title e ignorado
title: "&#55FFAA&lCompra Aprovada!" # Texto principal (grande, centro da tela)
subtitle: "&f{player} &7comprou &f{product}" # Texto secundario (menor, abaixo do title)
fade-in: 10 # Ticks para aparecer (20 ticks = 1 segundo)
stay: 60 # Ticks que fica visivel
fade-out: 20 # Ticks para desaparecer
# Estrategia de exibicao:
# "sequential" -> espera o title anterior terminar (fade-in + stay + fade-out)
# antes de exibir este. delay-ticks e adicionado APOS o anterior.
# "overlay" -> exibido apos delay-ticks absolutos desde a aprovacao,
# independente de outros titles (pode sobrepor).
strategy: "sequential"
delay-ticks: 0 # Delay adicional em ticks (depende da strategy)

# Segundo title: aparece apos o primeiro terminar (sequential)
- enabled: true
title: "&e&lAproveite!"
subtitle: "&7Obrigado por apoiar o servidor."
fade-in: 10
stay: 50
fade-out: 20
strategy: "sequential"
delay-ticks: 0

# Terceiro title: aparece 30 ticks apos a aprovacao (overlay, independente)
- enabled: true
title: "<gradient:#FF6B6B:#FFD166>&lPROMOCAO</gradient>"
subtitle: "&fUse &e/loja &fpara ver mais produtos"
fade-in: 5
stay: 40
fade-out: 10
strategy: "overlay"
delay-ticks: 30

# --------------------------------------------------------
# SONS - Efeitos sonoros ao aprovar compra
# --------------------------------------------------------
# Lista de sons tocados ao aprovar. Cada entrada pode ter
# um alvo diferente (quem ouve o som).
sounds:

# Som para o comprador
- enabled: true # Se false, este som e ignorado
# Nome do som. Aceita tres formatos:
# 1. Enum Bukkit: ENTITY_PLAYER_LEVELUP
# 2. Nome Minecraft: entity.player.levelup
# 3. Com namespace: minecraft:entity.player.levelup
# O plugin normaliza automaticamente (remove "minecraft:", troca "." por "_", uppercase).
type: "ENTITY_PLAYER_LEVELUP"
# Alvo - quem ouve o som:
# "buyer" -> apenas o comprador
# "all" -> todos os jogadores online
# "world" -> todos no mesmo mundo do comprador
# "permission" -> jogadores com a permissao definida em "permission"
# "player" -> jogador especifico definido em "player"
target: "buyer"
volume: 1.0 # Volume (0.0 a infinito, padrao 1.0)
pitch: 1.0 # Tom (0.5 a 2.0, padrao 1.0)

# Som para todos os jogadores online
- enabled: true
type: "entity.experience_orb.pickup"
target: "all"
volume: 0.5
pitch: 1.2

# Som para jogadores com permissao especifica
- enabled: true
type: "minecraft:entity.player.levelup"
target: "permission"
permission: "mathpix.notify" # Obrigatorio quando target = "permission"
volume: 1.0
pitch: 1.0

# Som para um jogador especifico (aceita placeholder)
- enabled: true
type: "ENTITY_EXPERIENCE_ORB_PICKUP"
target: "player"
player: "{player}" # Obrigatorio quando target = "player"
volume: 0.8
pitch: 1.5


# --------------------------------------------------------
# FORMATO ANTIGO (legado, compatibilidade)
# --------------------------------------------------------
# Se voce NAO definir "titles:" nem "sounds:", o plugin
# aceita o formato antigo abaixo. Nao misture os dois formatos.
#
# enabled: true
# title: "&#55FFAA&lCompra aprovada!"
# subtitle: "{player} comprou {product}"
# fade-in: 10
# stay: 60
# fade-out: 20
#
# sound:
# enabled: true
# type: "ENTITY_PLAYER_LEVELUP"
# target: "buyer"
# volume: 1.0
# pitch: 1.0


# ============================================================
# CONTROLE DE ESTOQUE
# ============================================================
# Sistema opcional de limite de vendas por produto.
# Quando o estoque chega a 0:
# - Novas compras sao bloqueadas
# - TODOS os pedidos pendentes deste produto sao cancelados automaticamente
#
# O estoque e persistido no proprio arquivo do produto.
# Pode ser gerenciado via comando: /mathpix estoque <produto> <acao> [qtd]
# Acoes: adicionar, remover, definir, info

stock:
enabled: true # Se false, o produto tem estoque ilimitado
limit: 100 # Limite maximo (referencia para exibicao/reset)
current: 100 # Quantidade disponivel agora (decrementado a cada venda aprovada)```