Skip to content

Commit

Permalink
更新上游
Browse files Browse the repository at this point in the history
支持1.20.1
优化代码
  • Loading branch information
Iseason2000 committed Aug 31, 2024
1 parent b0426f6 commit d7d925b
Show file tree
Hide file tree
Showing 25 changed files with 292 additions and 404 deletions.
51 changes: 12 additions & 39 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,27 +1,16 @@
plugins {
kotlin("jvm")
id("com.github.johnrengelman.shadow")
}

buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath("com.guardsquare:proguard-gradle:7.4.0-beta01")
}
id("com.gradleup.shadow")
}

subprojects {
group = rootProject.group
version = rootProject.version
apply {
plugin<com.github.jengelman.gradle.plugins.shadow.ShadowPlugin>()
plugin<JavaPlugin>()
plugin<JavaLibraryPlugin>()
}
repositories {
// 阿里的服务器速度快一点
maven {
name = "aliyun"
url = uri("https://maven.aliyun.com/repository/public")
Expand All @@ -36,6 +25,10 @@ subprojects {
name = "spigot"
url = uri("https://hub.spigotmc.org/nexus/content/repositories/public/")
}
maven {
name = "papermc"
url = uri("https://repo.papermc.io/repository/maven-public/")
}
maven {
name = "jitpack"
url = uri("https://jitpack.io")
Expand All @@ -54,42 +47,22 @@ subprojects {
dependencies {
val kotlinVersion: String by rootProject
val exposedVersion: String by rootProject
val nbtEditorVersion: String by rootProject

compileOnly("de.tr7zw:item-nbt-api-plugin:2.13.2")
compileOnly(platform("org.jetbrains.kotlin:kotlin-bom:$kotlinVersion"))
//基础库
compileOnly(kotlin("stdlib"))
compileOnly("org.spigotmc:spigot-api:1.20.1-R0.1-SNAPSHOT")
compileOnly("org.spigotmc", "spigot-api", "1.20.3-R0.1-SNAPSHOT", "compile")
compileOnly("me.clip:placeholderapi:2.11.3")
implementation("io.github.bananapuncher714:nbteditor:$nbtEditorVersion")

// 数据库
compileOnly("org.jetbrains.exposed:exposed-core:$exposedVersion") {
isTransitive = false
targetConfiguration = "runtime"
}
compileOnly("org.jetbrains.exposed:exposed-dao:$exposedVersion") {
isTransitive = false
targetConfiguration = "runtime"
}
compileOnly("org.jetbrains.exposed:exposed-jdbc:$exposedVersion") {
isTransitive = false
targetConfiguration = "runtime"
}
compileOnly("org.jetbrains.exposed:exposed-java-time:$exposedVersion") {
isTransitive = false
targetConfiguration = "runtime"
}
compileOnly("org.jetbrains.exposed", "exposed-core", exposedVersion, "compile")
compileOnly("org.jetbrains.exposed", "exposed-dao", exposedVersion, "compile")
compileOnly("org.jetbrains.exposed", "exposed-jdbc", exposedVersion, "compile")
compileOnly("org.jetbrains.exposed", "exposed-java-time", exposedVersion, "compile")

compileOnly("com.zaxxer:HikariCP:4.0.3")
}

tasks {
compileJava {
options.encoding = "UTF-8"
sourceCompatibility = "1.8"
targetCompatibility = "1.8"
}
}

}

Expand Down
31 changes: 17 additions & 14 deletions core/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,37 +1,40 @@
plugins {
kotlin("jvm")
id("org.jetbrains.dokka") version "1.8.20"
id("org.jetbrains.dokka") version "1.9.20"
}

group = "top.iseason.bukkittemplate"

val exposedVersion: String by rootProject
repositories {
maven {
name = "MMOItems"
url = uri("https://nexus.phoenixdevt.fr/repository/maven-public/")
}
maven {
name = "Oraxen"
url = uri("https://repo.oraxen.com/releases")
}
}
dependencies {
// compileOnly("org.spigotmc:spigot-api:1.19.4-R0.1-SNAPSHOT")
dokkaHtmlPlugin("org.jetbrains.dokka:kotlin-as-java-plugin:1.8.10")
dokkaHtmlPlugin("org.jetbrains.dokka:kotlin-as-java-plugin:1.9.20")

compileOnly("net.kyori:adventure-text-minimessage:4.13.0")
compileOnly("net.kyori:adventure-platform-bukkit:4.3.0")
implementation("org.bstats:bstats-bukkit:3.0.1")
compileOnly("net.kyori:adventure-text-minimessage:4.17.0")
compileOnly("net.kyori:adventure-platform-bukkit:4.3.2")
implementation("org.bstats:bstats-bukkit:3.0.2")

compileOnly("net.Indyuce:MMOItems-API:6.9.2-SNAPSHOT") { isTransitive = false }
compileOnly("com.github.LoneDev6:api-itemsadder:3.4.1-r4") { isTransitive = false }
compileOnly("com.github.oraxen:oraxen:1.155.3") { isTransitive = false }
compileOnly("net.Indyuce:MMOItems-API:6.9.4-SNAPSHOT") { isTransitive = false }
compileOnly("com.github.LoneDev6:api-itemsadder:3.6.1") { isTransitive = false }
compileOnly("io.th0rgal:oraxen:1.175.0") { isTransitive = false }
}
tasks {
kotlin {
jvmToolchain(8)
}

compileJava {
options.encoding = "UTF-8"
options.isFailOnError = false
options.isWarnings = false
options.isVerbose = false
}
build {
dependsOn(named("shadowJar"))
}
dokkaHtml.configure {
dokkaSourceSets {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ object ParamSuggestCache {
/**
* 建议物品材质名
*/
val materialTypes = Material.values().map {
val materialTypes = Material.entries.map {
it.name.lowercase()
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,16 @@ import org.jetbrains.exposed.sql.statements.StatementContext
import org.jetbrains.exposed.sql.statements.expandArgs
import org.jetbrains.exposed.sql.transactions.TransactionManager
import org.jetbrains.exposed.sql.transactions.transaction
import org.jetbrains.exposed.sql.transactions.transactionManager
import top.iseason.bukkittemplate.BukkitTemplate
import top.iseason.bukkittemplate.DisableHook
import top.iseason.bukkittemplate.config.annotations.Comment
import top.iseason.bukkittemplate.config.annotations.FilePath
import top.iseason.bukkittemplate.config.annotations.Key
import top.iseason.bukkittemplate.debug.debug
import top.iseason.bukkittemplate.debug.info
import top.iseason.bukkittemplate.utils.JavaVersion
import java.io.Closeable
import java.io.File
import java.util.*

Expand Down Expand Up @@ -124,6 +127,8 @@ object DatabaseConfig : SimpleYAMLConfig() {
@Key
var data_source__leakDetectionThreshold = 0L

private var ds: Closeable? = null


// table缓存
private var tables: Array<out Table> = emptyArray()
Expand All @@ -132,12 +137,22 @@ object DatabaseConfig : SimpleYAMLConfig() {
private var isConnecting = false
lateinit var connection: Database
private set
private var ds: HikariDataSource? = null

init {
DisableHook.addTask { closeDB() }
}

init {
val runtimeManager = BukkitTemplate.getRuntimeManager()
.addRepository("https://maven.aliyun.com/repository/public")
.addRepository("https://repo.maven.apache.org/maven2/")
if (JavaVersion.isGreaterOrEqual(11)) {
runtimeManager.downloadDependency("com.zaxxer:HikariCP:5.1.0", 1)
} else {
runtimeManager.downloadDependency("com.zaxxer:HikariCP:4.0.3", 1)
}
}

override fun onLoaded(section: ConfigurationSection) {
isAutoUpdate = autoReload
reConnected()
Expand Down Expand Up @@ -176,26 +191,30 @@ object DatabaseConfig : SimpleYAMLConfig() {
}
val config = when (database_type) {
"MySQL" -> HikariConfig(props).apply {
runtimeManager.downloadADependency("mysql:mysql-connector-java:8.0.30")
runtimeManager.downloadADependency("mysql:mysql-connector-java:8.0.33")
jdbcUrl = "jdbc:mysql://$address/$database_name$params"
//可能兼容旧的mysql驱动
driverClassName = "com.mysql.jdbc.Driver"
}

"MariaDB" -> HikariConfig(props).apply {
runtimeManager.downloadADependency("org.mariadb.jdbc:mariadb-java-client:3.1.3")
runtimeManager.downloadADependency("org.mariadb.jdbc:mariadb-java-client:3.4.1")
jdbcUrl = "jdbc:mariadb://$address/$database_name$params"
driverClassName = "org.mariadb.jdbc.Driver"
}

"SQLite" -> HikariConfig(props).apply {
runtimeManager.downloadADependencyAssembly("org.xerial:sqlite-jdbc:3.41.2.0")
runtimeManager.downloadADependencyAssembly("org.xerial:sqlite-jdbc:3.46.1.0")
jdbcUrl = "jdbc:sqlite:$address$params"
driverClassName = "org.sqlite.JDBC"
}

"H2" -> HikariConfig().apply {
runtimeManager.downloadADependency("com.h2database:h2:2.2.220")
if (JavaVersion.isGreaterOrEqual(11)) {
runtimeManager.downloadADependency("com.h2database:h2:2.3.232")
} else {
runtimeManager.downloadADependency("com.h2database:h2:2.2.224")
}
jdbcUrl = "jdbc:h2:$address/$database_name$params"
driverClassName = "org.h2.Driver"
}
Expand All @@ -207,13 +226,22 @@ object DatabaseConfig : SimpleYAMLConfig() {
}

"Oracle" -> HikariConfig(props).apply {
runtimeManager.downloadADependency("com.oracle.database.jdbc:ojdbc8:21.9.0.0")
val oracleVersion = "23.5.0.24.07"
if (JavaVersion.isGreaterOrEqual(11)) {
runtimeManager.downloadADependency("com.oracle.database.jdbc:ojdbc11:$oracleVersion")
} else {
runtimeManager.downloadADependency("com.oracle.database.jdbc:ojdbc8:$oracleVersion")
}
jdbcUrl = "dbc:oracle:thin:@//$address/$database_name$params"
driverClassName = "oracle.jdbc.OracleDriver"
}

"SQLServer" -> HikariConfig(props).apply {
runtimeManager.downloadADependency("com.microsoft.sqlserver:mssql-jdbc:11.2.3.jre8")
if (JavaVersion.isGreaterOrEqual(11)) {
runtimeManager.downloadADependency("com.microsoft.sqlserver:mssql-jdbc:12.8.1.jre11")
} else {
runtimeManager.downloadADependency("com.microsoft.sqlserver:mssql-jdbc:12.8.1.jre8")
}
jdbcUrl = "jdbc:sqlserver://$address;DatabaseName=$database_name$params"
driverClassName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
}
Expand All @@ -233,10 +261,12 @@ object DatabaseConfig : SimpleYAMLConfig() {
} catch (_: Throwable) {
}
}
ds = HikariDataSource(config)
connection = Database.connect(ds!!, databaseConfig = org.jetbrains.exposed.sql.DatabaseConfig.invoke {
sqlLogger = MySqlLogger
})
val hikariDataSource = HikariDataSource(config)
ds = hikariDataSource
connection =
Database.connect(hikariDataSource, databaseConfig = org.jetbrains.exposed.sql.DatabaseConfig.invoke {
sqlLogger = MySqlLogger
})
isConnected = true
info("&a数据库链接成功: &6$database_type")
}.getOrElse {
Expand Down Expand Up @@ -267,8 +297,8 @@ object DatabaseConfig : SimpleYAMLConfig() {
this.tables = tables
runCatching {
dbTransaction {
SchemaUtils.createMissingTablesAndColumns(*tables)
// SchemaUtils.create(*tables)
SchemaUtils.create(*tables)
// SchemaUtils.createMissingTablesAndColumns(tables = tables, inBatch = false, withLogs = false)
}
}.getOrElse { it.printStackTrace() }
}
Expand Down Expand Up @@ -300,5 +330,12 @@ object MySqlLogger : SqlLogger {
/**
* 使用本插件数据库的事务
*/
fun <T> dbTransaction(statement: Transaction.() -> T) =
transaction(DatabaseConfig.connection, statement)
fun <T> dbTransaction(readOnly: Boolean = false, statement: Transaction.() -> T): T {
val db = DatabaseConfig.connection
return transaction(
db.transactionManager.defaultIsolationLevel,
readOnly,
db,
statement
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ open class SimpleYAMLConfig(
/**
* 本配置类的所有项
*/
private val keys = buildList {
private val keys = mutableListOf<ConfigKey>().apply {
//当前类是否标注了 @Key
val isAllKey = this@SimpleYAMLConfig.javaClass.getAnnotation(Key::class.java) != null
var superClass: Class<*>? = this@SimpleYAMLConfig::class.java
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package top.iseason.bukkittemplate.utils

import kotlin.text.indexOf
import kotlin.text.substring
import kotlin.text.toInt

object JavaVersion {
val version: Int

init {
val versionString = System.getProperty("java.version")
val indexOf = versionString.indexOf('.')
version = try {
if (indexOf > 0) {
val substring = versionString.substring(0, indexOf)
if (substring == "1") {
val indexOf1 = versionString.indexOf('.', indexOf + 1)
versionString.substring(indexOf + 1, indexOf1).toInt()
} else {
substring.toInt()
}
} else {
versionString.toInt()
}
} catch (_: Exception) {
8
}
}

fun isGreaterOrEqual(version: Int): Boolean = this.version >= version

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

package top.iseason.bukkittemplate.utils.bukkit

import io.github.bananapuncher714.nbteditor.NBTEditor
import org.bukkit.Material
import org.bukkit.entity.Entity
import org.bukkit.entity.EntityType
Expand Down Expand Up @@ -47,7 +46,7 @@ object EntityUtils {
if (this !is Entity) return
for (addItem in addItems) {
if (addItem == null) continue
val item = world.spawnEntity(location, EntityType.DROPPED_ITEM) as Item
val item = world.spawnEntity(location, EntityType.entries[1]) as Item //1.20.6改了枚举名 目前看来1号都是掉落物
item.setItemStack(addItem)
}
}
Expand All @@ -68,11 +67,6 @@ object EntityUtils {
*/
fun Player.getHeldItem(): ItemStack? = inventory.getHeldItem()

/**
* 序列化为json
*/
fun Entity.toJson(): String = NBTEditor.getNBTCompound(this).toJson()

/**
* 扣除某种物品数量
* @return true 数量足够
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,9 @@ object EventUtils {
action: E.() -> Unit
): FakeEventListener {
val fakeEventListener = FakeEventListener { _, event ->
runCatching {
if (clazz.isAssignableFrom(event.javaClass)) {
action.invoke(event as E)
}.getOrElse { it.printStackTrace() }
}
}
Bukkit.getPluginManager()
.registerEvent(
Expand Down
Loading

0 comments on commit d7d925b

Please sign in to comment.