支持MMOItem

This commit is contained in:
小白
2023-10-08 15:48:52 +08:00
parent 9df652dfbc
commit 2f270b49b0
11 changed files with 194 additions and 9 deletions
+9 -3
View File
@@ -2,7 +2,7 @@ plugins {
`java-library` `java-library`
`maven-publish` `maven-publish`
id("io.izzel.taboolib") version "1.54" id("io.izzel.taboolib") version "1.54"
id("org.jetbrains.kotlin.jvm") version "1.8.0" id("org.jetbrains.kotlin.jvm") version "1.7.10"
} }
taboolib { taboolib {
@@ -10,6 +10,8 @@ taboolib {
dependencies { dependencies {
name("PlaceholderAPI").optional(true) name("PlaceholderAPI").optional(true)
name("Vault").optional(true) name("Vault").optional(true)
name("MMOItems").optional(true)
name("Zaphkiel").optional(true)
} }
contributors { contributors {
name("小白") name("小白")
@@ -28,9 +30,10 @@ taboolib {
install("platform-bukkit") install("platform-bukkit")
install("expansion-command-helper") install("expansion-command-helper")
classifier = null classifier = null
version = "6.0.11-13" version = "6.0.12-13"
options("skit-kotlin") options("skit-kotlin")
relocate("kotlin","libs.kotlin180") relocate("kotlin", "libs.kotlin171")
relocate("com.xbaimiao.ktor", "libs.kotlin171.ktor")
} }
repositories { repositories {
@@ -40,12 +43,15 @@ repositories {
dependencies { dependencies {
compileOnly("ink.ptms:nms-all:1.0.0") compileOnly("ink.ptms:nms-all:1.0.0")
compileOnly("public:MythicMobs:4.14.1")
compileOnly("public:papi:1.0.0") compileOnly("public:papi:1.0.0")
compileOnly("public:vault:1.0.0") compileOnly("public:vault:1.0.0")
compileOnly("public:points:1.0.0") compileOnly("public:points:1.0.0")
compileOnly("ink.ptms.core:v11902:11902-minimize:mapped") compileOnly("ink.ptms.core:v11902:11902-minimize:mapped")
compileOnly("ink.ptms.core:v11902:11902-minimize:universal") compileOnly("ink.ptms.core:v11902:11902-minimize:universal")
compileOnly("public:Zaphkiel:1.0.0") compileOnly("public:Zaphkiel:1.0.0")
compileOnly("public:MMOItems:6.9.4")
taboo("com.xbaimiao.ktor:ktor-plugins-bukkit:1.0.8")
taboo(kotlin("stdlib")) taboo(kotlin("stdlib"))
compileOnly(fileTree("libs")) compileOnly(fileTree("libs"))
} }
+1 -1
View File
@@ -1,2 +1,2 @@
group=com.github.xbaimiao.shoppro group=com.github.xbaimiao.shoppro
version=1.1.9 version=1.2.1
@@ -6,11 +6,15 @@ import com.github.xbaimiao.shoppro.core.database.SQLiteDatabase
import com.github.xbaimiao.shoppro.core.item.ItemLoaderManager import com.github.xbaimiao.shoppro.core.item.ItemLoaderManager
import com.github.xbaimiao.shoppro.core.shop.ShopManager import com.github.xbaimiao.shoppro.core.shop.ShopManager
import com.github.xbaimiao.shoppro.core.vault.DiyCurrency import com.github.xbaimiao.shoppro.core.vault.DiyCurrency
import com.xbaimiao.ktor.KtorPluginsBukkit
import com.xbaimiao.ktor.KtorStat
import taboolib.common.platform.Plugin import taboolib.common.platform.Plugin
import taboolib.common.platform.function.info
import taboolib.module.configuration.Config import taboolib.module.configuration.Config
import taboolib.module.configuration.Configuration import taboolib.module.configuration.Configuration
import taboolib.platform.BukkitPlugin
object ShopPro : Plugin() { object ShopPro : Plugin(), KtorStat {
@Config(value = "config.yml") @Config(value = "config.yml")
lateinit var config: Configuration lateinit var config: Configuration
@@ -21,6 +25,9 @@ object ShopPro : Plugin() {
val itemLoaderManager = ItemLoaderManager() val itemLoaderManager = ItemLoaderManager()
override fun onActive() { override fun onActive() {
KtorPluginsBukkit.init(BukkitPlugin.getInstance(), this)
info("$userId 感谢您的使用")
stat()
ShopManager.load() ShopManager.load()
DiyCurrency.load() DiyCurrency.load()
database = if (config.getBoolean("mysql.enable")) MysqlDatabase(config) else SQLiteDatabase() database = if (config.getBoolean("mysql.enable")) MysqlDatabase(config) else SQLiteDatabase()
@@ -12,6 +12,8 @@ class ItemLoaderManager {
itemLoaders.add(ItemsAdderShopItem) itemLoaders.add(ItemsAdderShopItem)
itemLoaders.add(HeadShopItem) itemLoaders.add(HeadShopItem)
itemLoaders.add(ZapItem) itemLoaders.add(ZapItem)
itemLoaders.add(MythicItem)
itemLoaders.add(MMOItem)
} }
fun getVanillaShop(): ItemLoader = VanillaShopItem.Companion fun getVanillaShop(): ItemLoader = VanillaShopItem.Companion
@@ -15,7 +15,7 @@ class ItemsAdderShopItem(
itemSetting: ItemSetting itemSetting: ItemSetting
) : ShopItem(itemSetting) { ) : ShopItem(itemSetting) {
override val material: Material final override val material: Material
val custom: Int val custom: Int
@@ -0,0 +1,67 @@
package com.github.xbaimiao.shoppro.core.item.impl
import com.github.xbaimiao.shoppro.core.item.Item
import com.github.xbaimiao.shoppro.core.item.ItemLoader
import com.github.xbaimiao.shoppro.core.shop.Shop
import net.Indyuce.mmoitems.MMOItems
import net.Indyuce.mmoitems.api.Type
import org.bukkit.Bukkit
import org.bukkit.Material
import org.bukkit.configuration.ConfigurationSection
import org.bukkit.entity.Player
import org.bukkit.inventory.ItemStack
/**
* MMOItem
*
* @author xbaimiao
* @since 2023/10/5 12:42
*/
class MMOItem(
private val itemStack: ItemStack,
private val type: Type,
private val mmoitemsID: String,
itemSetting: ItemSetting
) : VanillaShopItem(itemSetting) {
override val material: Material
get() = itemStack.type
override fun vanillaItem(player: Player): ItemStack {
return itemStack
}
override fun equal(itemStack: ItemStack): Boolean {
val t = MMOItems.getType(itemStack) ?: return false
if (t != type) return false
val i = MMOItems.getID(itemStack) ?: return false
return i == mmoitemsID
}
companion object : ItemLoader() {
override val prefix: String = "MMO_ITEM"
override fun formSection(char: Char, section: ConfigurationSection, shop: Shop): Item {
if (Bukkit.getPluginManager().getPlugin("MMOItems") == null) {
error("MMOItems Plugin not found")
}
val mmoitemsData = section.getString("material")!!.substring(prefix.length + 1).split(":")
val type = Type.get(mmoitemsData[0]) ?: error("MMOItems ${mmoitemsData[0]} not is type")
val id = mmoitemsData[1]
val item = MMOItems.plugin.getItem(type, id) ?: error("MMOItems $mmoitemsData 不是一个有效的物品")
return MMOItem(
item,
type,
id,
section.toItemSetting(char, shop)
)
}
override fun parseToMaterial(section: ConfigurationSection): Material {
return Material.AIR
}
}
}
@@ -0,0 +1,57 @@
package com.github.xbaimiao.shoppro.core.item.impl
import com.github.xbaimiao.shoppro.core.item.Item
import com.github.xbaimiao.shoppro.core.item.ItemLoader
import com.github.xbaimiao.shoppro.core.shop.Shop
import io.lumine.xikage.mythicmobs.MythicMobs
import io.lumine.xikage.mythicmobs.adapters.bukkit.BukkitAdapter
import org.bukkit.Bukkit
import org.bukkit.Material
import org.bukkit.configuration.ConfigurationSection
import org.bukkit.entity.Player
import org.bukkit.inventory.ItemStack
/**
* @author 小白
* @date 2023/5/15 17:59
**/
class MythicItem(
private val itemStack: ItemStack,
itemSetting: ItemSetting
) : VanillaShopItem(itemSetting) {
override val material: Material
get() = itemStack.type
override fun vanillaItem(player: Player): ItemStack {
return itemStack
}
override fun equal(itemStack: ItemStack): Boolean {
return itemStack.isSimilar(this.itemStack)
}
companion object : ItemLoader() {
override val prefix: String = "MM"
override fun formSection(char: Char, section: ConfigurationSection, shop: Shop): Item {
if (Bukkit.getPluginManager().plugins.find { it.name.lowercase() == "MythicMobs".lowercase() } == null) {
error("MythicMobs Plugin not found")
}
val mmID = section.getString("material")!!.substring(prefix.length + 1)
val item = MythicMobs.inst().itemManager.getItem(mmID) ?: error("MythicMobs $mmID not found")
if (!item.isPresent) {
error("MythicMobs $mmID not found")
}
return MythicItem(BukkitAdapter.adapt(item.get().generateItemStack(1)), section.toItemSetting(char, shop))
}
override fun parseToMaterial(section: ConfigurationSection): Material {
return Material.AIR
}
}
}
+24 -1
View File
@@ -7,7 +7,7 @@ title: "系统出售商店"
# 物品摆放顺序 # 物品摆放顺序
slots: slots:
- 'NNNNNNNNN' - 'NNNNNNNNN'
- 'NABC N' - 'NABCD N'
- 'NNNNNNNNN' - 'NNNNNNNNN'
items: items:
N: N:
@@ -85,6 +85,29 @@ items:
limit-player: 500 limit-player: 500
# 物品金额 # 物品金额
price: 2 price: 2
lore:
- '&e| &7这里可以购买&6 ${name}'
- '&e| &7购买单价 &6${price}'
- '&e| &7你的余额 &6${money}'
- ''
- '&e|&6 左击 &7购买 &6单个'
- '&e|&6 右击 &7购买 &6一组 &7需要 &6${price64}'
- ''
- '&e| &7限买公示:'
- '&e| &7每人限制购买: ${limit}'
- '&e| &7全服限制购买: ${allLimit}'
- '&e| &7您已购买: ${limit-player}'
- '&e| &7全服剩余: ${limit-server}'
# MM物品示范
D:
material: 'MM:KingsCrown'
name: 'MM物品'
# 每日限购买
limit: 5000
# 每个玩家限购买
limit-player: 500
# 物品金额
price: 2
lore: lore:
- '&e| &7这里可以购买&6 ${name}' - '&e| &7这里可以购买&6 ${name}'
- '&e| &7购买单价 &6${price}' - '&e| &7购买单价 &6${price}'
+25 -2
View File
@@ -7,7 +7,7 @@ title: "系统收购商店"
# 物品摆放顺序 # 物品摆放顺序
slots: slots:
- 'NNNNNNNNN' - 'NNNNNNNNN'
- 'NABC N' - 'NABCD N'
- 'NNNNNNNNN' - 'NNNNNNNNN'
items: items:
N: N:
@@ -98,4 +98,27 @@ items:
- '&e· &7每人限制出售: ${limit}' - '&e· &7每人限制出售: ${limit}'
- '&e· &7全服限制出售: ${allLimit}' - '&e· &7全服限制出售: ${allLimit}'
- '&e· &7您当前已出售: ${limit-player} &8| &7全服剩余: ${limit-server}' - '&e· &7您当前已出售: ${limit-player} &8| &7全服剩余: ${limit-server}'
- '&x&F&5&A&5&0&E&M &x&E&E&A&2&1&C&M &x&E&7&9&F&2&A&M &x&E&0&9&C&3&8&M &x&D&9&9&9&4&6&M &x&D&2&9&6&5&4&M &x&C&B&9&3&6&2&M &x&C&4&9&C&7&0&M &x&B&D&9&F&7&E&M &x&B&D&9&F&7&E&M &x&B&6&A&2&8&C&M &x&A&F&A&5&9&A&M &M &M &x&A&F&A&5&9&A&M &M &M &x&B&6&A&2&8&C&M &x&B&D&9&F&7&E&M &x&C&4&9&C&7&0&M &x&C&B&9&9&6&2&M &x&D&2&9&6&5&4&M &x&D&9&9&3&4&6&M &x&E&0&9&0&3&8&M &x&E&7&8&D&2&A&M &x&E&E&8&A&1&C&M &x&F&5&8&7&0&E&M &x&F&C&8&4&0&0&M ' - '&x&F&5&A&5&0&E&M &x&E&E&A&2&1&C&M &x&E&7&9&F&2&A&M &x&E&0&9&C&3&8&M &x&D&9&9&9&4&6&M &x&D&2&9&6&5&4&M &x&C&B&9&3&6&2&M &x&C&4&9&C&7&0&M &x&B&D&9&F&7&E&M &x&B&D&9&F&7&E&M &x&B&6&A&2&8&C&M &x&A&F&A&5&9&A&M &M &M &x&A&F&A&5&9&A&M &M &M &x&B&6&A&2&8&C&M &x&B&D&9&F&7&E&M &x&C&4&9&C&7&0&M &x&C&B&9&9&6&2&M &x&D&2&9&6&5&4&M &x&D&9&9&3&4&6&M &x&E&0&9&0&3&8&M &x&E&7&8&D&2&A&M &x&E&E&8&A&1&C&M &x&F&5&8&7&0&E&M &x&F&C&8&4&0&0&M '
D:
material: 'MMO_ITEM:SWORD:新手剑'
name: 'MMO_ITEM物品名'
# 每日限出售
limit: 5000
# 每个玩家限出售
limit-player: 500
# 物品金额
price: 1
lore:
- '&e| &7这里可以出售你背包里面的&6 ${name}'
- '&e| &7收购单价 &6${price}'
- '&e| &7你的余额 &6${money}'
- ''
- '&e|&6 左击 &7出售 &6单个'
- '&e|&6 右击 &7出售 &6一组 &7获得 &6${price64}'
- '&e|&6 Shift + 右击 &7出售 &6背包所有 &7获得${priceAll}'
- ''
- '&e| &7限售公示:'
- '&e| &7每人限制出售: ${limit}'
- '&e| &7全服限制出售: ${allLimit}'
- '&e| &7您已出售: ${limit-player}'
- '&e| &7全服剩余: ${limit-server}'