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.commandmathpix.notifymathpix.adminmathpix.product.*mathpix.*
Fluxo de pagamento
- o jogador abre a loja com o comando configurado
- o plugin cria um pedido via Mercado Pago
- o QR Code e o codigo copia e cola sao entregues ao jogador
- o plugin acompanha a aprovacao
- a compra e concluida e o produto e entregue
Configuracao principal
Loja
shop.command-name: comando principal da lojashop.default-menu: menu padraoshop.confirmation-gui: GUI de confirmacao
Pagamento
payment.provider.name: provedor atualpayment.provider.access-token: Access Token do Mercado Pagopayment.cancel-on-leavepayment.cooldown-secondspayment.auto-cancel.enabledpayment.auto-cancel.timeout-minutes
QR Code
qr-code-map.displaynameqr-code-map.loreqr-code-map.slot
Integracoes opcionais
Google Sheets
google-sheets.enabledgoogle-sheets.web-app-urlgoogle-sheets.tokengoogle-sheets.columns
Discord
discord.notification.enablediscord.notification.webhook-url
Bot API
integration.bot-api.enabledintegration.bot-api.portintegration.bot-api.auth-token
Mensagens importantes
payment-approvedpayment-cancelledpayment-createdpayment-creation-errorinventory-fullpayment-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
- preencha
payment.provider.access-token - confirme o comando da loja
- ajuste o slot do QR Code
- teste um pedido real
- 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: "7FFAA&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: "7FFAA&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)```