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