mirror of
https://github.com/plexusorg/Module-Shop.git
synced 2025-07-12 13:38:35 +00:00
kotlin setup
This commit is contained in:
34
src/main/java/dev/plex/shop/ShopMenu.kt
Normal file
34
src/main/java/dev/plex/shop/ShopMenu.kt
Normal file
@ -0,0 +1,34 @@
|
||||
package dev.plex.shop
|
||||
|
||||
import dev.plex.player.PlexPlayer
|
||||
import dev.plex.shop.item.AbstractItem
|
||||
import dev.plex.util.minimessage.SafeMiniMessage
|
||||
import org.bukkit.Bukkit
|
||||
import org.bukkit.entity.Player
|
||||
import org.bukkit.inventory.Inventory
|
||||
|
||||
/**
|
||||
* @author Taah
|
||||
* @project plex-shop
|
||||
* @since 11:21 PM [10-06-2022]
|
||||
*
|
||||
*/
|
||||
class ShopMenu {
|
||||
companion object {
|
||||
val ITEMS = mapOf<Int, AbstractItem>()
|
||||
}
|
||||
|
||||
fun open(plexPlayer: PlexPlayer)
|
||||
{
|
||||
val player: Player? = plexPlayer.player
|
||||
val inventory: Inventory = constructInventory()
|
||||
player?.openInventory(inventory)
|
||||
}
|
||||
|
||||
private fun constructInventory(): Inventory
|
||||
{
|
||||
val inventory: Inventory = Bukkit.createInventory(null, 54, SafeMiniMessage.mmDeserialize("<gold>Shop"))
|
||||
ITEMS.forEach { (t, u) -> inventory.setItem(t, u.item) }
|
||||
return inventory
|
||||
}
|
||||
}
|
18
src/main/java/dev/plex/shop/item/AbstractItem.kt
Normal file
18
src/main/java/dev/plex/shop/item/AbstractItem.kt
Normal file
@ -0,0 +1,18 @@
|
||||
package dev.plex.shop.item
|
||||
|
||||
import dev.plex.cache.DataUtils
|
||||
import dev.plex.player.PlexPlayer
|
||||
import org.bukkit.inventory.ItemStack
|
||||
import java.util.concurrent.CompletableFuture
|
||||
|
||||
abstract class AbstractItem(val item: ItemStack, private val cost: Double)
|
||||
{
|
||||
fun purchase(player: PlexPlayer)
|
||||
{
|
||||
player.coins.minus(this.cost);
|
||||
player.player?.inventory?.addItem(this.item);
|
||||
CompletableFuture.runAsync {
|
||||
DataUtils.update(player);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user