Возможность отключения функциональности.
This commit is contained in:
parent
1dbb100f97
commit
64dae5fdc4
@ -2,7 +2,7 @@ package main.VpcSpigotIntegration
|
||||
|
||||
import main.VpcSpigotIntegration.VpcServerIntegration.Companion.INVOICE_CREATION_TIMES
|
||||
import main.VpcSpigotIntegration.VpcServerIntegration.Companion.LOGGER
|
||||
import main.VpcSpigotIntegration.VpcServerIntegration.Companion.PAY_BY_SIGN
|
||||
import main.VpcSpigotIntegration.VpcServerIntegration.Companion.PAY_BY_SIGN_FEATURE
|
||||
import main.VpcSpigotIntegration.VpcServerIntegration.Companion.PLUGIN
|
||||
import main.VpcSpigotIntegration.VpcServerIntegration.Companion.PREFIX
|
||||
import main.VpcSpigotIntegration.VpcServerIntegration.Companion.SIGN_PAYMENT_INFO
|
||||
@ -15,25 +15,17 @@ import net.md_5.bungee.api.chat.TextComponent
|
||||
import org.bukkit.Bukkit
|
||||
import org.bukkit.Bukkit.getWorld
|
||||
import org.bukkit.ChatColor
|
||||
import org.bukkit.Location
|
||||
import org.bukkit.event.EventHandler
|
||||
import org.bukkit.event.block.BlockEvent
|
||||
import org.bukkit.event.player.PlayerInteractEvent
|
||||
|
||||
import org.bukkit.Material
|
||||
import org.bukkit.block.Chest
|
||||
import org.bukkit.block.Container
|
||||
import org.bukkit.block.Sign
|
||||
import org.bukkit.entity.Player
|
||||
import org.bukkit.event.Listener
|
||||
import org.bukkit.event.block.Action
|
||||
import org.bukkit.event.block.BlockPlaceEvent
|
||||
import org.bukkit.event.block.SignChangeEvent
|
||||
import org.bukkit.inventory.Inventory
|
||||
import org.bukkit.inventory.ItemStack
|
||||
import org.bukkit.plugin.java.JavaPlugin
|
||||
import java.util.Locale
|
||||
import java.util.Locale.getDefault
|
||||
|
||||
class SignPaymentInfo(
|
||||
public val amount: Int,
|
||||
@ -48,7 +40,7 @@ class SignHandler: Listener {
|
||||
@EventHandler
|
||||
fun onClick(event: PlayerInteractEvent) {
|
||||
// Check if feature enabled
|
||||
if (!PAY_BY_SIGN) return
|
||||
if (!PAY_BY_SIGN_FEATURE) return
|
||||
|
||||
// Check if clicked block is a sign
|
||||
val block = event.clickedBlock
|
||||
@ -151,7 +143,7 @@ class SignHandler: Listener {
|
||||
@EventHandler
|
||||
fun onSignChange(event: SignChangeEvent) {
|
||||
// Check if feature enabled
|
||||
if (!PAY_BY_SIGN) return
|
||||
if (!PAY_BY_SIGN_FEATURE) return
|
||||
if (event.getLine(0).contains("[VPC]")) {
|
||||
val vpcUsername = event.getLine(1)
|
||||
val cost: Double? = event.getLine(2).toDoubleOrNull()
|
||||
|
||||
@ -4,7 +4,6 @@ package main.VpcSpigotIntegration
|
||||
// Here you will see the main logic
|
||||
// ----------------------------------------------
|
||||
|
||||
import com.sun.org.apache.xpath.internal.operations.Bool
|
||||
import org.bukkit.plugin.java.JavaPlugin
|
||||
import org.bukkit.Bukkit
|
||||
import org.bukkit.command.Command
|
||||
@ -16,7 +15,6 @@ import net.md_5.bungee.api.chat.HoverEvent
|
||||
import net.md_5.bungee.api.chat.ClickEvent
|
||||
import net.md_5.bungee.api.chat.TextComponent
|
||||
import org.bukkit.ChatColor
|
||||
import org.bukkit.Material
|
||||
import org.bukkit.inventory.ItemStack
|
||||
import org.bukkit.scheduler.BukkitRunnable
|
||||
import java.io.File
|
||||
@ -24,7 +22,6 @@ import java.io.FileInputStream
|
||||
import java.util.Properties
|
||||
import kotlin.collections.mutableMapOf
|
||||
import kotlin.math.abs
|
||||
import kotlin.text.isEmpty
|
||||
|
||||
class VpcServerIntegration() : JavaPlugin(), CommandExecutor {
|
||||
companion object {
|
||||
@ -43,7 +40,9 @@ class VpcServerIntegration() : JavaPlugin(), CommandExecutor {
|
||||
lateinit var COURSE_DYNAMIC_COMMAND: String
|
||||
var COURSE_COMMISSION: Float = DEFAULT_COURSE_COMMISSION
|
||||
var INVOICE_TIMEOUT_SECONDS: Long = DEFAULT_INVOICE_TIMEOUT_SECONDS
|
||||
var PAY_BY_SIGN: Boolean = true
|
||||
// Features
|
||||
var CURRENCY_CONVERT_FEATURE: Boolean = true
|
||||
var PAY_BY_SIGN_FEATURE: Boolean = true
|
||||
|
||||
// Default configuration values
|
||||
const val DEFAULT_USERNAME: String = "test"
|
||||
@ -59,7 +58,9 @@ class VpcServerIntegration() : JavaPlugin(), CommandExecutor {
|
||||
const val DEFAULT_COURSE_DYNAMIC_COMMAND: String = "baltop force"
|
||||
const val DEFAULT_COURSE_COMMISSION: Float = 5.0f
|
||||
const val DEFAULT_INVOICE_TIMEOUT_SECONDS: Long = 300 // 5 minutes
|
||||
const val DEFAULT_PAY_BY_SIGN: Boolean = true
|
||||
// Features
|
||||
const val DEFAULT_PAY_BY_SIGN_FEATURE: Boolean = true
|
||||
const val DEFAULT_CURRENCY_CONVERT_FEATURE: Boolean = true
|
||||
|
||||
// Static configurations
|
||||
const val PREFIX = "&9[&bVPC&7-&6I&9] &3"
|
||||
@ -126,7 +127,9 @@ class VpcServerIntegration() : JavaPlugin(), CommandExecutor {
|
||||
COURSE_DYNAMIC_COMMAND = properties.getProperty("course_dynamic_command", DEFAULT_COURSE_DYNAMIC_COMMAND).replace("'", "")
|
||||
COURSE_COMMISSION = properties.getProperty("course_commission", DEFAULT_COURSE_COMMISSION.toString()).replace("'", "").toFloat()
|
||||
INVOICE_TIMEOUT_SECONDS = properties.getProperty("invoice_timeout_seconds", DEFAULT_INVOICE_TIMEOUT_SECONDS.toString()).replace("'", "").toLong()
|
||||
PAY_BY_SIGN = properties.getProperty("pay_by_sign", DEFAULT_PAY_BY_SIGN.toString()).replace("'", "").toBoolean()
|
||||
// Features
|
||||
CURRENCY_CONVERT_FEATURE = properties.getProperty("currency_convert", DEFAULT_CURRENCY_CONVERT_FEATURE.toString()).replace("'", "").toBoolean()
|
||||
PAY_BY_SIGN_FEATURE = properties.getProperty("pay_by_sign", DEFAULT_PAY_BY_SIGN_FEATURE.toString()).replace("'", "").toBoolean()
|
||||
|
||||
logger.info("Configuration loaded successfully - Username: $USERNAME, API URL: $USER_API_URL")
|
||||
} catch (e: Exception) {
|
||||
@ -198,8 +201,11 @@ invoice_timeout_seconds=$DEFAULT_INVOICE_TIMEOUT_SECONDS
|
||||
# -------------------- END ------------------------
|
||||
|
||||
# ------------------ Features ---------------------
|
||||
# Should we enable currency convert (VPC -> LC and vice versa)
|
||||
currency_convert=${DEFAULT_CURRENCY_CONVERT_FEATURE}
|
||||
|
||||
# Should we enable pay by signs from containers (chest/etc.)?
|
||||
pay_by_sign=${DEFAULT_PAY_BY_SIGN}
|
||||
pay_by_sign=${DEFAULT_PAY_BY_SIGN_FEATURE}
|
||||
# -------------------- END ------------------------
|
||||
""".trimIndent()
|
||||
)
|
||||
@ -246,29 +252,6 @@ pay_by_sign=${DEFAULT_PAY_BY_SIGN}
|
||||
// Run all logic asynchronously
|
||||
Bukkit.getScheduler().runTaskAsynchronously(PLUGIN, Runnable {
|
||||
when {
|
||||
// Currency conversion
|
||||
args.size in 3..4 && args[0] == "convert" -> {
|
||||
handleCurrencyConversion(sender, args)
|
||||
}
|
||||
args.isNotEmpty() && args[0] == "convert" -> {
|
||||
Utils.send(sender, "/vpi convert <vpc/lc> <сумма>")
|
||||
}
|
||||
|
||||
// Course info
|
||||
args.isNotEmpty() && args[0] == "course" -> {
|
||||
val course = calculateExchangeRate()
|
||||
LOGGER.info("Exchange rate calculated: $course")
|
||||
|
||||
if (course.isInfinite() || course == 0.0) {
|
||||
LOGGER.error(if (course.isInfinite()) "Zero global balance?" else "Infinite global balance?")
|
||||
Utils.send(sender, "&cПроизошла ошибка при расчёте курса. Обратитесь к администратору или повторите позже.")
|
||||
} else {
|
||||
val course2VPC = Utils.round(course * (1 - COURSE_COMMISSION / 100), NUM_AFTER_DOT)
|
||||
val course2LC = Utils.round(course * (1 + COURSE_COMMISSION / 100), NUM_AFTER_DOT)
|
||||
Utils.send(sender, "VPC->LC = &6$course2VPC&3 | LC->VPC = &6$course2LC")
|
||||
}
|
||||
}
|
||||
|
||||
// Authentication
|
||||
args.size == 2 && args[0] == "auth" -> {
|
||||
handleAuthentication(sender, args)
|
||||
@ -277,6 +260,41 @@ pay_by_sign=${DEFAULT_PAY_BY_SIGN}
|
||||
Utils.send(sender, "/vpi auth <ник>")
|
||||
}
|
||||
|
||||
// Currency conversion
|
||||
args.isNotEmpty() && args[0] == "convert" -> {
|
||||
if (CURRENCY_CONVERT_FEATURE) {
|
||||
if (args.size in 3..4 && args[0] == "convert") {
|
||||
handleCurrencyConversion(sender, args)
|
||||
} else {
|
||||
Utils.send(sender, "/vpi convert <vpc/lc> <сумма>")
|
||||
}
|
||||
} else {
|
||||
Utils.send(sender, "&cДанная функциональность отключена.")
|
||||
}
|
||||
}
|
||||
|
||||
// Course info
|
||||
args.isNotEmpty() && args[0] == "course" -> {
|
||||
if (CURRENCY_CONVERT_FEATURE) {
|
||||
val course = calculateExchangeRate()
|
||||
LOGGER.info("Exchange rate calculated: $course")
|
||||
|
||||
if (course.isInfinite() || course == 0.0) {
|
||||
LOGGER.error(if (course.isInfinite()) "Zero global balance?" else "Infinite global balance?")
|
||||
Utils.send(
|
||||
sender,
|
||||
"&cПроизошла ошибка при расчёте курса. Обратитесь к администратору или повторите позже."
|
||||
)
|
||||
} else {
|
||||
val course2VPC = Utils.round(course * (1 - COURSE_COMMISSION / 100), NUM_AFTER_DOT)
|
||||
val course2LC = Utils.round(course * (1 + COURSE_COMMISSION / 100), NUM_AFTER_DOT)
|
||||
Utils.send(sender, "VPC->LC = &6$course2VPC&3 | LC->VPC = &6$course2LC")
|
||||
}
|
||||
} else {
|
||||
Utils.send(sender, "&cДанная функциональность отключена.")
|
||||
}
|
||||
}
|
||||
|
||||
// Cancel sign pay
|
||||
args[0] == "signPay" && args[1] == "cancel" -> {
|
||||
val invoiceId = TO_PAY_INVOICES[sender.name].toString()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user