Реструктурирование кода, улучшение его качества.
This commit is contained in:
parent
fa94433356
commit
71ac89690b
@ -1,27 +1,38 @@
|
|||||||
package main.vp_server_integration
|
package main.vp_server_integration
|
||||||
|
|
||||||
|
// ----------------- VPC API --------------------
|
||||||
|
// Here is modules for check global balance (for further using in DYNAMIC course)
|
||||||
|
// ----------------------------------------------
|
||||||
|
|
||||||
import main.vp_server_integration.Vp_server_integration.Companion.LOGGER
|
import main.vp_server_integration.Vp_server_integration.Companion.LOGGER
|
||||||
|
|
||||||
class TotalBalanceModules {
|
class TotalBalanceModules {
|
||||||
companion object {
|
companion object {
|
||||||
fun getEssentialsBalance(): Float {
|
fun getEssentialsBalance(): Float {
|
||||||
val output: List<String> = CommandCapture.execute("baltop")
|
val output = CommandCapture.execute("baltop")
|
||||||
LOGGER.info("output $output")
|
LOGGER.info("Balance top command output: $output")
|
||||||
var total: Float = 0.0f
|
|
||||||
var startOfList: Boolean = false
|
var total = 0.0f
|
||||||
|
var startOfList = false
|
||||||
|
|
||||||
for (el in output) {
|
for (el in output) {
|
||||||
LOGGER.info("el: $el")
|
LOGGER.info("Processing line: $el")
|
||||||
|
|
||||||
if (startOfList) {
|
if (startOfList) {
|
||||||
LOGGER.info("EL ELEMENT!!!")
|
LOGGER.info("Parsing balance entry")
|
||||||
LOGGER.info(el.split(" ")[2].replace(Regex("[^0-9.]"), ""))
|
val balance = el.split(" ")[2].replace(Regex("[^0-9.]"), "")
|
||||||
total += el.split(" ")[2].replace(Regex("[^0-9.]"), "").toFloat()
|
LOGGER.info("Extracted balance: $balance")
|
||||||
|
total += balance.toFloat()
|
||||||
} else if (el.contains("1.")) {
|
} else if (el.contains("1.")) {
|
||||||
startOfList = true
|
startOfList = true
|
||||||
LOGGER.info("EL START!!!")
|
LOGGER.info("Found first entry, starting balance calculation")
|
||||||
LOGGER.info(el.split(" ")[2].replace(Regex("[^0-9.]"), ""))
|
val balance = el.split(" ")[2].replace(Regex("[^0-9.]"), "")
|
||||||
total += el.split(" ")[2].replace(Regex("[^0-9.]"), "").toFloat()
|
LOGGER.info("First balance extracted: $balance")
|
||||||
|
total += balance.toFloat()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LOGGER.info("Total balance calculated: $total")
|
||||||
return total
|
return total
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
45
src/main/kotlin/main/vp_server_integration/Utils.kt
Normal file
45
src/main/kotlin/main/vp_server_integration/Utils.kt
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
package main.vp_server_integration
|
||||||
|
|
||||||
|
// ----------------- VPC API --------------------
|
||||||
|
// Here is utils help for working with some stuff
|
||||||
|
// ----------------------------------------------
|
||||||
|
|
||||||
|
import main.vp_server_integration.Vp_server_integration.Companion.PREFIX
|
||||||
|
import org.bukkit.ChatColor
|
||||||
|
import org.bukkit.command.CommandSender
|
||||||
|
|
||||||
|
import java.util.logging.Logger
|
||||||
|
|
||||||
|
class MyLogger(debugEnabled: Boolean, private val loggerOriginal: java.util.logging.Logger) {
|
||||||
|
private val debug_enabled = debugEnabled
|
||||||
|
private val loggerSpigot = loggerOriginal
|
||||||
|
|
||||||
|
fun info(message: String) {
|
||||||
|
if (debug_enabled) {
|
||||||
|
loggerSpigot.info(message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun error(message: String) {
|
||||||
|
if (debug_enabled) {
|
||||||
|
loggerSpigot.severe(message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Utils {
|
||||||
|
companion object {
|
||||||
|
fun send(source: CommandSender, message: String, prefix: String = PREFIX) {
|
||||||
|
var first = true
|
||||||
|
message.split("\n").forEach { line ->
|
||||||
|
val trimmedLine = line.trimStart()
|
||||||
|
if (first) {
|
||||||
|
source.sendMessage(ChatColor.translateAlternateColorCodes('&', "$prefix$trimmedLine"))
|
||||||
|
first = false
|
||||||
|
} else {
|
||||||
|
source.sendMessage(ChatColor.translateAlternateColorCodes('&', "&3$trimmedLine"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -16,7 +16,6 @@ import net.md_5.bungee.api.chat.HoverEvent
|
|||||||
import net.md_5.bungee.api.chat.ClickEvent
|
import net.md_5.bungee.api.chat.ClickEvent
|
||||||
import net.md_5.bungee.api.chat.TextComponent
|
import net.md_5.bungee.api.chat.TextComponent
|
||||||
import org.bukkit.ChatColor
|
import org.bukkit.ChatColor
|
||||||
import org.bukkit.plugin.java.JavaPluginLoader
|
|
||||||
import org.bukkit.scheduler.BukkitRunnable
|
import org.bukkit.scheduler.BukkitRunnable
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.FileInputStream
|
import java.io.FileInputStream
|
||||||
@ -26,7 +25,8 @@ import kotlin.math.abs
|
|||||||
|
|
||||||
class Vp_server_integration() : JavaPlugin(), CommandExecutor {
|
class Vp_server_integration() : JavaPlugin(), CommandExecutor {
|
||||||
companion object {
|
companion object {
|
||||||
// A lot of needed configurations
|
// Configuration settings
|
||||||
|
var DEBUG_FLAG: Boolean = false
|
||||||
lateinit var USERNAME: String
|
lateinit var USERNAME: String
|
||||||
lateinit var USER_TOKEN: String
|
lateinit var USER_TOKEN: String
|
||||||
lateinit var USER_API_URL: String
|
lateinit var USER_API_URL: String
|
||||||
@ -38,7 +38,8 @@ class Vp_server_integration() : JavaPlugin(), CommandExecutor {
|
|||||||
var COURSE_STATIC_VALUE: Double = DEFAULT_COURSE_STATIC_VALUE
|
var COURSE_STATIC_VALUE: Double = DEFAULT_COURSE_STATIC_VALUE
|
||||||
lateinit var COURSE_DYNAMIC_COMMAND: String
|
lateinit var COURSE_DYNAMIC_COMMAND: String
|
||||||
var COURSE_COMMISSION: Float = DEFAULT_COURSE_COMMISSION
|
var COURSE_COMMISSION: Float = DEFAULT_COURSE_COMMISSION
|
||||||
// A lot of needed configurations
|
|
||||||
|
// Default configuration values
|
||||||
const val DEFAULT_USERNAME: String = "test"
|
const val DEFAULT_USERNAME: String = "test"
|
||||||
const val DEFAULT_USER_TOKEN: String = "test"
|
const val DEFAULT_USER_TOKEN: String = "test"
|
||||||
const val DEFAULT_USER_API_URL: String = "http://127.0.0.1:8010/api/"
|
const val DEFAULT_USER_API_URL: String = "http://127.0.0.1:8010/api/"
|
||||||
@ -53,9 +54,10 @@ class Vp_server_integration() : JavaPlugin(), CommandExecutor {
|
|||||||
|
|
||||||
const val PREFIX = "&9[&bVPC&7-&6I&9] &3"
|
const val PREFIX = "&9[&bVPC&7-&6I&9] &3"
|
||||||
|
|
||||||
// Helpful variables
|
// Utility instances
|
||||||
lateinit var LOGGER: Logger
|
lateinit var LOGGER: MyLogger
|
||||||
lateinit var SERVER: org.bukkit.Server
|
lateinit var SERVER: org.bukkit.Server
|
||||||
|
|
||||||
// For background checks
|
// For background checks
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
var TO_AUTH_PLAYERS: MutableMap<String, String> = mutableMapOf() // Pair: {player: vpc_username}
|
var TO_AUTH_PLAYERS: MutableMap<String, String> = mutableMapOf() // Pair: {player: vpc_username}
|
||||||
@ -64,11 +66,12 @@ class Vp_server_integration() : JavaPlugin(), CommandExecutor {
|
|||||||
@JvmStatic
|
@JvmStatic
|
||||||
var TO_PAY_INVOICES: MutableMap<String, String> = mutableMapOf() // Pair: {player: invoice_id}
|
var TO_PAY_INVOICES: MutableMap<String, String> = mutableMapOf() // Pair: {player: invoice_id}
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
var INVOICES_AMOUNT: MutableMap<String, Double> = mutableMapOf() // To re-send message when user rejoin/etc.
|
var INVOICES_AMOUNT: MutableMap<String, Double> = mutableMapOf() // How many should we pay to player after invoice?
|
||||||
@JvmStatic
|
|
||||||
var INVOICES_REWARDS: MutableMap<String, String> = mutableMapOf() // How many should we pay to player after invoice?
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load configuration from config.properties file
|
||||||
|
*/
|
||||||
private fun loadConfiguration() {
|
private fun loadConfiguration() {
|
||||||
try {
|
try {
|
||||||
// In Spigot, we use getDataFolder() instead of dataDirectory
|
// In Spigot, we use getDataFolder() instead of dataDirectory
|
||||||
@ -83,6 +86,8 @@ class Vp_server_integration() : JavaPlugin(), CommandExecutor {
|
|||||||
configFile.writeText(
|
configFile.writeText(
|
||||||
"""
|
"""
|
||||||
# VPC Integration Configuration
|
# VPC Integration Configuration
|
||||||
|
# For get extra output
|
||||||
|
debug=false
|
||||||
|
|
||||||
# ---------- Part for work with UserAPI -----------
|
# ---------- Part for work with UserAPI -----------
|
||||||
# Username from your VPC wallet
|
# Username from your VPC wallet
|
||||||
@ -135,6 +140,7 @@ course_commission=$DEFAULT_COURSE_COMMISSION
|
|||||||
val properties = Properties()
|
val properties = Properties()
|
||||||
FileInputStream(configFile).use { properties.load(it) }
|
FileInputStream(configFile).use { properties.load(it) }
|
||||||
|
|
||||||
|
DEBUG_FLAG = properties.getProperty("debug", false.toString()).replace("'", "").toBoolean()
|
||||||
USERNAME = properties.getProperty("username", DEFAULT_USERNAME).replace("'", "")
|
USERNAME = properties.getProperty("username", DEFAULT_USERNAME).replace("'", "")
|
||||||
USER_TOKEN = properties.getProperty("user_token", DEFAULT_USER_TOKEN).replace("'", "")
|
USER_TOKEN = properties.getProperty("user_token", DEFAULT_USER_TOKEN).replace("'", "")
|
||||||
USER_API_URL = properties.getProperty("user_api_url", DEFAULT_USER_API_URL).replace("'", "")
|
USER_API_URL = properties.getProperty("user_api_url", DEFAULT_USER_API_URL).replace("'", "")
|
||||||
@ -158,14 +164,15 @@ course_commission=$DEFAULT_COURSE_COMMISSION
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onEnable() {
|
override fun onEnable() {
|
||||||
// Initialize logger
|
|
||||||
LOGGER = this.logger
|
|
||||||
// Get server instance
|
// Get server instance
|
||||||
SERVER = Bukkit.getServer()
|
SERVER = Bukkit.getServer()
|
||||||
|
|
||||||
// Load configuration
|
// Load configuration
|
||||||
loadConfiguration()
|
loadConfiguration()
|
||||||
|
|
||||||
|
// Initialize logger
|
||||||
|
LOGGER = MyLogger(DEBUG_FLAG, this.logger)
|
||||||
|
|
||||||
getCommand("vpi")?.setExecutor(this)
|
getCommand("vpi")?.setExecutor(this)
|
||||||
|
|
||||||
// Background checks such a auth, invoice check, ...
|
// Background checks such a auth, invoice check, ...
|
||||||
@ -188,54 +195,51 @@ course_commission=$DEFAULT_COURSE_COMMISSION
|
|||||||
sender.sendMessage("&cТолько игроки могут выполнять команды.")
|
sender.sendMessage("&cТолько игроки могут выполнять команды.")
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// val mess = CommandCapture.execute("baltop")
|
|
||||||
// VpcApi.send(sender, TotalBalanceModules.getEssentialsBalance().toString())
|
|
||||||
// return true
|
|
||||||
|
|
||||||
if ((args.size == 3 || args.size == 4) && args[0] == "convert") {
|
if ((args.size == 3 || args.size == 4) && args[0] == "convert") {
|
||||||
logger.severe("Step 1")
|
LOGGER.error("Step 1")
|
||||||
val vpcUsername = DataManager.getPlayerVPCUsername(sender.name)
|
val vpcUsername = DataManager.getPlayerVPCUsername(sender.name)
|
||||||
if (vpcUsername == null) {
|
if (vpcUsername == null) {
|
||||||
VpcApi.send(sender, "&cНеобходимо авторизоваться через: /vpi auth")
|
Utils.send(sender, "&cНеобходимо авторизоваться через: /vpi auth")
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
logger.severe("Step 2")
|
LOGGER.error("Step 2")
|
||||||
val direction = args[1]
|
val direction = args[1]
|
||||||
val amount = abs(args[2].toDouble())
|
val amount = abs(args[2].toDouble())
|
||||||
if (!listOf<String>("vpc", "lc").contains(direction)) {
|
if (!listOf<String>("vpc", "lc").contains(direction)) {
|
||||||
VpcApi.send(sender, "&cНе существует такого направление, правильные: vpc/lc")
|
Utils.send(sender, "&cНе существует такого направление, правильные: vpc/lc")
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
logger.severe("Step 3")
|
LOGGER.error("Step 3")
|
||||||
val course: Double // VPC to LC
|
val course: Double // VPC to LC
|
||||||
if (COURSE_MODE == "static") {
|
if (COURSE_MODE == "static") {
|
||||||
course = COURSE_STATIC_VALUE
|
course = COURSE_STATIC_VALUE
|
||||||
} else {
|
} else {
|
||||||
if (COURSE_DYNAMIC_COMMAND == "baltop force") {
|
if (COURSE_DYNAMIC_COMMAND == "baltop force") {
|
||||||
logger.severe("Step 4.1")
|
LOGGER.error("Step 4.1")
|
||||||
CommandCapture.execute("baltop force")
|
CommandCapture.execute("baltop force")
|
||||||
val globalBalance = TotalBalanceModules.getEssentialsBalance()
|
val globalBalance = TotalBalanceModules.getEssentialsBalance()
|
||||||
logger.info("globalBalance PRE CHECK: $globalBalance")
|
LOGGER.info("globalBalance PRE CHECK: $globalBalance")
|
||||||
logger.severe("Step 4.1.2")
|
LOGGER.error("Step 4.1.2")
|
||||||
val vpcUser = VpcApi.user_in_db(username=USERNAME)
|
val vpcUser = VpcApi.user_in_db(username=USERNAME)
|
||||||
logger.severe("Step 4.1.3")
|
LOGGER.error("Step 4.1.3")
|
||||||
val vpcBalance: Double
|
val vpcBalance: Double
|
||||||
logger.severe("Step 4.1.4")
|
LOGGER.error("Step 4.1.4")
|
||||||
if (vpcUser == null) {
|
if (vpcUser == null) {
|
||||||
throw Exception("null vpcUser")
|
throw Exception("null vpcUser")
|
||||||
}
|
}
|
||||||
logger.severe("Step 4.1.6")
|
LOGGER.error("Step 4.1.6")
|
||||||
logger.info(vpcUser["balance"].toString())
|
LOGGER.info(vpcUser["balance"].toString())
|
||||||
vpcBalance = vpcUser["balance"].toString().toDouble()
|
vpcBalance = vpcUser["balance"].toString().toDouble()
|
||||||
logger.severe("Step 4.1.7")
|
LOGGER.error("Step 4.1.7")
|
||||||
logger.info("globalBalance: $globalBalance")
|
LOGGER.info("globalBalance: $globalBalance")
|
||||||
logger.info("vpcBalance: $vpcBalance")
|
LOGGER.info("vpcBalance: $vpcBalance")
|
||||||
course = globalBalance/vpcBalance
|
course = globalBalance/vpcBalance
|
||||||
logger.info("course: $course")
|
LOGGER.info("course: $course")
|
||||||
} else {
|
} else {
|
||||||
logger.severe("Step 4.2")
|
LOGGER.error("Step 4.2")
|
||||||
val globalBalance = CommandCapture.execute(COURSE_DYNAMIC_COMMAND).toString().toDouble()
|
val globalBalance = CommandCapture.execute(COURSE_DYNAMIC_COMMAND).toString().toDouble()
|
||||||
logger.severe("$globalBalance")
|
LOGGER.error("$globalBalance")
|
||||||
val vpcUser = VpcApi.user_in_db(username=USERNAME)
|
val vpcUser = VpcApi.user_in_db(username=USERNAME)
|
||||||
val vpcBalance: Double
|
val vpcBalance: Double
|
||||||
if (vpcUser == null) {
|
if (vpcUser == null) {
|
||||||
@ -249,14 +253,14 @@ course_commission=$DEFAULT_COURSE_COMMISSION
|
|||||||
if (direction == "vpc") {
|
if (direction == "vpc") {
|
||||||
val amountVPC: Double = amount/course * (1 - COURSE_COMMISSION/100)
|
val amountVPC: Double = amount/course * (1 - COURSE_COMMISSION/100)
|
||||||
if (args.size == 4) {
|
if (args.size == 4) {
|
||||||
logger.severe("Step 5")
|
LOGGER.error("Step 5")
|
||||||
val result: String = CommandCapture.execute(COMMAND_REMOVE_COINS.replace("%player%", sender.name).replace("%amount%", amount.toString()))[0]
|
val result: String = CommandCapture.execute(COMMAND_REMOVE_COINS.replace("%player%", sender.name).replace("%amount%", amount.toString()))[0]
|
||||||
logger.severe("Step 6")
|
LOGGER.error("Step 6")
|
||||||
if (result.contains(COMMAND_REMOVE_ERROR)) {
|
if (result.contains(COMMAND_REMOVE_ERROR)) {
|
||||||
VpcApi.send(sender, "&cОшибка, возможно недостаточно средств.")
|
Utils.send(sender, "&cОшибка, возможно недостаточно средств.")
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
logger.severe("Step 8")
|
LOGGER.error("Step 8")
|
||||||
VpcApi.transfer_coins(vpcUsername, amountVPC)
|
VpcApi.transfer_coins(vpcUsername, amountVPC)
|
||||||
} else {
|
} else {
|
||||||
val colored = ChatColor.translateAlternateColorCodes('&', "${PREFIX}Кликните здесь, чтобы конвертировать &6$amount&3 в &6${String.format("%.4f", amountVPC)} VPC")
|
val colored = ChatColor.translateAlternateColorCodes('&', "${PREFIX}Кликните здесь, чтобы конвертировать &6$amount&3 в &6${String.format("%.4f", amountVPC)} VPC")
|
||||||
@ -278,10 +282,10 @@ course_commission=$DEFAULT_COURSE_COMMISSION
|
|||||||
sender.spigot().sendMessage(message)
|
sender.spigot().sendMessage(message)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
logger.severe("amount: $amount")
|
LOGGER.error("amount: $amount")
|
||||||
logger.severe("course: $course")
|
LOGGER.error("course: $course")
|
||||||
val amountLC: Double = amount*course * (1 + COURSE_COMMISSION/100)
|
val amountLC: Double = amount*course * (1 + COURSE_COMMISSION/100)
|
||||||
logger.severe("amountLC: $amountLC")
|
LOGGER.error("amountLC: $amountLC")
|
||||||
val invoice_id = VpcApi.create_invoice(amount).toString()
|
val invoice_id = VpcApi.create_invoice(amount).toString()
|
||||||
TO_PAY_INVOICES[sender.name] = invoice_id
|
TO_PAY_INVOICES[sender.name] = invoice_id
|
||||||
INVOICES_AMOUNT[invoice_id] = amountLC
|
INVOICES_AMOUNT[invoice_id] = amountLC
|
||||||
@ -293,12 +297,12 @@ course_commission=$DEFAULT_COURSE_COMMISSION
|
|||||||
sender.spigot().sendMessage(message)
|
sender.spigot().sendMessage(message)
|
||||||
}
|
}
|
||||||
} else if (args.isNotEmpty() && args[0] == "convert") {
|
} else if (args.isNotEmpty() && args[0] == "convert") {
|
||||||
VpcApi.send(sender, "/vpi convert <vpc/lc> <сумма>")
|
Utils.send(sender, "/vpi convert <vpc/lc> <сумма>")
|
||||||
|
|
||||||
} else if (args.size == 2 && args[0] == "auth") {
|
} else if (args.size == 2 && args[0] == "auth") {
|
||||||
val vpcUsername = DataManager.getPlayerVPCUsername(sender.name)
|
val vpcUsername = DataManager.getPlayerVPCUsername(sender.name)
|
||||||
if (vpcUsername != null) {
|
if (vpcUsername != null) {
|
||||||
VpcApi.send(sender, "Вы уже авторизованы!")
|
Utils.send(sender, "Вы уже авторизованы!")
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
if (sender.name in TO_AUTH_PLAYERS) {
|
if (sender.name in TO_AUTH_PLAYERS) {
|
||||||
@ -311,13 +315,13 @@ course_commission=$DEFAULT_COURSE_COMMISSION
|
|||||||
}
|
}
|
||||||
val invoice_id = VpcApi.create_invoice(0.001)
|
val invoice_id = VpcApi.create_invoice(0.001)
|
||||||
val vpc_username = args[1]
|
val vpc_username = args[1]
|
||||||
logger.severe("Adding to lists")
|
LOGGER.error("Adding to lists")
|
||||||
synchronized(TO_AUTH_PLAYERS) {
|
synchronized(TO_AUTH_PLAYERS) {
|
||||||
TO_AUTH_PLAYERS[sender.name] = vpc_username
|
TO_AUTH_PLAYERS[sender.name] = vpc_username
|
||||||
TO_AUTH_PLAYERS_INVOICES[sender.name] = invoice_id.toString()
|
TO_AUTH_PLAYERS_INVOICES[sender.name] = invoice_id.toString()
|
||||||
}
|
}
|
||||||
logger.severe("TO_AUTH_PLAYERS: $TO_AUTH_PLAYERS")
|
LOGGER.error("TO_AUTH_PLAYERS: $TO_AUTH_PLAYERS")
|
||||||
logger.severe("TO_AUTH_PLAYERS_INVOICES: $TO_AUTH_PLAYERS_INVOICES")
|
LOGGER.error("TO_AUTH_PLAYERS_INVOICES: $TO_AUTH_PLAYERS_INVOICES")
|
||||||
val colored = ChatColor.translateAlternateColorCodes('&', "${PREFIX}Кликните здесь, чтобы перевести 0.001 VPC")
|
val colored = ChatColor.translateAlternateColorCodes('&', "${PREFIX}Кликните здесь, чтобы перевести 0.001 VPC")
|
||||||
val message = TextComponent(colored)
|
val message = TextComponent(colored)
|
||||||
message.clickEvent = ClickEvent(ClickEvent.Action.RUN_COMMAND, "/vpc pay $USERNAME 0.001 $invoice_id")
|
message.clickEvent = ClickEvent(ClickEvent.Action.RUN_COMMAND, "/vpc pay $USERNAME 0.001 $invoice_id")
|
||||||
@ -325,31 +329,10 @@ course_commission=$DEFAULT_COURSE_COMMISSION
|
|||||||
sender.spigot().sendMessage(message)
|
sender.spigot().sendMessage(message)
|
||||||
|
|
||||||
} else if (args.isNotEmpty() && args[0] == "auth") {
|
} else if (args.isNotEmpty() && args[0] == "auth") {
|
||||||
VpcApi.send(sender, "/vpi auth <ник>")
|
Utils.send(sender, "/vpi auth <ник>")
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// val messages = listOf(
|
Utils.send(sender, """Использование команд:
|
||||||
// "Использование команд:",
|
|
||||||
// "/vpi auth <ник> - Авторизация",
|
|
||||||
// "/vpi convert <куда: vpc/lc> <сумма> - Обмен VPC на локальную валюту или наоборот",
|
|
||||||
// "",
|
|
||||||
// "Почему 'VPC-I'? Потому что это интеграция на конечном сервере - 'VPC Integration'",
|
|
||||||
// "",
|
|
||||||
// "Соглашение: voidproject.del.pw/vpc_agreement",
|
|
||||||
// "Группа ТГ: @void_project_mc",
|
|
||||||
// "Группа ДС: discord.gg/zwNt5DJj6J"
|
|
||||||
// )
|
|
||||||
//
|
|
||||||
// var first: Boolean = true
|
|
||||||
// messages.forEach { message ->
|
|
||||||
// if (first) {
|
|
||||||
// VpcApi.send(sender, message)
|
|
||||||
// first = false
|
|
||||||
// } else {
|
|
||||||
// VpcApi.send(sender, message, "&3")
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
VpcApi.send(sender, """Использование команд:
|
|
||||||
/vpi auth <ник> - Авторизация
|
/vpi auth <ник> - Авторизация
|
||||||
/vpi convert <куда: vpc/lc> <сумма> - Обмен VPC на локальную валюту или наоборот
|
/vpi convert <куда: vpc/lc> <сумма> - Обмен VPC на локальную валюту или наоборот
|
||||||
|
|
||||||
@ -361,15 +344,6 @@ course_commission=$DEFAULT_COURSE_COMMISSION
|
|||||||
}
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
|
|
||||||
// Create a clickable message that runs /help when clicked
|
|
||||||
// val message = TextComponent("Click here to execute command")
|
|
||||||
// val colored = ChatColor.translateAlternateColorCodes('&', "&6Testing")
|
|
||||||
// val message = TextComponent(colored)
|
|
||||||
// message.clickEvent = ClickEvent(ClickEvent.Action.RUN_COMMAND, "/vpc bal")
|
|
||||||
// message.hoverEvent = HoverEvent(HoverEvent.Action.SHOW_TEXT, ComponentBuilder("Click here to execute command").create())
|
|
||||||
//
|
|
||||||
// sender.spigot().sendMessage(message)
|
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
@ -413,14 +387,14 @@ course_commission=$DEFAULT_COURSE_COMMISSION
|
|||||||
// Add null safety checks
|
// Add null safety checks
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
val status = result["status"]
|
val status = result["status"]
|
||||||
logger.severe("Invoice ${entry.value} status: $status")
|
LOGGER.error("Invoice ${entry.value} status: $status")
|
||||||
|
|
||||||
if (status != null && status.toString() == "true") {
|
if (status != null && status.toString() == "true") {
|
||||||
logger.severe("DELETE!!!!!!!!!!!!!!!!")
|
LOGGER.error("DELETE!!!!!!!!!!!!!!!!")
|
||||||
VpcApi.delete_invoice(entry.value)
|
VpcApi.delete_invoice(entry.value)
|
||||||
|
|
||||||
DataManager.setPlayerVPCUsername(entry.key, TO_AUTH_PLAYERS[entry.key].toString())
|
DataManager.setPlayerVPCUsername(entry.key, TO_AUTH_PLAYERS[entry.key].toString())
|
||||||
VpcApi.send(Bukkit.getPlayer(entry.key.toString()), "&aВы успешно авторизованы!")
|
Utils.send(Bukkit.getPlayer(entry.key.toString()), "&aВы успешно авторизованы!")
|
||||||
|
|
||||||
// Safely remove from both maps
|
// Safely remove from both maps
|
||||||
TO_AUTH_PLAYERS.remove(entry.key)
|
TO_AUTH_PLAYERS.remove(entry.key)
|
||||||
@ -430,7 +404,7 @@ course_commission=$DEFAULT_COURSE_COMMISSION
|
|||||||
logger.warning("Received null result for invoice ${entry.value}")
|
logger.warning("Received null result for invoice ${entry.value}")
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
logger.severe("Error processing invoice ${entry.value}: ${e.message}")
|
LOGGER.error("Error processing invoice ${entry.value}: ${e.message}")
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -449,10 +423,10 @@ course_commission=$DEFAULT_COURSE_COMMISSION
|
|||||||
// Add null safety checks
|
// Add null safety checks
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
val status = result["status"]
|
val status = result["status"]
|
||||||
logger.severe("Invoice ${entry.value} status: $status")
|
LOGGER.error("Invoice ${entry.value} status: $status")
|
||||||
|
|
||||||
if (status != null && status.toString() == "true") {
|
if (status != null && status.toString() == "true") {
|
||||||
logger.severe("DELETE!!!!!!!!!!!!!!!!")
|
LOGGER.error("DELETE!!!!!!!!!!!!!!!!")
|
||||||
VpcApi.delete_invoice(entry.value)
|
VpcApi.delete_invoice(entry.value)
|
||||||
|
|
||||||
val amountLC = INVOICES_AMOUNT[entry.value]
|
val amountLC = INVOICES_AMOUNT[entry.value]
|
||||||
@ -463,7 +437,7 @@ course_commission=$DEFAULT_COURSE_COMMISSION
|
|||||||
try {
|
try {
|
||||||
CommandCapture.execute(commandToAddCoins)
|
CommandCapture.execute(commandToAddCoins)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
logger.severe("Error executing command: ${e.message}")
|
LOGGER.error("Error executing command: ${e.message}")
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -476,7 +450,7 @@ course_commission=$DEFAULT_COURSE_COMMISSION
|
|||||||
logger.warning("Received null result for invoice ${entry.value}")
|
logger.warning("Received null result for invoice ${entry.value}")
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
logger.severe("Error processing invoice ${entry.value}: ${e.message}")
|
LOGGER.error("Error processing invoice ${entry.value}: ${e.message}")
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -156,46 +156,9 @@ class VpcApi {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun send(source: CommandSender, message: String, prefix: String = PREFIX) {
|
|
||||||
var first: Boolean = true
|
|
||||||
var mess: String
|
|
||||||
message.split("\n").forEach { el ->
|
|
||||||
mess = el.trimStart()
|
|
||||||
if (first) {
|
|
||||||
source.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + mess))
|
|
||||||
first = false
|
|
||||||
} else {
|
|
||||||
source.sendMessage(ChatColor.translateAlternateColorCodes('&', "&3$mess"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Translate color codes for Spigot
|
|
||||||
// val coloredMessage = ChatColor.translateAlternateColorCodes('&', prefix + message)
|
|
||||||
// source.sendMessage(coloredMessage)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun get_super_UUID(source: CommandSender): String {
|
|
||||||
if (source is Player) {
|
|
||||||
val uuid = source.uniqueId
|
|
||||||
val username = source.name
|
|
||||||
val address = source.address?.hostString ?: "unknown"
|
|
||||||
// Note: Some properties don't exist in 1.12.2, using available alternatives
|
|
||||||
val merged = "$uuid$username$address"
|
|
||||||
return hash(merged)
|
|
||||||
} else {
|
|
||||||
return "None"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Simple hash function (you might want to replace this with a proper hashing algorithm)
|
|
||||||
private fun hash(input: String): String {
|
|
||||||
return UUID.nameUUIDFromBytes(input.toByteArray()).toString()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun user_in_db(source: CommandSender? = null, username: String? = null): Map<String, Any>? {
|
fun user_in_db(source: CommandSender? = null, username: String? = null): Map<String, Any>? {
|
||||||
var mine_uuid: String? = null
|
|
||||||
// Determine which parameter to use
|
|
||||||
val userParam = when {
|
val userParam = when {
|
||||||
username != null -> "username" to username
|
username != null -> "username" to username
|
||||||
source is Player -> "mine_name" to source.name
|
|
||||||
else -> throw IllegalArgumentException("Either source or username must be provided")
|
else -> throw IllegalArgumentException("Either source or username must be provided")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -218,14 +181,13 @@ class VpcApi {
|
|||||||
|
|
||||||
fun transfer_coins(dst_username: String, amount: Double): Any? {
|
fun transfer_coins(dst_username: String, amount: Double): Any? {
|
||||||
val response = sendPost(
|
val response = sendPost(
|
||||||
"transfer_coins/", jsonify(
|
"transfer_coins/",
|
||||||
listOf(
|
jsonify(listOf(
|
||||||
"username", USERNAME,
|
"username", USERNAME,
|
||||||
"user_token", USER_TOKEN,
|
"user_token", USER_TOKEN,
|
||||||
"dst_username", dst_username,
|
"dst_username", dst_username,
|
||||||
"amount", amount.toString()
|
"amount", amount.toString()
|
||||||
)
|
))
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
return if (response.status == 200) {
|
return if (response.status == 200) {
|
||||||
@ -237,13 +199,12 @@ class VpcApi {
|
|||||||
|
|
||||||
fun create_invoice(amount: Double): Any? {
|
fun create_invoice(amount: Double): Any? {
|
||||||
val response = sendPost(
|
val response = sendPost(
|
||||||
"create_invoice/", jsonify(
|
"create_invoice/",
|
||||||
listOf(
|
jsonify(listOf(
|
||||||
"username", USERNAME,
|
"username", USERNAME,
|
||||||
"user_token", USER_TOKEN,
|
"user_token", USER_TOKEN,
|
||||||
"amount", amount.toString()
|
"amount", amount.toString()
|
||||||
)
|
))
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
return if (response.status == 200) {
|
return if (response.status == 200) {
|
||||||
@ -255,13 +216,12 @@ class VpcApi {
|
|||||||
|
|
||||||
fun delete_invoice(invoice_id: String): Any? {
|
fun delete_invoice(invoice_id: String): Any? {
|
||||||
val response = sendPost(
|
val response = sendPost(
|
||||||
"delete_invoice/", jsonify(
|
"delete_invoice/",
|
||||||
listOf(
|
jsonify(listOf(
|
||||||
"username", USERNAME,
|
"username", USERNAME,
|
||||||
"user_token", USER_TOKEN,
|
"user_token", USER_TOKEN,
|
||||||
"invoice_id", invoice_id
|
"invoice_id", invoice_id
|
||||||
)
|
))
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
return if (response.status == 200) {
|
return if (response.status == 200) {
|
||||||
@ -273,13 +233,12 @@ class VpcApi {
|
|||||||
|
|
||||||
fun get_invoice(invoice_id: String): Any? {
|
fun get_invoice(invoice_id: String): Any? {
|
||||||
val response = sendPost(
|
val response = sendPost(
|
||||||
"get_invoice/", jsonify(
|
"get_invoice/",
|
||||||
listOf(
|
jsonify(listOf(
|
||||||
"username", USERNAME,
|
"username", USERNAME,
|
||||||
"user_token", USER_TOKEN,
|
"user_token", USER_TOKEN,
|
||||||
"invoice_id", invoice_id
|
"invoice_id", invoice_id
|
||||||
)
|
))
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// response["someKey"] (map-like access)
|
// response["someKey"] (map-like access)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user