warleysr / autopix

Plugin para vender por código QR no Minecraft
22 stars 7 forks source link

Descontos #7

Closed LucasHenriqueDG closed 1 year ago

LucasHenriqueDG commented 1 year ago

Opa, vi que no arquivo config tem uma opção de descontos com cupom, porém in-game não vejo nenhum comando ou menu com os descontos, teria como informar como que faz para que esse sistema funciona ou se ele ainda não esta desenvolvido?

warleysr commented 1 year ago

Esse sistema de descontos implementei para um cliente que pediu uma versão customizada, devo ter esquecido de tirar da config as opções.

Se tiver alguma sugestão de sistema de descontos coloca aqui que quando tiver um tempo posso tentar implementar.

LucasHenriqueDG commented 1 year ago

mano, poderia ter um esquema da gente colocar no arquivo config os cupoms com o desconto, e na hora que clicar no item abrir um menu antes pedindo um cupom se disponivel, no config.yml poderia ser tipo assim: Cupoms: desconto15: desconto: 15 #Valor em % item: vip #item para qual o cupom é utilizavel desconto20: desconto: 20 item: vipPlus

Dai no menu de confirmar (aquele q vem depois de clicar no item que vai ser comprado), poderia ter um papel no meio com a opção de inserir um cupom.

warleysr commented 1 year ago

Implementei na versão v1.0.8. Segui o formato de configuração que sugeriu. O jogador clica no item de aplicar um cupom e digita no chat e então o menu reabre para finalizar a compra. Tem algumas coisas que pensei em melhorar como mostrar o valor final no próprio menu de confirmação, fica para outra versão por enquanto.

LucasHenriqueDG commented 1 year ago

daora mano ajudou bastante, me tire uma dúvida, quando o player usar o cupom, vai ficar salvo em algum lugar o código q ele utilizou? por exemplo, eu queria ter uma forma de ver quantas vezes tal cupom foi utilizado (poderia ter um placeholder pro cupom pra gente poder botar um broadcast que o player comprou um vip usando o cupom x, ou então ter um arquivo de log pra salvar as transações junto do código utilizado). Seria interessante pra ter como funcionalidade mais pra frente.

LucasHenriqueDG commented 1 year ago

erro ao aplicar o cupom:

[19:24:40] [Async Chat Thread - #1/ERROR]: Could not pass event AsyncPlayerChatEvent to AutoPix v1.0.8 java.lang.IllegalStateException: InventoryOpenEvent may only be triggered synchronously. at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:42) ~[purpur-1.19.4.jar:git-Purpur-1963] at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:126) ~[purpur-1.19.4.jar:git-Purpur-1963] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:617) ~[purpur-api-1.19.4-R0.1-SNAPSHOT.jar:?] at org.bukkit.craftbukkit.v1_19_R3.event.CraftEventFactory.callInventoryOpenEvent(CraftEventFactory.java:1393) ~[purpur-1.19.4.jar:git-Purpur-1963] at org.bukkit.craftbukkit.v1_19_R3.event.CraftEventFactory.callInventoryOpenEvent(CraftEventFactory.java:1379) ~[purpur-1.19.4.jar:git-Purpur-1963] at org.bukkit.craftbukkit.v1_19_R3.entity.CraftHumanEntity.openCustomInventory(CraftHumanEntity.java:362) ~[purpur-1.19.4.jar:git-Purpur-1963] at org.bukkit.craftbukkit.v1_19_R3.entity.CraftHumanEntity.openInventory(CraftHumanEntity.java:347) ~[purpur-1.19.4.jar:git-Purpur-1963] at io.github.warleysr.autopix.inventory.InventoryManager.openConfirmation(InventoryManager.java:90) ~[AutoPix-v1.0.8.jar:?] at io.github.warleysr.autopix.inventory.InventoryListener.onChat(InventoryListener.java:205) ~[AutoPix-v1.0.8.jar:?] at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor950.execute(Unknown Source) ~[?:?] at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77) ~[purpur-api-1.19.4-R0.1-SNAPSHOT.jar:?] at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:77) ~[purpur-api-1.19.4-R0.1-SNAPSHOT.jar:git-Purpur-1963] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[purpur-api-1.19.4-R0.1-SNAPSHOT.jar:?] at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[purpur-1.19.4.jar:git-Purpur-1963] at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:126) ~[purpur-1.19.4.jar:git-Purpur-1963] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:617) ~[purpur-api-1.19.4-R0.1-SNAPSHOT.jar:?] at io.papermc.paper.adventure.ChatProcessor.post(ChatProcessor.java:414) ~[purpur-1.19.4.jar:git-Purpur-1963] at io.papermc.paper.adventure.ChatProcessor.process(ChatProcessor.java:100) ~[purpur-1.19.4.jar:git-Purpur-1963] at net.minecraft.server.network.ServerGamePacketListenerImpl.chat(ServerGamePacketListenerImpl.java:2488) ~[?:?] at net.minecraft.server.network.ServerGamePacketListenerImpl.broadcastChatMessage(ServerGamePacketListenerImpl.java:2644) ~[?:?] at net.minecraft.server.network.ServerGamePacketListenerImpl.lambda$handleChat$18(ServerGamePacketListenerImpl.java:2322) ~[?:?] at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:718) ~[?:?] at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?] at java.lang.Thread.run(Thread.java:833) ~[?:?]

warleysr commented 1 year ago

O PaperSpigot tem algumas mudanças pro Spigot. Testa esse jar que anexei. Quanto ao registro do cupom usado acho interessante, posso tentar trazer numa próxima versão.

AutoPix-v1.0.8-PAPER.zip

LucasHenriqueDG commented 1 year ago

ele aparentemente tava funcionando, mas depois de um tempo do nada começou a aparecer "ocorreu um erro" quando eu clicava em confirmar pra gerar o qr-code, e começava a floodar essa mensagem no console, eu tenho mais plugins q funcionam com mysql mas só esse que começou a dar isso:

[10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: java.sql.SQLNonTransientConnectionException: No operations allowed after connection closed. [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:73) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at com.mysql.cj.jdbc.ConnectionImpl.prepareStatement(ConnectionImpl.java:1645) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at com.mysql.cj.jdbc.ConnectionImpl.prepareStatement(ConnectionImpl.java:1559) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at AutoPix-v1.0.8-PAPER.jar//io.github.warleysr.autopix.OrderManager.getOrders(OrderManager.java:78) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at AutoPix-v1.0.8-PAPER.jar//io.github.warleysr.autopix.OrderManager.getLastOrder(OrderManager.java:108) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at AutoPix-v1.0.8-PAPER.jar//io.github.warleysr.autopix.AutoPix$2.run(AutoPix.java:70) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at org.bukkit.craftbukkit.v1_19_R3.scheduler.CraftTask.run(CraftTask.java:101) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at org.bukkit.craftbukkit.v1_19_R3.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:57) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at java.base/java.lang.Thread.run(Thread.java:833) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: Caused by: com.mysql.cj.exceptions.ConnectionIsClosedException: No operations allowed after connection closed. [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at jdk.internal.reflect.GeneratedConstructorAccessor176.newInstance(Unknown Source) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at com.mysql.cj.NativeSession.checkClosed(NativeSession.java:761) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at com.mysql.cj.jdbc.ConnectionImpl.checkClosed(ConnectionImpl.java:564) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at com.mysql.cj.jdbc.ConnectionImpl.prepareStatement(ConnectionImpl.java:1574) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: ... 10 more [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: Caused by: com.mysql.cj.exceptions.CJCommunicationsException: The client was disconnected by the server because of inactivity. See wait_timeout and interactive_timeout for configuring this behavior. [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) [10:50:20] [Craft Scheduler Thread - 1093 - AutoPix/WARN]: at java.base/jdk.internal.ref

LucasHenriqueDG commented 1 year ago

obtive esse erro quando um player tentou usar o comando /pix validar, verifiquei o código e estava correto:

[21:57:47] [Thread-176/WARN]: Unexpected character (<) at position 0. [21:57:47] [Thread-176/WARN]: at org.json.simple.parser.Yylex.yylex(Yylex.java:610) [21:57:47] [Thread-176/WARN]: at org.json.simple.parser.JSONParser.nextToken(JSONParser.java:269) [21:57:47] [Thread-176/WARN]: at org.json.simple.parser.JSONParser.parse(JSONParser.java:118) [21:57:47] [Thread-176/WARN]: at org.json.simple.parser.JSONParser.parse(JSONParser.java:81) [21:57:47] [Thread-176/WARN]: at org.json.simple.parser.JSONParser.parse(JSONParser.java:75) [21:57:47] [Thread-176/WARN]: at AutoPix-v1.0.8-PAPER.jar//io.github.warleysr.autopix.qrcode.MPValidator.validateTransaction(MPValidator.java:57) [21:57:47] [Thread-176/WARN]: at AutoPix-v1.0.8-PAPER.jar//io.github.warleysr.autopix.commands.AutoPixCommand.lambda$0(AutoPixCommand.java:80) [21:57:47] [Thread-176/WARN]: at java.base/java.lang.Thread.run(Thread.java:833)

warleysr commented 1 year ago

Feature implementada.