Мелкие доработки оплаты по табличке.
This commit is contained in:
parent
57dc685c5d
commit
1dbb100f97
@ -38,7 +38,7 @@ import java.util.Locale.getDefault
|
||||
class SignPaymentInfo(
|
||||
public val amount: Int,
|
||||
public val type: Material,
|
||||
public val container: Chest,
|
||||
public val container: Container,
|
||||
public val player: Player,
|
||||
public val cost: Double,
|
||||
public val dst_username: String
|
||||
@ -51,7 +51,7 @@ class SignHandler: Listener {
|
||||
if (!PAY_BY_SIGN) return
|
||||
|
||||
// Check if clicked block is a sign
|
||||
val block = event.clickedBlock!!
|
||||
val block = event.clickedBlock
|
||||
if (block.type != Material.SIGN_POST && block.type != Material.WALL_SIGN) return
|
||||
// Verify it's actually a sign state
|
||||
val state = block.state
|
||||
@ -66,7 +66,11 @@ class SignHandler: Listener {
|
||||
|
||||
// Check if player already have open invoices
|
||||
if (TO_PAY_SIGN_INVOICES.contains(event.player.name)) {
|
||||
Utils.send(event.player, "&cУ вас уже есть открытый счёт, сначала оплатите его.")
|
||||
val message = TextComponent(ChatColor.translateAlternateColorCodes('&',"&cУ вас уже есть открытый счёт, сначала оплатите его или &6отмените."))
|
||||
message.clickEvent = ClickEvent(ClickEvent.Action.RUN_COMMAND, "/vpi signPay cancel")
|
||||
message.hoverEvent = HoverEvent(HoverEvent.Action.SHOW_TEXT,
|
||||
ComponentBuilder("/vpi signPay cancel").create())
|
||||
event.player.spigot().sendMessage(message)
|
||||
return
|
||||
}
|
||||
|
||||
@ -93,9 +97,9 @@ class SignHandler: Listener {
|
||||
val containerBlock = getWorld(event.clickedBlock.world.uid).getBlockAt(cordX, cordY, cordZ)
|
||||
LOGGER.info("Container block: $cordX $cordY $cordZ")
|
||||
|
||||
val container: Chest = containerBlock.state as Chest
|
||||
LOGGER.info("Content: ${container.blockInventory.contents}")
|
||||
var firstItem = container.blockInventory.contents.filterNotNull().firstOrNull()
|
||||
val container: Container = containerBlock.state as Container
|
||||
LOGGER.info("Content: ${container.inventory.contents}")
|
||||
var firstItem = container.inventory.contents.filterNotNull().firstOrNull()
|
||||
if (firstItem == null) {
|
||||
Utils.send(event.player,"&cВ контейнере нет предметов для покупки.")
|
||||
}
|
||||
@ -155,7 +159,7 @@ class SignHandler: Listener {
|
||||
|
||||
var coloredLine: String
|
||||
// Check if some data is missing
|
||||
if (vpcUsername.isEmpty() || cost == null || amount == null || amount < 0 || cost < 0) {
|
||||
if (vpcUsername.isEmpty() || cost == null || amount == null || amount < 0 || cost < 0 || cost < 0.0001) {
|
||||
coloredLine = ChatColor.translateAlternateColorCodes('&', "$PREFIX&cError")
|
||||
event.setLine(0, coloredLine)
|
||||
return
|
||||
|
||||
@ -277,6 +277,18 @@ pay_by_sign=${DEFAULT_PAY_BY_SIGN}
|
||||
Utils.send(sender, "/vpi auth <ник>")
|
||||
}
|
||||
|
||||
// Cancel sign pay
|
||||
args[0] == "signPay" && args[1] == "cancel" -> {
|
||||
val invoiceId = TO_PAY_INVOICES[sender.name].toString()
|
||||
VpcApi.delete_invoice(invoiceId)
|
||||
synchronized(TO_PAY_SIGN_INVOICES) {
|
||||
TO_PAY_SIGN_INVOICES.remove(sender.name)
|
||||
INVOICE_CREATION_TIMES.remove(invoiceId)
|
||||
SIGN_PAYMENT_INFO.remove(invoiceId)
|
||||
}
|
||||
Utils.send(sender, "Счёт успешно отменён.")
|
||||
}
|
||||
|
||||
// Default help menu
|
||||
else -> {
|
||||
showHelpMenu(sender)
|
||||
@ -721,12 +733,20 @@ pay_by_sign=${DEFAULT_PAY_BY_SIGN}
|
||||
}
|
||||
} else {
|
||||
// If we have needed items
|
||||
paymentInfo.player.inventory.addItem(itemStack)
|
||||
paymentInfo.container.inventory.removeItem(itemStack)
|
||||
|
||||
val transferResult = VpcApi.transfer_coins(paymentInfo.dst_username, paymentInfo.cost).toString()
|
||||
if (transferResult != "OK") {
|
||||
LOGGER.error("Can't transfer VPC, result: $transferResult")
|
||||
Utils.send(paymentInfo.player, "&cПеревод адресату невозможен, отмена покупки.")
|
||||
// Return VPC
|
||||
val vpcUsername = DataManager.getPlayerVPCUsername(paymentInfo.player.name).toString()
|
||||
val transferResult = VpcApi.transfer_coins(vpcUsername, paymentInfo.cost).toString()
|
||||
if (transferResult != "OK") {
|
||||
LOGGER.error("Can't return VPC, result: $transferResult")
|
||||
Utils.send(paymentInfo.player, "&cНевозможно вернуть VPC, обратитесь к администратору: $transferResult")
|
||||
}
|
||||
} else {
|
||||
paymentInfo.player.inventory.addItem(itemStack)
|
||||
paymentInfo.container.inventory.removeItem(itemStack)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user