diff --git a/build.gradle.kts b/build.gradle.kts index 2ad5a125..57d6a058 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,61 +1,89 @@ // Gradle 9.0.0 can't run in Java8 plugins { - `java-library` - `maven-publish` - alias(libs.plugins.ktlint) - alias(libs.plugins.shadow) - alias(libs.plugins.kotlin.jvm) - alias(libs.plugins.kotlin.serialization) + id("io.kotest") version "6.1.11" + id("com.gradleup.shadow") version "8.3.10" + id("org.jetbrains.kotlin.jvm") version "2.3.20" + id("org.jetbrains.kotlin.plugin.serialization") version "2.3.20" } group = "be4rjp" -version = System.getenv("VERSION") ?: "1.0-SNAPSHOT" description = "Sclat" -repositories { - mavenCentral() - maven("https://jitpack.io/") - maven("https://repo.papermc.io/repository/maven-public/") - exclusiveContent { - forRepository { - mavenLocal() +allprojects { + apply { + plugin("io.kotest") + plugin("org.jetbrains.kotlin.jvm") + plugin("org.jetbrains.kotlin.plugin.serialization") + } + + version = System.getenv("VERSION") ?: "1.0-SNAPSHOT" + + repositories { + mavenCentral() + maven("https://jitpack.io/") + maven("https://repo.papermc.io/repository/maven-public/") + exclusiveContent { + forRepository { + mavenLocal() + } + filter { + includeGroup("org.spigotmc") + } } - filter { - includeGroup("org.spigotmc") + exclusiveContent { + forRepository { + maven("https://repo.codemc.io/repository/maven-public/") + } + filter { + includeGroup("org.bstats") + } } } - exclusiveContent { - forRepository { - maven("https://repo.codemc.io/repository/maven-public/") - } - filter { - includeGroup("org.bstats") + + dependencies { + compileOnly("org.spigotmc:spigot:1.14.4-R0.1-SNAPSHOT") + compileOnly("com.destroystokyo.paper:paper-api:1.14.4-R0.1-SNAPSHOT") + compileOnly("com.github.koca2000:NoteBlockAPI:1.6.3") + compileOnly("com.github.ucchyocean:LunaChat:3.0.16") + compileOnly("net.dmulloy2:ProtocolLib:5.1.0") + compileOnly("com.github.Be4rJP:DADADAChecker:1.0.0") + compileOnly("com.github.Be4rJP:BlockStudio:-SNAPSHOT") + + implementation("net.mamoe.yamlkt:yamlkt:0.13.0") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0-rc01") + implementation("com.github.shynixn.mccoroutine:mccoroutine-bukkit-api:2.22.0") + implementation("com.github.shynixn.mccoroutine:mccoroutine-bukkit-core:2.22.0") + implementation("org.incendo:cloud-paper:2.0.0-SNAPSHOT") // found newer 2.0.0-beta.10 + implementation("org.jspecify:jspecify:1.0.0") + implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") + implementation("fr.mrmicky:fastboard:2.1.5") + implementation("com.akuleshov7:ktoml-core:0.7.1") + + testImplementation("org.jetbrains.kotlin:kotlin-test") + testImplementation("io.kotest:kotest-runner-junit5:6.1.11") + testImplementation("io.kotest:kotest-assertions-core:6.1.11") + testImplementation("io.kotest:kotest-property:6.1.11") + testImplementation("io.mockk:mockk:1.14.9") + testImplementation("org.spigotmc:spigot:1.14.4-R0.1-SNAPSHOT") + testImplementation("com.destroystokyo.paper:paper-api:1.14.4-R0.1-SNAPSHOT") + testImplementation("ch.qos.logback:logback-classic:1.4.11") + } + + val targetJavaVersion: Int = 11 + + kotlin { + jvmToolchain(targetJavaVersion) + } + + tasks { + test { + useJUnitPlatform() } } } dependencies { - compileOnly(libs.spigot) - compileOnly(libs.noteblockapi) - compileOnly(libs.lunachat) - compileOnly(libs.protocolLib) - compileOnly(libs.dadadachecker) - compileOnly(libs.blockstudio) - compileOnly(libs.paperApi) - implementation(libs.cloudPaper) - implementation(libs.jspecify) - implementation(libs.kotlin.stdlib) - implementation(libs.yamlkt) - implementation(libs.fastboard) - implementation(libs.bundles.ktoml) -} - -// Project Settings -val targetJavaVersion: Int = 11 -val defaultEncoding: String = "UTF-8" - -kotlin { - jvmToolchain(targetJavaVersion) + implementation(project("core")) } tasks { @@ -71,30 +99,3 @@ tasks { archiveFileName.set("Sclat.jar") } } - -publishing { - publications { - create("maven") { - groupId = project.group.toString() - artifactId = project.name - version = project.version.toString() - artifact(tasks.jar) - } - } - - repositories { - maven { - name = "azisaba-repo" - credentials { - username = System.getenv("REPO_USERNAME") - password = System.getenv("REPO_PASSWORD") - } - url = - if (project.version.toString().endsWith("-SNAPSHOT")) { - uri("https://repo.azisaba.net/repository/maven-snapshots/") - } else { - uri("https://repo.azisaba.net/repository/maven-releases/") - } - } - } -} diff --git a/core/build.gradle.kts b/core/build.gradle.kts new file mode 100644 index 00000000..a2ac7099 --- /dev/null +++ b/core/build.gradle.kts @@ -0,0 +1,4 @@ +group = "net.azisaba.sclat" + +dependencies { +} diff --git a/core/src/main/kotlin/net/azisaba/sclat/core/DelegatedLogger.kt b/core/src/main/kotlin/net/azisaba/sclat/core/DelegatedLogger.kt new file mode 100644 index 00000000..9a91c37b --- /dev/null +++ b/core/src/main/kotlin/net/azisaba/sclat/core/DelegatedLogger.kt @@ -0,0 +1,29 @@ +package net.azisaba.sclat.core + +import org.slf4j.Logger +import org.slf4j.LoggerFactory +import kotlin.reflect.KProperty + +/** + * Example: + * ```kotlin + * val logger by DelegatedLogger() + * ``` + */ +class DelegatedLogger { + private var logger: Logger? = null + + // TestClass2, KProperty1<*, *> + operator fun getValue( + thisRef: T, + property: KProperty<*>, + ): Logger = + logger ?: run { + val className = + thisRef::class.java.name + .removeSuffix("\$Companion") + .split(".") + .last() + LoggerFactory.getLogger("$PLUGIN_NAME:$className").also { logger = it } + } +} diff --git a/src/main/kotlin/be4rjp/sclat/api/Plugins.kt b/core/src/main/kotlin/net/azisaba/sclat/core/Plugins.kt similarity index 50% rename from src/main/kotlin/be4rjp/sclat/api/Plugins.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/Plugins.kt index f5aa53cf..eee99a19 100644 --- a/src/main/kotlin/be4rjp/sclat/api/Plugins.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/Plugins.kt @@ -1,7 +1,6 @@ -package be4rjp.sclat.api +package net.azisaba.sclat.core -import be4rjp.sclat.sclatLogger -import org.bukkit.Bukkit +import org.bukkit.plugin.PluginManager import java.util.function.Consumer enum class Plugins( @@ -17,34 +16,22 @@ enum class Plugins( PROTOCOLLIB("ProtocolLib"), ; - private var _isLoaded: Boolean? = null - - val isLoaded: Boolean - get() { - if (_isLoaded == null) { - _isLoaded = Bukkit.getPluginManager().isPluginEnabled(pluginName) - } - return _isLoaded!! - } - - /** - * To support plugman load. - */ - private fun resetLoadedState() { - _isLoaded = null - } + var isLoaded: Boolean = false + private set companion object { + private val logger by DelegatedLogger() + /** * Initialize check * * @return is init-check succeeded */ @JvmStatic - fun onInit(): Boolean { - val missingPlugins = ArrayList() + fun onInit(pluginManager: PluginManager): Boolean { + val missingPlugins = ArrayList() for (plugin in entries) { - plugin.resetLoadedState() + plugin.isLoaded = pluginManager.isPluginEnabled(plugin.pluginName) if (!plugin.isLoaded && plugin.isRequired) { missingPlugins.add(plugin.pluginName) } @@ -52,10 +39,10 @@ enum class Plugins( // If some required plugins are missing if (!missingPlugins.isEmpty()) { - sclatLogger.error("Some plugins are missing. Please install or enable.") - sclatLogger.error("*** Missing required plugins ***") - missingPlugins.forEach(Consumer { p: String? -> sclatLogger.error("- {}", p) }) - sclatLogger.error("********************************") + logger.error("Some plugins are missing. Please install or enable.") + logger.error("*** Missing required plugins ***") + missingPlugins.forEach(Consumer { p: String? -> logger.error("- {}", p) }) + logger.error("********************************") return false } diff --git a/core/src/main/kotlin/net/azisaba/sclat/core/Sclat.kt b/core/src/main/kotlin/net/azisaba/sclat/core/Sclat.kt new file mode 100644 index 00000000..998484bb --- /dev/null +++ b/core/src/main/kotlin/net/azisaba/sclat/core/Sclat.kt @@ -0,0 +1,37 @@ +package net.azisaba.sclat.core + +import be4rjp.dadadachecker.DADADACheckerAPI +import com.comphenix.protocol.ProtocolLibrary +import com.comphenix.protocol.ProtocolManager +import net.azisaba.sclat.core.config.SclatConfig +import org.bukkit.plugin.java.JavaPlugin + +class Sclat : JavaPlugin() { + private lateinit var protocolManager: ProtocolManager + private lateinit var dadadaCheckerApi: DADADACheckerAPI + private lateinit var config: SclatConfig + + override fun onEnable() { + slfLogger.info("Welcome to Sclat! (=^・ω・^=)") + + if (!Plugins.onInit(server.pluginManager)) { + slfLogger.error("✘ Failed to check depend plugins. Disabling...") + server.pluginManager.disablePlugin(this) + return + } + slfLogger.info("✔ Checked depend plugins.") + + protocolManager = ProtocolLibrary.getProtocolManager() + dadadaCheckerApi = DADADACheckerAPI(this) + slfLogger.info("✔ Initialized ProtocolLib and DADADA Checker API.") + } + + override fun onDisable() { + slfLogger.info("Bye bye! (ノ´ヮ`)ノ*: ・゚") + } + + companion object { + // use slfLogger instead because logger was already taken by JavePlugin + private val slfLogger by DelegatedLogger() + } +} diff --git a/core/src/main/kotlin/net/azisaba/sclat/core/Variables.kt b/core/src/main/kotlin/net/azisaba/sclat/core/Variables.kt new file mode 100644 index 00000000..3aa086c6 --- /dev/null +++ b/core/src/main/kotlin/net/azisaba/sclat/core/Variables.kt @@ -0,0 +1,3 @@ +package net.azisaba.sclat.core + +const val PLUGIN_NAME: String = "Sclat" diff --git a/src/main/kotlin/be4rjp/sclat/config/Config.kt b/core/src/main/kotlin/net/azisaba/sclat/core/config/Config.kt similarity index 98% rename from src/main/kotlin/be4rjp/sclat/config/Config.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/config/Config.kt index d69c8ab2..a43c32e5 100644 --- a/src/main/kotlin/be4rjp/sclat/config/Config.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/config/Config.kt @@ -1,4 +1,4 @@ -package be4rjp.sclat.config +package net.azisaba.sclat.core.config import org.bukkit.Bukkit import org.bukkit.configuration.file.FileConfiguration diff --git a/src/main/kotlin/be4rjp/sclat/api/config/CustomConfig.kt b/core/src/main/kotlin/net/azisaba/sclat/core/config/CustomConfig.kt similarity index 79% rename from src/main/kotlin/be4rjp/sclat/api/config/CustomConfig.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/config/CustomConfig.kt index 8537cd4e..306ee2da 100644 --- a/src/main/kotlin/be4rjp/sclat/api/config/CustomConfig.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/config/CustomConfig.kt @@ -1,6 +1,6 @@ -package be4rjp.sclat.api.config +package net.azisaba.sclat.core.config -import be4rjp.sclat.sclatLogger +import net.azisaba.sclat.core.DelegatedLogger import org.bukkit.configuration.file.FileConfiguration import org.bukkit.configuration.file.YamlConfiguration import org.bukkit.plugin.Plugin @@ -20,7 +20,7 @@ class CustomConfig( if (configFile.exists()) return plugin.saveResource(file, false) - sclatLogger.info("デフォルトの設定ファイルを書き込みました。") + logger.info("デフォルトの設定ファイルを書き込みました。") } fun getConfig(): FileConfiguration? { @@ -35,7 +35,7 @@ class CustomConfig( try { getConfig()!!.save(configFile) } catch (ex: IOException) { - sclatLogger.error("Could not save config to $configFile", ex) + logger.error("Could not save config to $configFile", ex) } } @@ -48,4 +48,8 @@ class CustomConfig( YamlConfiguration.loadConfiguration(InputStreamReader(defConfigStream, StandardCharsets.UTF_8)), ) } + + companion object { + private val logger by DelegatedLogger() + } } diff --git a/src/main/kotlin/be4rjp/sclat/config/LoginBonusRewardConfig.kt b/core/src/main/kotlin/net/azisaba/sclat/core/config/LoginBonusRewardConfig.kt similarity index 79% rename from src/main/kotlin/be4rjp/sclat/config/LoginBonusRewardConfig.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/config/LoginBonusRewardConfig.kt index 935ea755..a0362d48 100644 --- a/src/main/kotlin/be4rjp/sclat/config/LoginBonusRewardConfig.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/config/LoginBonusRewardConfig.kt @@ -1,4 +1,4 @@ -package be4rjp.sclat.config +package net.azisaba.sclat.core.config import kotlinx.serialization.Serializable diff --git a/src/main/kotlin/be4rjp/sclat/config/NewConfig.kt b/core/src/main/kotlin/net/azisaba/sclat/core/config/NewConfig.kt similarity index 50% rename from src/main/kotlin/be4rjp/sclat/config/NewConfig.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/config/NewConfig.kt index 0eb50d49..3b749cee 100644 --- a/src/main/kotlin/be4rjp/sclat/config/NewConfig.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/config/NewConfig.kt @@ -1,10 +1,9 @@ -package be4rjp.sclat.config +package net.azisaba.sclat.core.config -import be4rjp.sclat.api.utils.DailyRefreshSet -import be4rjp.sclat.extension.loadToml -import be4rjp.sclat.extension.saveToml -import be4rjp.sclat.loginbonus.LoginBonus -import be4rjp.sclat.sclatLogger +import net.azisaba.sclat.core.DelegatedLogger +import net.azisaba.sclat.core.extension.loadToml +import net.azisaba.sclat.core.extension.saveToml +import net.azisaba.sclat.core.utils.DailyRefreshSet import java.io.File import java.util.function.Supplier @@ -12,21 +11,25 @@ import java.util.function.Supplier * Migrating from Config.kt */ object NewConfig { + private val logger by DelegatedLogger() private val parent = File("plugins/Sclat") lateinit var loginBonusReward: LoginBonusRewardConfig private set + lateinit var loginBonusRefreshSet: DailyRefreshSet + private set + fun load() { - sclatLogger.info(">>> Loading config...") + logger.info(">>> Loading config...") loginBonusReward = loadTomlConfig("login_bonus", ::LoginBonusRewardConfig) - LoginBonus.refreshSet = loadTomlConfig("login_bonus_claimed", ::DailyRefreshSet) - sclatLogger.info("<<< All config loaded.") + loginBonusRefreshSet = loadTomlConfig("login_bonus_claimed", ::DailyRefreshSet) + logger.info("<<< All config loaded.") } fun save() { - sclatLogger.info(">>> Saving config...") - saveTomlConfig("login_bonus_claimed", LoginBonus.refreshSet) - sclatLogger.info("<<< All config saved.") + logger.info(">>> Saving config...") + saveTomlConfig("login_bonus_claimed", loginBonusRefreshSet) + logger.info("<<< All config saved.") } private inline fun saveTomlConfig( @@ -35,7 +38,7 @@ object NewConfig { ) { parent.resolve("$name.toml").let { file -> saveToml(file, value) - sclatLogger.info("-> Config ${file.name} saved!") + logger.info("-> Config ${file.name} saved!") } } @@ -46,11 +49,11 @@ object NewConfig { parent.resolve("$name.toml").let { file -> if (!file.exists()) { saveToml(file, default.get()).also { - sclatLogger.warn("${file.name} was missing. Wrote default config.") + logger.warn("${file.name} was missing. Wrote default config.") } } loadToml(file).also { - sclatLogger.info("-> Config ${file.name} loaded!") + logger.info("-> Config ${file.name} loaded!") } } } diff --git a/src/main/kotlin/be4rjp/sclat/config/PlayerStatus.kt b/core/src/main/kotlin/net/azisaba/sclat/core/config/PlayerStatus.kt similarity index 95% rename from src/main/kotlin/be4rjp/sclat/config/PlayerStatus.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/config/PlayerStatus.kt index 033616be..d905054d 100644 --- a/src/main/kotlin/be4rjp/sclat/config/PlayerStatus.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/config/PlayerStatus.kt @@ -1,4 +1,4 @@ -package be4rjp.sclat.config +package net.azisaba.sclat.core.config import kotlinx.serialization.Serializable diff --git a/core/src/main/kotlin/net/azisaba/sclat/core/config/SclatConfig.kt b/core/src/main/kotlin/net/azisaba/sclat/core/config/SclatConfig.kt new file mode 100644 index 00000000..4a90e163 --- /dev/null +++ b/core/src/main/kotlin/net/azisaba/sclat/core/config/SclatConfig.kt @@ -0,0 +1,67 @@ +package net.azisaba.sclat.core.config + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class HostAndPortConfig( + @SerialName("Host") val host: String, + @SerialName("Port") val port: Int, +) + +@Serializable +data class LocationConfig( + @SerialName("WorldName") val worldName: String, + @SerialName("X") val x: Double, + @SerialName("Y") val y: Double, + @SerialName("Z") val z: Double, + @SerialName("Yaw") val yaw: Int = 0, + @SerialName("Pitch") val pitch: Float = 0.0f, +) + +@Serializable +data class TrainConfig( + @SerialName("LFrom") val lFrom: LocationConfig? = null, + @SerialName("LTo") val lTo: LocationConfig? = null, + @SerialName("RFrom") val rFrom: LocationConfig? = null, + @SerialName("RTo") val rTo: LocationConfig? = null, +) + +// @SerialName("") +@Serializable +data class SclatConfig( + val deferredMapLoading: Boolean = true, + @SerialName("Tutorial") val tutorial: LocationConfig? = null, + @SerialName("Colors") val colors: List = listOf(), + @SerialName("ParticlesRenderDistance") val particlesRenderDistance: Double = 0.0, + @SerialName("WorkMode") val workMode: String, + @SerialName("ServerType") val serverType: String, + @SerialName("Shop") val shop: Boolean = true, + @SerialName("BlockUpdateRate") val blockUpdateRate: Int, + @SerialName("ResourcePackURL") val resourcePackUrl: String, + @SerialName("DefaultClass") val defaultClass: String, + @SerialName("EquipShare") val equipShare: Map = mapOf(), + @SerialName("StatusShare") val statusShare: HostAndPortConfig? = null, + @SerialName("RateMatch") val rateMatch: Boolean? = null, + @SerialName("RestartMatchCount") val restartMatchCount: Int? = null, + @SerialName("MaxPlayerCount") val maxPlayerCount: Int, + @SerialName("CanVoting") val canVoting: Boolean, + @SerialName("StartPlayerCount") val startPlayerCount: Int, + @SerialName("nBGM") val nBGM: Map = mapOf(), + @SerialName("fBGM") val fBGM: Map = mapOf(), + @SerialName("LobbyJump") val lobbyJump: LocationConfig? = null, + @SerialName("TutorialClear") val tutorialClear: LocationConfig? = null, + @SerialName("InkResetPeriod") val inkResetPeriod: Int = 20, + @SerialName("Train") val train: TrainConfig? = null, + @SerialName("WeaponRemove") val weaponRemove: LocationConfig? = null, + // Hologram configs + @SerialName("Hologram") val hologram: LocationConfig, + @SerialName("HologramUpdatePeriod") val hologramUpdatePeriod: Long = 20L, + @SerialName("RankingHolograms") val rankingHolograms: LocationConfig, + @SerialName("MakeRankingPeriod") val makeRankingPeriod: Long = 20L, + // Squid settings + @SerialName("NormalRecovery") val normalRecovery: Double, + @SerialName("SquidRecovery") val squidRecovery: Double, + @SerialName("SquidSpeed") val squidSpeed: Double, + @SerialName("PlayerWalkSpeed") val playerWalkSpeed: Float = 0.2f, +) diff --git a/src/main/kotlin/be4rjp/sclat/api/config/WeaponConfig.kt b/core/src/main/kotlin/net/azisaba/sclat/core/config/WeaponConfig.kt similarity index 61% rename from src/main/kotlin/be4rjp/sclat/api/config/WeaponConfig.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/config/WeaponConfig.kt index 81ce7f6b..f0c43bd6 100644 --- a/src/main/kotlin/be4rjp/sclat/api/config/WeaponConfig.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/config/WeaponConfig.kt @@ -1,7 +1,7 @@ -package be4rjp.sclat.api.config +package net.azisaba.sclat.core.config -import be4rjp.sclat.api.data.WeaponData import kotlinx.serialization.Serializable +import net.azisaba.sclat.core.data.WeaponData @Serializable data class WeaponConfig( diff --git a/src/main/kotlin/be4rjp/sclat/data/Color.kt b/core/src/main/kotlin/net/azisaba/sclat/core/data/Color.kt similarity index 93% rename from src/main/kotlin/be4rjp/sclat/data/Color.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/data/Color.kt index f34eb2ef..8ed3bd6d 100644 --- a/src/main/kotlin/be4rjp/sclat/data/Color.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/data/Color.kt @@ -1,4 +1,4 @@ -package be4rjp.sclat.data +package net.azisaba.sclat.core.data import org.bukkit.ChatColor import org.bukkit.Color diff --git a/src/main/kotlin/be4rjp/sclat/data/KasaData.kt b/core/src/main/kotlin/net/azisaba/sclat/core/data/KasaData.kt similarity index 88% rename from src/main/kotlin/be4rjp/sclat/data/KasaData.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/data/KasaData.kt index 1979bb1b..6e8ab814 100644 --- a/src/main/kotlin/be4rjp/sclat/data/KasaData.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/data/KasaData.kt @@ -1,4 +1,4 @@ -package be4rjp.sclat.data +package net.azisaba.sclat.core.data import org.bukkit.entity.ArmorStand import org.bukkit.entity.Player diff --git a/src/main/kotlin/be4rjp/sclat/data/MainWeapon.kt b/core/src/main/kotlin/net/azisaba/sclat/core/data/MainWeapon.kt similarity index 98% rename from src/main/kotlin/be4rjp/sclat/data/MainWeapon.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/data/MainWeapon.kt index ddb7b7c5..ed529031 100644 --- a/src/main/kotlin/be4rjp/sclat/data/MainWeapon.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/data/MainWeapon.kt @@ -1,4 +1,4 @@ -package be4rjp.sclat.data +package net.azisaba.sclat.core.data import org.bukkit.inventory.ItemStack diff --git a/src/main/kotlin/be4rjp/sclat/data/Path.kt b/core/src/main/kotlin/net/azisaba/sclat/core/data/Path.kt similarity index 89% rename from src/main/kotlin/be4rjp/sclat/data/Path.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/data/Path.kt index ab747afb..784b2518 100644 --- a/src/main/kotlin/be4rjp/sclat/data/Path.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/data/Path.kt @@ -1,7 +1,6 @@ -package be4rjp.sclat.data +package net.azisaba.sclat.core.data -import be4rjp.sclat.api.team.Team -import be4rjp.sclat.plugin +import net.azisaba.sclat.core.team.SclatTeam import net.minecraft.server.v1_14_R1.EnumItemSlot import net.minecraft.server.v1_14_R1.PacketPlayOutEntityEquipment import org.bukkit.Location @@ -11,6 +10,7 @@ import org.bukkit.craftbukkit.v1_14_R1.entity.CraftPlayer import org.bukkit.craftbukkit.v1_14_R1.inventory.CraftItemStack import org.bukkit.entity.ArmorStand import org.bukkit.inventory.ItemStack +import org.bukkit.plugin.java.JavaPlugin import org.bukkit.scheduler.BukkitRunnable /** @@ -18,16 +18,17 @@ import org.bukkit.scheduler.BukkitRunnable * @author Be4rJP */ class Path( + private val plugin: JavaPlugin, val fromLocation: Location?, val toLocation: Location?, ) { - private var team: Team? = null + private var team: SclatTeam? = null var armorStand: ArmorStand? = null private var setTeamed = false - fun getTeam(): Team? = this.team + fun getTeam(): SclatTeam? = this.team - fun setTeam(t: Team?) { + fun setTeam(t: SclatTeam?) { this.team = t for (target in plugin.server.onlinePlayers) { if (armorStand!!.world !== target.world) continue diff --git a/src/main/kotlin/be4rjp/sclat/api/data/WeaponData.kt b/core/src/main/kotlin/net/azisaba/sclat/core/data/WeaponData.kt similarity index 97% rename from src/main/kotlin/be4rjp/sclat/api/data/WeaponData.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/data/WeaponData.kt index 88e4521c..8ac3d036 100644 --- a/src/main/kotlin/be4rjp/sclat/api/data/WeaponData.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/data/WeaponData.kt @@ -1,4 +1,4 @@ -package be4rjp.sclat.api.data +package net.azisaba.sclat.core.data import kotlinx.serialization.Serializable diff --git a/src/main/kotlin/be4rjp/sclat/api/MessageType.kt b/core/src/main/kotlin/net/azisaba/sclat/core/enums/MessageType.kt similarity index 76% rename from src/main/kotlin/be4rjp/sclat/api/MessageType.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/enums/MessageType.kt index 3b4625c1..6e937b38 100644 --- a/src/main/kotlin/be4rjp/sclat/api/MessageType.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/enums/MessageType.kt @@ -1,4 +1,4 @@ -package be4rjp.sclat.api +package net.azisaba.sclat.core.enums /** * diff --git a/src/main/kotlin/be4rjp/sclat/api/ServerType.kt b/core/src/main/kotlin/net/azisaba/sclat/core/enums/ServerType.kt similarity index 62% rename from src/main/kotlin/be4rjp/sclat/api/ServerType.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/enums/ServerType.kt index c54f2449..aed2399c 100644 --- a/src/main/kotlin/be4rjp/sclat/api/ServerType.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/enums/ServerType.kt @@ -1,4 +1,4 @@ -package be4rjp.sclat.api +package net.azisaba.sclat.core.enums enum class ServerType { LOBBY, diff --git a/src/main/kotlin/be4rjp/sclat/api/SoundType.kt b/core/src/main/kotlin/net/azisaba/sclat/core/enums/SoundType.kt similarity index 72% rename from src/main/kotlin/be4rjp/sclat/api/SoundType.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/enums/SoundType.kt index c6e87118..62f9c3d3 100644 --- a/src/main/kotlin/be4rjp/sclat/api/SoundType.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/enums/SoundType.kt @@ -1,4 +1,4 @@ -package be4rjp.sclat.api +package net.azisaba.sclat.core.enums /** * diff --git a/src/main/kotlin/be4rjp/sclat/extension/LocalDate.kt b/core/src/main/kotlin/net/azisaba/sclat/core/extension/LocalDate.kt similarity index 85% rename from src/main/kotlin/be4rjp/sclat/extension/LocalDate.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/extension/LocalDate.kt index a3b3b4ea..b028f678 100644 --- a/src/main/kotlin/be4rjp/sclat/extension/LocalDate.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/extension/LocalDate.kt @@ -1,4 +1,4 @@ -package be4rjp.sclat.extension +package net.azisaba.sclat.core.extension import java.time.LocalDate import java.time.format.DateTimeFormatter diff --git a/src/main/kotlin/be4rjp/sclat/extension/String.kt b/core/src/main/kotlin/net/azisaba/sclat/core/extension/String.kt similarity index 69% rename from src/main/kotlin/be4rjp/sclat/extension/String.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/extension/String.kt index 5111e823..6b6a341d 100644 --- a/src/main/kotlin/be4rjp/sclat/extension/String.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/extension/String.kt @@ -1,4 +1,4 @@ -package be4rjp.sclat.extension +package net.azisaba.sclat.core.extension import org.bukkit.Material diff --git a/core/src/main/kotlin/net/azisaba/sclat/core/extension/System.kt b/core/src/main/kotlin/net/azisaba/sclat/core/extension/System.kt new file mode 100644 index 00000000..3b64dbda --- /dev/null +++ b/core/src/main/kotlin/net/azisaba/sclat/core/extension/System.kt @@ -0,0 +1,3 @@ +package net.azisaba.sclat.core.extension + +fun currentTimeSeconds(): Long = System.currentTimeMillis() / 1000 diff --git a/src/main/kotlin/be4rjp/sclat/extension/Toml.kt b/core/src/main/kotlin/net/azisaba/sclat/core/extension/Toml.kt similarity index 95% rename from src/main/kotlin/be4rjp/sclat/extension/Toml.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/extension/Toml.kt index 0d9b6de5..e7d673d8 100644 --- a/src/main/kotlin/be4rjp/sclat/extension/Toml.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/extension/Toml.kt @@ -1,4 +1,4 @@ -package be4rjp.sclat.extension +package net.azisaba.sclat.core.extension import com.akuleshov7.ktoml.Toml import com.akuleshov7.ktoml.TomlIndentation diff --git a/src/main/kotlin/be4rjp/sclat/extension/World.kt b/core/src/main/kotlin/net/azisaba/sclat/core/extension/World.kt similarity index 81% rename from src/main/kotlin/be4rjp/sclat/extension/World.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/extension/World.kt index b6b9a2d7..9388e53d 100644 --- a/src/main/kotlin/be4rjp/sclat/extension/World.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/extension/World.kt @@ -1,4 +1,4 @@ -package be4rjp.sclat.extension +package net.azisaba.sclat.core.extension import org.bukkit.World import org.bukkit.entity.ArmorStand diff --git a/src/main/kotlin/be4rjp/sclat/api/GaugeAPI.kt b/core/src/main/kotlin/net/azisaba/sclat/core/gauge/GaugeAPI.kt similarity index 93% rename from src/main/kotlin/be4rjp/sclat/api/GaugeAPI.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/gauge/GaugeAPI.kt index bd07ed15..f3cc6dbc 100644 --- a/src/main/kotlin/be4rjp/sclat/api/GaugeAPI.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/gauge/GaugeAPI.kt @@ -1,4 +1,4 @@ -package be4rjp.sclat.api +package net.azisaba.sclat.core.gauge import org.bukkit.ChatColor diff --git a/core/src/main/kotlin/net/azisaba/sclat/core/gui/GuiElement.kt b/core/src/main/kotlin/net/azisaba/sclat/core/gui/GuiElement.kt new file mode 100644 index 00000000..19ed4d0c --- /dev/null +++ b/core/src/main/kotlin/net/azisaba/sclat/core/gui/GuiElement.kt @@ -0,0 +1,17 @@ +package net.azisaba.sclat.core.gui + +import org.bukkit.Material +import org.bukkit.inventory.Inventory +import org.bukkit.inventory.ItemStack +import java.util.function.Consumer + +data class GuiElement( + val stack: ItemStack, + val onClick: Consumer, +) { + fun item( + material: Material, + amount: Int = 1, + onClick: Consumer, + ) = GuiElement(ItemStack(material, amount), onClick) +} diff --git a/core/src/main/kotlin/net/azisaba/sclat/core/gui/GuiInventory.kt b/core/src/main/kotlin/net/azisaba/sclat/core/gui/GuiInventory.kt new file mode 100644 index 00000000..41cf534e --- /dev/null +++ b/core/src/main/kotlin/net/azisaba/sclat/core/gui/GuiInventory.kt @@ -0,0 +1,34 @@ +package net.azisaba.sclat.core.gui + +import org.bukkit.Material +import org.bukkit.inventory.Inventory +import org.bukkit.inventory.ItemStack +import java.util.function.Consumer + +class GuiInventory { + val elementMap: MutableMap = mutableMapOf() + + fun item( + slot: Int, + material: Material, + amount: Int = 1, + onClick: Consumer, + ) { + if (elementMap.containsKey(slot)) { + throw IllegalArgumentException("Slot $slot is already taken by ${elementMap[slot]}") + } + elementMap[slot] = GuiElement(ItemStack(material, amount), onClick) + } + + fun onClick( + slot: Int, + inventory: Inventory, + ) { + elementMap[slot].let { + if (it == null) { + } else { + it.onClick.accept(inventory) + } + } + } +} diff --git a/core/src/main/kotlin/net/azisaba/sclat/core/gui/GuiSize.kt b/core/src/main/kotlin/net/azisaba/sclat/core/gui/GuiSize.kt new file mode 100644 index 00000000..3a3be288 --- /dev/null +++ b/core/src/main/kotlin/net/azisaba/sclat/core/gui/GuiSize.kt @@ -0,0 +1,12 @@ +package net.azisaba.sclat.core.gui + +enum class GuiSize( + slot: Int, +) { + SIZE_9(9), + SIZE_18(18), + SIZE_27(27), + SIZE_36(36), + SIZE_45(45), + SIZE_54(54), +} diff --git a/core/src/main/kotlin/net/azisaba/sclat/core/lobby/SideBoard.kt b/core/src/main/kotlin/net/azisaba/sclat/core/lobby/SideBoard.kt new file mode 100644 index 00000000..b3931f6e --- /dev/null +++ b/core/src/main/kotlin/net/azisaba/sclat/core/lobby/SideBoard.kt @@ -0,0 +1,54 @@ +package net.azisaba.sclat.core.lobby + +import fr.mrmicky.fastboard.FastBoard +import org.bukkit.entity.Player +import java.util.UUID + +// / Todo: Side status board for lobby +class SideBoard { + private val boards: MutableMap = mutableMapOf() + + fun addPlayer(player: Player) { + if (boards.containsKey(player.uniqueId)) return + boards[player.uniqueId] = FastBoard(player) + } + + fun removePlayer(player: Player) { + boards.remove(player.uniqueId)?.delete() + } + + fun updateBoard(board: FastBoard) { + val player = board.player + board.updateLines( +// "§7§m ", +// "", +// "§6§lステータス »", +// "§e COIN: §r" + PlayerStatusMgr.getMoney(player), +// "§e TICKET: §r" + PlayerStatusMgr.getTicket(player), +// "§b RANK: §r" + RankMgr.toABCRank(PlayerStatusMgr.getRank(player)) + " [" + +// PlayerStatusMgr.getRank(player) + "]", +// " ", +// "§9§lサーバー »", +// *ServerStatusManager.serverList +// .filter { status -> !status.isMaintenance && status.isOnline } +// .mapNotNull { serverStatus -> +// StatusLine.getLine( +// ServerStatus( +// serverStatus.isOnline, +// serverStatus.isMaintenance, +// serverStatus.displayName, +// serverStatus.matchStartTime, +// serverStatus.playerCount, +// serverStatus.waitingEndTime, +// serverStatus.runningMatch, +// ), +// ) +// }.toTypedArray(), +// " ", +// "§a§lNews »", +// textAnimation.next(), +// " ", // Prevent from same name + "§7§m §r", + ) + } +} diff --git a/src/main/kotlin/be4rjp/sclat/api/player/PlayerSettings.kt b/core/src/main/kotlin/net/azisaba/sclat/core/player/PlayerSettings.kt similarity index 98% rename from src/main/kotlin/be4rjp/sclat/api/player/PlayerSettings.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/player/PlayerSettings.kt index 3b1e0834..2b004cf1 100644 --- a/src/main/kotlin/be4rjp/sclat/api/player/PlayerSettings.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/player/PlayerSettings.kt @@ -1,4 +1,4 @@ -package be4rjp.sclat.api.player +package net.azisaba.sclat.core.player import org.bukkit.entity.Player diff --git a/src/main/kotlin/be4rjp/sclat/schedular/TickSchedular.kt b/core/src/main/kotlin/net/azisaba/sclat/core/schedular/TickSchedular.kt similarity index 89% rename from src/main/kotlin/be4rjp/sclat/schedular/TickSchedular.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/schedular/TickSchedular.kt index 319112b7..a12daab8 100644 --- a/src/main/kotlin/be4rjp/sclat/schedular/TickSchedular.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/schedular/TickSchedular.kt @@ -1,10 +1,12 @@ -package be4rjp.sclat.schedular +package net.azisaba.sclat.core.schedular -import be4rjp.sclat.plugin +import org.bukkit.plugin.java.JavaPlugin import org.bukkit.scheduler.BukkitRunnable import java.util.function.BiConsumer -class TickSchedular { +class TickSchedular( + private val plugin: JavaPlugin, +) { private val timingMap: MutableMap> = mutableMapOf() private val ticker = object : BukkitRunnable() { diff --git a/src/main/kotlin/be4rjp/sclat/api/serializer/UUIDSerializer.kt b/core/src/main/kotlin/net/azisaba/sclat/core/serializer/UUIDSerializer.kt similarity index 94% rename from src/main/kotlin/be4rjp/sclat/api/serializer/UUIDSerializer.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/serializer/UUIDSerializer.kt index 78211120..7a16d108 100644 --- a/src/main/kotlin/be4rjp/sclat/api/serializer/UUIDSerializer.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/serializer/UUIDSerializer.kt @@ -1,4 +1,4 @@ -package be4rjp.sclat.api.serializer +package net.azisaba.sclat.core.serializer import kotlinx.serialization.KSerializer import kotlinx.serialization.descriptors.PrimitiveKind diff --git a/src/main/kotlin/be4rjp/sclat/api/Sphere.kt b/core/src/main/kotlin/net/azisaba/sclat/core/shape/Sphere.kt similarity index 94% rename from src/main/kotlin/be4rjp/sclat/api/Sphere.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/shape/Sphere.kt index cc46287e..826d18e4 100644 --- a/src/main/kotlin/be4rjp/sclat/api/Sphere.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/shape/Sphere.kt @@ -1,4 +1,4 @@ -package be4rjp.sclat.api +package net.azisaba.sclat.core.shape import org.bukkit.Location import kotlin.math.cos @@ -46,7 +46,7 @@ object Sphere { fun getXZCircle( baseLoc: Location, r: Double, - r_accuracy: Double, + rAccuracy: Double, accuracy: Int, ): MutableList { val tempList: MutableList = mutableListOf() @@ -60,7 +60,7 @@ object Sphere { tempList.add(loc) t += accuracy / tr } - tr = (tr + r_accuracy).toInt() + tr = (tr + rAccuracy).toInt() } return tempList } diff --git a/core/src/main/kotlin/net/azisaba/sclat/core/socket/equip/EquipmentClient.kt b/core/src/main/kotlin/net/azisaba/sclat/core/socket/equip/EquipmentClient.kt new file mode 100644 index 00000000..fd7484dd --- /dev/null +++ b/core/src/main/kotlin/net/azisaba/sclat/core/socket/equip/EquipmentClient.kt @@ -0,0 +1,36 @@ +package net.azisaba.sclat.core.socket.equip + +import com.github.shynixn.mccoroutine.bukkit.launch +import org.bukkit.plugin.Plugin +import java.io.BufferedReader +import java.io.InputStreamReader +import java.io.PrintWriter +import java.net.Socket + +class EquipmentClient( + private val plugin: Plugin, + private val host: String, + private val port: Int, +) { + fun send(commands: List) { + plugin.launch { + try { + Socket(host, port).use { socket -> + PrintWriter(socket.getOutputStream(), true).use { writer -> + BufferedReader(InputStreamReader(socket.getInputStream())).use { reader -> + for (command in commands) { + writer.println(command) + + // Optionally, handle server response +// val response = reader.readLine() +// println("Server response: $response") + } + } + } + } + } catch (e: Exception) { + e.printStackTrace() + } + } + } +} diff --git a/core/src/main/kotlin/net/azisaba/sclat/core/socket/equip/EquipmentServer.kt b/core/src/main/kotlin/net/azisaba/sclat/core/socket/equip/EquipmentServer.kt new file mode 100644 index 00000000..3c5af06b --- /dev/null +++ b/core/src/main/kotlin/net/azisaba/sclat/core/socket/equip/EquipmentServer.kt @@ -0,0 +1,98 @@ +package net.azisaba.sclat.core.socket.equip + +import com.github.shynixn.mccoroutine.bukkit.launch +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.withContext +import org.bukkit.plugin.Plugin +import java.io.BufferedReader +import java.io.InputStreamReader +import java.io.PrintWriter +import java.net.ServerSocket +import java.net.Socket + +class EquipmentServer( + private val plugin: Plugin, + private val port: Int, +) { + private var serverSocket: ServerSocket? = null + + fun start() = + plugin.launch { + try { + serverSocket = ServerSocket(port) + println("Waiting for status client...") + + while (true) { + val clientSocket = serverSocket!!.accept() + plugin.launch { handleClient(clientSocket) } + } + } catch (e: Exception) { + e.printStackTrace() + } finally { + stop() + } + } + + private suspend fun handleClient(socket: Socket) = + withContext(Dispatchers.IO) { + println("Connected ${socket.remoteSocketAddress}") + try { + val reader = BufferedReader(InputStreamReader(socket.getInputStream())) + val writer = PrintWriter(socket.getOutputStream(), true) + + println("Waiting for commands...") + while (true) { + val cmd = reader.readLine() ?: break + if (cmd == "stop") { + println("Socket closed.") + break + } + + // Todo: handle commands +// EquipmentServerManager.addEquipmentCommand(cmd) + + val args = cmd.split(" ") + when (args[0]) { + "setting" -> { + if (args.size == 3 && args[1].length == 9 && args[2].length == 36) { +// // Todo: handle setting command +// Sclat.conf?.playerSettings?.set("Settings.${args[2]}", args[1]) + } + } + + "mod" -> { + // Todo: handle mod command +// if (args.size == 2 && !Sclat.modList.contains(args[1])) { +// Sclat.modList.add(args[1]) +// } + } + + "join" -> { + if (args.size == 2) { + // Handle join command + } + } + } + } + } catch (e: Exception) { + e.printStackTrace() + } finally { + try { + socket.close() + } catch (e: Exception) { + e.printStackTrace() + } + println("Disconnected ${socket.remoteSocketAddress}") + } + } + + fun stop() { + try { + serverSocket?.close() + println("Equipment server is stopped!") + } catch (e: Exception) { + e.printStackTrace() + } + } +} diff --git a/src/main/kotlin/be4rjp/sclat/api/MineStat.kt b/core/src/main/kotlin/net/azisaba/sclat/core/status/MineStat.kt similarity index 99% rename from src/main/kotlin/be4rjp/sclat/api/MineStat.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/status/MineStat.kt index f2510c57..67f00c52 100644 --- a/src/main/kotlin/be4rjp/sclat/api/MineStat.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/status/MineStat.kt @@ -1,4 +1,4 @@ -package be4rjp.sclat.api +package net.azisaba.sclat.core.status import java.io.BufferedReader import java.io.DataOutputStream diff --git a/core/src/main/kotlin/net/azisaba/sclat/core/status/ServerStatus.kt b/core/src/main/kotlin/net/azisaba/sclat/core/status/ServerStatus.kt new file mode 100644 index 00000000..aa70dbf2 --- /dev/null +++ b/core/src/main/kotlin/net/azisaba/sclat/core/status/ServerStatus.kt @@ -0,0 +1,11 @@ +package net.azisaba.sclat.core.status + +data class ServerStatus( + var isOnline: Boolean, + var isMaintenance: Boolean, + var displayName: String, + var matchStartTime: Long, + var playerCount: Int, + var waitingEndTime: Long, + var runningMatch: Boolean, +) diff --git a/core/src/main/kotlin/net/azisaba/sclat/core/status/StatusLine.kt b/core/src/main/kotlin/net/azisaba/sclat/core/status/StatusLine.kt new file mode 100644 index 00000000..941ee7d8 --- /dev/null +++ b/core/src/main/kotlin/net/azisaba/sclat/core/status/StatusLine.kt @@ -0,0 +1,22 @@ +package net.azisaba.sclat.core.status + +import net.azisaba.sclat.core.extension.currentTimeSeconds + +object StatusLine { + fun getLine(status: ServerStatus): String? { + if (status.isMaintenance || !status.isOnline) return null + return " ${status.displayName}: §r" + + if (status.runningMatch) { + val elapsed = currentTimeSeconds().minus(status.matchStartTime) + "${status.playerCount}§e人が試合中" + + if (elapsed < 10000) " §r(${elapsed.div(60)}:${String.format("%02d", elapsed.mod(60))})" else "" + } else { + "${status.playerCount}§a人が待機中" + + if (status.waitingEndTime != 0L) { + " §r(§b${status.waitingEndTime.minus(currentTimeSeconds())}§r秒後に開始)" + } else { + "" + } + } + } +} diff --git a/src/main/kotlin/be4rjp/sclat/api/team/Team.kt b/core/src/main/kotlin/net/azisaba/sclat/core/team/SclatTeam.kt similarity index 88% rename from src/main/kotlin/be4rjp/sclat/api/team/Team.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/team/SclatTeam.kt index aeb93942..fff557bb 100644 --- a/src/main/kotlin/be4rjp/sclat/api/team/Team.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/team/SclatTeam.kt @@ -1,13 +1,13 @@ -package be4rjp.sclat.api.team +package net.azisaba.sclat.core.team -import be4rjp.sclat.data.Color +import net.azisaba.sclat.core.data.Color import org.bukkit.scoreboard.Team /** * * @author Be4rJP */ -class Team( +class SclatTeam( val iD: Int, ) { var teamColor: Color? = null diff --git a/src/main/kotlin/be4rjp/sclat/api/utils/DailyRefreshSet.kt b/core/src/main/kotlin/net/azisaba/sclat/core/utils/DailyRefreshSet.kt similarity index 83% rename from src/main/kotlin/be4rjp/sclat/api/utils/DailyRefreshSet.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/utils/DailyRefreshSet.kt index 0c94f3ee..bf73d778 100644 --- a/src/main/kotlin/be4rjp/sclat/api/utils/DailyRefreshSet.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/utils/DailyRefreshSet.kt @@ -1,11 +1,11 @@ @file:UseSerializers(UUIDSerializer::class) -package be4rjp.sclat.api.utils +package net.azisaba.sclat.core.utils -import be4rjp.sclat.api.serializer.UUIDSerializer -import be4rjp.sclat.extension.ZONE_TOKYO import kotlinx.serialization.Serializable import kotlinx.serialization.UseSerializers +import net.azisaba.sclat.core.serializer.UUIDSerializer +import java.time.ZoneId import java.time.ZonedDateTime import java.time.temporal.ChronoUnit import java.util.UUID @@ -41,4 +41,8 @@ data class DailyRefreshSet( } operator fun contains(uuid: UUID) = uuids.contains(uuid) + + companion object { + val ZONE_TOKYO: ZoneId = ZoneId.of("Asia/Tokyo") + } } diff --git a/src/main/kotlin/be4rjp/sclat/api/utils/ObjectiveUtil.kt b/core/src/main/kotlin/net/azisaba/sclat/core/utils/ObjectiveUtil.kt similarity index 90% rename from src/main/kotlin/be4rjp/sclat/api/utils/ObjectiveUtil.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/utils/ObjectiveUtil.kt index 8542730c..0855225f 100644 --- a/src/main/kotlin/be4rjp/sclat/api/utils/ObjectiveUtil.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/utils/ObjectiveUtil.kt @@ -1,4 +1,4 @@ -package be4rjp.sclat.api.utils +package net.azisaba.sclat.core.utils import org.bukkit.scoreboard.Objective diff --git a/src/main/kotlin/be4rjp/sclat/api/utils/TextAnimation.kt b/core/src/main/kotlin/net/azisaba/sclat/core/utils/TextAnimation.kt similarity index 87% rename from src/main/kotlin/be4rjp/sclat/api/utils/TextAnimation.kt rename to core/src/main/kotlin/net/azisaba/sclat/core/utils/TextAnimation.kt index 3e7e8b0a..635fd349 100644 --- a/src/main/kotlin/be4rjp/sclat/api/utils/TextAnimation.kt +++ b/core/src/main/kotlin/net/azisaba/sclat/core/utils/TextAnimation.kt @@ -1,17 +1,13 @@ -package be4rjp.sclat.api.utils +package net.azisaba.sclat.core.utils class TextAnimation( text: String, private val length: Int, ) { - private val text: String + private val text: String = text.repeat(4) private var index = 0 - init { - this.text = text + text + text + text - } - fun next(): String { var line = text.substring(index, index + length) diff --git a/core/src/main/kotlin/net/azisaba/sclat/core/weapon/Weapon.kt b/core/src/main/kotlin/net/azisaba/sclat/core/weapon/Weapon.kt new file mode 100644 index 00000000..f67df643 --- /dev/null +++ b/core/src/main/kotlin/net/azisaba/sclat/core/weapon/Weapon.kt @@ -0,0 +1,18 @@ +package net.azisaba.sclat.core.weapon + +// Todo: impl +interface Weapon { + fun onInit() {} + + fun onDestroy() {} + + fun onClick() {} + + fun onTick() {} + + fun onHeldTick() {} + + fun onHeld() {} + + fun onUnHeld() {} +} diff --git a/core/src/test/kotlin/net/azisaba/sclat/core/DelegatedLoggerTest.kt b/core/src/test/kotlin/net/azisaba/sclat/core/DelegatedLoggerTest.kt new file mode 100644 index 00000000..6c63d080 --- /dev/null +++ b/core/src/test/kotlin/net/azisaba/sclat/core/DelegatedLoggerTest.kt @@ -0,0 +1,40 @@ +package net.azisaba.sclat.core + +import io.kotest.core.spec.style.StringSpec +import io.kotest.matchers.shouldBe +import io.kotest.matchers.shouldNotBe + +class DelegatedLoggerTest : + StringSpec({ + "DelegatedLogger should return the same logger instance for the same class" { + val testObject = + object { + val logger1 by DelegatedLogger() + val logger2 by DelegatedLogger() + } + testObject.logger1 shouldBe testObject.logger2 + } + + "DelegatedLogger should return different logger instances for different classes" { + class TestClass1 { + val logger by DelegatedLogger() + } + + class TestClass2 { + val logger by DelegatedLogger() + } + + val testClass1 = TestClass1() + val testClass2 = TestClass2() + + testClass1.logger shouldNotBe testClass2.logger + } + + "get class name correctly on sclat" { + logger.name shouldBe "Sclat:DelegatedLoggerTest" + } + }) { + companion object { + private val logger by DelegatedLogger() + } +} diff --git a/core/src/test/kotlin/net/azisaba/sclat/core/PluginsTest.kt b/core/src/test/kotlin/net/azisaba/sclat/core/PluginsTest.kt new file mode 100644 index 00000000..aee886e7 --- /dev/null +++ b/core/src/test/kotlin/net/azisaba/sclat/core/PluginsTest.kt @@ -0,0 +1,46 @@ +package net.azisaba.sclat.core + +import io.kotest.core.spec.style.StringSpec +import io.kotest.matchers.shouldBe +import io.mockk.every +import io.mockk.mockk +import org.bukkit.plugin.PluginManager + +class PluginsTest : + StringSpec({ + "all enabled" { + val pluginManager = mockk() + every { pluginManager.isPluginEnabled("DADADAChecker") } returns true + every { pluginManager.isPluginEnabled("LunaChat") } returns true + every { pluginManager.isPluginEnabled("NoteBlockAPI") } returns true + every { pluginManager.isPluginEnabled("ProtocolLib") } returns true + Plugins.onInit(pluginManager) shouldBe true + } + + "missing non-required" { + val pluginManager = mockk() + every { pluginManager.isPluginEnabled("DADADAChecker") } returns true + every { pluginManager.isPluginEnabled("LunaChat") } returns false + every { pluginManager.isPluginEnabled("NoteBlockAPI") } returns true + every { pluginManager.isPluginEnabled("ProtocolLib") } returns true + Plugins.onInit(pluginManager) shouldBe true + } + + "missing required" { + val pluginManager = mockk() + every { pluginManager.isPluginEnabled("DADADAChecker") } returns false + every { pluginManager.isPluginEnabled("LunaChat") } returns true + every { pluginManager.isPluginEnabled("NoteBlockAPI") } returns true + every { pluginManager.isPluginEnabled("ProtocolLib") } returns true + Plugins.onInit(pluginManager) shouldBe false + } + + "missing required many" { + val pluginManager = mockk() + every { pluginManager.isPluginEnabled("DADADAChecker") } returns false + every { pluginManager.isPluginEnabled("LunaChat") } returns true + every { pluginManager.isPluginEnabled("NoteBlockAPI") } returns false + every { pluginManager.isPluginEnabled("ProtocolLib") } returns true + Plugins.onInit(pluginManager) shouldBe false + } + }) diff --git a/core/src/test/kotlin/net/azisaba/sclat/core/config/SclatConfigTest.kt b/core/src/test/kotlin/net/azisaba/sclat/core/config/SclatConfigTest.kt new file mode 100644 index 00000000..f778cdd9 --- /dev/null +++ b/core/src/test/kotlin/net/azisaba/sclat/core/config/SclatConfigTest.kt @@ -0,0 +1,104 @@ +package net.azisaba.sclat.core.config + +import io.kotest.core.spec.style.StringSpec +import net.mamoe.yamlkt.Yaml + +class SclatConfigTest : + StringSpec({ + "test on prod file" { + val rawJson = + """ +Lobby: + WorldName: lobby + X: 1 + Y: 2 + Z: 3 + Yaw: 180 +TutorialClear: + WorldName: lobby + X: 4 + Y: 5 + Z: 6 + Yaw: 180 +Tutorial: + WorldName: lobby + X: 7 + Y: 8 + Z: 9 + Yaw: -90 +Hologram: + WorldName: lobby + X: 10 + Y: 11 + Z: 12 + Yaw: 180 +RankingHolograms: + WorldName: lobby + X: 13 + Y: 14.5 + Z: 15.5 +SquidRecovery: 0.1 +NormalRecovery: 0.1 +BlockUpdateRate: 20 +MaxPlayerCount: 20 +StartPlayerCount: 2 +SquidSpeed: 0.1 +PlayerWalkSpeed: 0.1 +CanVoting: true +DefaultClass: わかばシューター +WorkMode: Normal +ServerType: LOBBY +MakeRankingPeriod: 20 +HologramUpdatePeriod: 20 +ParticlesRenderDistance: 16 +Shop: true +ResourcePackURL: https://azisaba.net/sclat/resourcepack.zip +nBGM: + Helloworld: helloworld.nbs +fBGM: + NotAtAll: notatall.nbs +StatusShare: + Port: 25590 +EquipShare: + sclatsv1: + Port: 25100 + Host: match-sv1 + Trial: + Port: 25100 + Host: weapon-test + """.trimIndent() + yaml.decodeFromString( + SclatConfig.serializer(), + rawJson, + ) + } + + "self encode and decode test" { + val encodedJson = + yaml.encodeToString( + SclatConfig( + workMode = "Trial", + serverType = "Lobby", + blockUpdateRate = 20, + resourcePackUrl = "https://example.com/resourcepack.zip", + defaultClass = "defaultWeapon", + maxPlayerCount = 20, + canVoting = false, + startPlayerCount = 2, + hologram = LocationConfig("TestWorld", 0.0, 64.0, 0.0), + rankingHolograms = LocationConfig("TestWorld", 0.0, 64.0, 0.0), + normalRecovery = 1.0, + squidRecovery = 1.0, + squidSpeed = 1.0, + ), + ) + yaml.decodeFromString(SclatConfig.serializer(), encodedJson) + } + }) { + companion object { + val yaml = + Yaml { + encodeDefaultValues = true + } + } +} diff --git a/core/src/test/kotlin/net/azisaba/sclat/core/gauge/GaugeAPITest.kt b/core/src/test/kotlin/net/azisaba/sclat/core/gauge/GaugeAPITest.kt new file mode 100644 index 00000000..490a42ea --- /dev/null +++ b/core/src/test/kotlin/net/azisaba/sclat/core/gauge/GaugeAPITest.kt @@ -0,0 +1,43 @@ +package net.azisaba.sclat.core.gauge + +import io.kotest.core.spec.style.StringSpec +import io.kotest.matchers.shouldBe +import org.bukkit.ChatColor + +class GaugeAPITest : StringSpec({ + "should generate gauge with correct filled and empty parts" { + val value = 5 + val max = 10 + val color1 = "${ChatColor.GREEN}" + val color2 = "${ChatColor.RED}" + + val result = GaugeAPI.toGauge(value, max, color1, color2) + + val expected = "${ChatColor.RESET}${ChatColor.GREEN}|||||${ChatColor.RED}|||||${ChatColor.RESET}" + result shouldBe expected + } + + "should generate empty gauge when value is 0" { + val value = 0 + val max = 10 + val color1 = "${ChatColor.GREEN}" + val color2 = "${ChatColor.RED}" + + val result = GaugeAPI.toGauge(value, max, color1, color2) + + val expected = "${ChatColor.RESET}${ChatColor.GREEN}${ChatColor.RED}||||||||||${ChatColor.RESET}" + result shouldBe expected + } + + "should generate full gauge when value equals max" { + val value = 10 + val max = 10 + val color1 = "${ChatColor.GREEN}" + val color2 = "${ChatColor.RED}" + + val result = GaugeAPI.toGauge(value, max, color1, color2) + + val expected = "${ChatColor.RESET}${ChatColor.GREEN}||||||||||${ChatColor.RED}${ChatColor.RESET}" + result shouldBe expected + } +}) diff --git a/core/src/test/kotlin/net/azisaba/sclat/core/serializer/UUIDSerializerTest.kt b/core/src/test/kotlin/net/azisaba/sclat/core/serializer/UUIDSerializerTest.kt new file mode 100644 index 00000000..dbf514b4 --- /dev/null +++ b/core/src/test/kotlin/net/azisaba/sclat/core/serializer/UUIDSerializerTest.kt @@ -0,0 +1,147 @@ +package net.azisaba.sclat.core.serializer + +import kotlinx.serialization.Contextual +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.Serializable +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.CompositeDecoder +import kotlinx.serialization.encoding.CompositeEncoder +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder +import kotlinx.serialization.modules.EmptySerializersModule +import net.mamoe.yamlkt.Yaml +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertThrows +import org.junit.jupiter.api.Test +import java.util.UUID + +@Serializable +data class TestData( + @Contextual val id: UUID, +) + +class UUIDSerializerTest { + private val yaml = + Yaml { + serializersModule = + kotlinx.serialization.modules.SerializersModule { + contextual(UUID::class, UUIDSerializer) + } + } + + @Test + fun `test serialize UUID`() { + val uuid = UUID.randomUUID() + val testData = TestData(uuid) + val serialized = yaml.encodeToString(TestData.serializer(), testData) + assertEquals("id: '$uuid'", serialized.trim()) + } + + @Test + fun `test deserialize valid UUID with dashes`() { + val uuid = UUID.randomUUID() + val serialized = uuid.toString() + val deserialized = yaml.decodeFromString(UUIDSerializer, serialized) + assertEquals(uuid, deserialized) + } + + @Test + fun `test deserialize invalid UUID`() { + val invalidUUID = "invalid-uuid" + assertThrows(IllegalArgumentException::class.java) { + yaml.decodeFromString(UUIDSerializer, invalidUUID) + } + } + + @OptIn(ExperimentalSerializationApi::class) + @Test + fun `test invalid deserialization`() { + val invalidUUIDString = "invalid-uuid" + val decoder = + object : Decoder { + override val serializersModule = EmptySerializersModule() + + override fun decodeString(): String = invalidUUIDString + + override fun beginStructure(descriptor: SerialDescriptor): CompositeDecoder = + throw UnsupportedOperationException("Not implemented") + + override fun decodeBoolean(): Boolean = throw UnsupportedOperationException("Not implemented") + + override fun decodeByte(): Byte = throw UnsupportedOperationException("Not implemented") + + override fun decodeChar(): Char = throw UnsupportedOperationException("Not implemented") + + override fun decodeDouble(): Double = throw UnsupportedOperationException("Not implemented") + + override fun decodeEnum(enumDescriptor: SerialDescriptor): Int = throw UnsupportedOperationException("Not implemented") + + override fun decodeFloat(): Float = throw UnsupportedOperationException("Not implemented") + + override fun decodeInline(descriptor: SerialDescriptor): Decoder = throw UnsupportedOperationException("Not implemented") + + override fun decodeInt(): Int = throw UnsupportedOperationException("Not implemented") + + override fun decodeLong(): Long = throw UnsupportedOperationException("Not implemented") + + override fun decodeNotNullMark(): Boolean = throw UnsupportedOperationException("Not implemented") + + override fun decodeNull(): Nothing = throw UnsupportedOperationException("Not implemented") + + override fun decodeShort(): Short = throw UnsupportedOperationException("Not implemented") + } + + try { + UUIDSerializer.deserialize(decoder) + assert(false) { "Expected an exception for invalid UUID" } + } catch (_: IllegalArgumentException) { + // Expected exception + } + } + + @OptIn(ExperimentalSerializationApi::class) + @Test + fun `test serialization`() { + val uuid = UUID.randomUUID() + val encoder = + object : Encoder { + var encodedValue: String? = null + override val serializersModule = EmptySerializersModule() + + override fun encodeString(value: String) { + encodedValue = value + } + + override fun beginStructure(descriptor: SerialDescriptor): CompositeEncoder = + throw UnsupportedOperationException("Not implemented") + + override fun encodeBoolean(value: Boolean) = throw UnsupportedOperationException("Not implemented") + + override fun encodeByte(value: Byte) = throw UnsupportedOperationException("Not implemented") + + override fun encodeChar(value: Char) = throw UnsupportedOperationException("Not implemented") + + override fun encodeDouble(value: Double) = throw UnsupportedOperationException("Not implemented") + + override fun encodeEnum( + enumDescriptor: SerialDescriptor, + index: Int, + ) = throw UnsupportedOperationException("Not implemented") + + override fun encodeFloat(value: Float) = throw UnsupportedOperationException("Not implemented") + + override fun encodeInline(descriptor: SerialDescriptor): Encoder = throw UnsupportedOperationException("Not implemented") + + override fun encodeInt(value: Int) = throw UnsupportedOperationException("Not implemented") + + override fun encodeLong(value: Long) = throw UnsupportedOperationException("Not implemented") + + override fun encodeNull() = throw UnsupportedOperationException("Not implemented") + + override fun encodeShort(value: Short) = throw UnsupportedOperationException("Not implemented") + } + + UUIDSerializer.serialize(encoder, uuid) + assert(uuid.toString() == encoder.encodedValue) { "Serialization failed" } + } +} diff --git a/core/src/test/kotlin/net/azisaba/sclat/core/shape/SphereTest.kt b/core/src/test/kotlin/net/azisaba/sclat/core/shape/SphereTest.kt new file mode 100644 index 00000000..758bcb4c --- /dev/null +++ b/core/src/test/kotlin/net/azisaba/sclat/core/shape/SphereTest.kt @@ -0,0 +1,35 @@ +package net.azisaba.sclat.core.shape + +import io.kotest.core.spec.style.StringSpec +import io.kotest.matchers.collections.shouldHaveSize +import io.mockk.mockk +import org.bukkit.Location +import org.bukkit.World + +class SphereTest : + StringSpec({ + "getSphere should generate correct number of points" { + val mockWorld = mockk() + val baseLoc = Location(mockWorld, 0.0, 0.0, 0.0) + val radius = 5.0 + val accuracy = 10 + + val spherePoints = Sphere.getSphere(baseLoc, radius, accuracy) + + // Verify the size of the generated points + spherePoints.shouldHaveSize((180 / accuracy) * (360 / accuracy)) + } + + "getXZCircle should generate correct number of points" { + val mockWorld = mockk() + val baseLoc = Location(mockWorld, 0.0, 0.0, 0.0) + val radius = 5.0 + val rAccuracy = 1.0 + val accuracy = 10 + + val circlePoints = Sphere.getXZCircle(baseLoc, radius, rAccuracy, accuracy) + + // Verify the size of the generated points + circlePoints.shouldHaveSize(588) + } + }) diff --git a/core/src/test/kotlin/net/azisaba/sclat/core/status/MineStatTest.kt b/core/src/test/kotlin/net/azisaba/sclat/core/status/MineStatTest.kt new file mode 100644 index 00000000..5314ba15 --- /dev/null +++ b/core/src/test/kotlin/net/azisaba/sclat/core/status/MineStatTest.kt @@ -0,0 +1,27 @@ +package net.azisaba.sclat.core.status + +import io.kotest.core.spec.style.StringSpec +import io.kotest.matchers.shouldBe + +class MineStatTest : + StringSpec({ + "should return server up when server is reachable" { + val mineStat = MineStat("example.com", 25565) + mineStat.isServerUp shouldBe false + } + + "should return server down when server is unreachable" { + val mineStat = MineStat("invalid.address", 25565) + mineStat.isServerUp shouldBe false + } + + "should correctly parse server data when server is up" { + val mineStat = MineStat("example.com", 25565) + if (mineStat.isServerUp) { + mineStat.version shouldBe "1.20.1" + mineStat.motd shouldBe "Welcome to the server!" + mineStat.currentPlayers shouldBe "10" + mineStat.maximumPlayers shouldBe "100" + } + } + }) diff --git a/core/src/test/kotlin/net/azisaba/sclat/core/status/StatusLineTest.kt b/core/src/test/kotlin/net/azisaba/sclat/core/status/StatusLineTest.kt new file mode 100644 index 00000000..93bb1d58 --- /dev/null +++ b/core/src/test/kotlin/net/azisaba/sclat/core/status/StatusLineTest.kt @@ -0,0 +1,117 @@ +package net.azisaba.sclat.core.status + +import io.kotest.core.spec.style.StringSpec +import net.azisaba.sclat.core.extension.currentTimeSeconds +import kotlin.test.assertEquals +import kotlin.test.assertNotNull +import kotlin.test.assertNull + +class StatusLineTest : + StringSpec({ + "returns null when maintenance" { + val status = + ServerStatus( + isOnline = true, + isMaintenance = true, + displayName = "srv", + matchStartTime = 0L, + playerCount = 0, + waitingEndTime = 0L, + runningMatch = false, + ) + assertNull(StatusLine.getLine(status)) + } + + "returns null when offline" { + val status = + ServerStatus( + isOnline = false, + isMaintenance = false, + displayName = "srv", + matchStartTime = 0L, + playerCount = 0, + waitingEndTime = 0L, + runningMatch = false, + ) + assertNull(StatusLine.getLine(status)) + } + + "waiting without waitingEndTime shows waiting and no countdown" { + val status = + ServerStatus( + isOnline = true, + isMaintenance = false, + displayName = "Test", + matchStartTime = 0L, + playerCount = 5, + waitingEndTime = 0L, + runningMatch = false, + ) + val line = StatusLine.getLine(status) + val l = assertNotNull(line) + val expected = " ${status.displayName}: §r${status.playerCount}§a人が待機中" + assertEquals(l, expected, "expected='$expected' but was='$l'") + } + + "waiting with waitingEndTime shows countdown exact string" { + val now = currentTimeSeconds() + val wait = 42L + val status = + ServerStatus( + isOnline = true, + isMaintenance = false, + displayName = "W", + matchStartTime = 0L, + playerCount = 3, + waitingEndTime = now + wait, + runningMatch = false, + ) + // compute expected using the same captured `now` to avoid second-boundary drift + val remaining = status.waitingEndTime - now + val expected = " ${status.displayName}: §r${status.playerCount}§a人が待機中 §r(§b$remaining§r秒後に開始)" + val line = StatusLine.getLine(status) + val l2 = assertNotNull(line) + assertEquals(l2, expected, "expected='$expected' but was='$l2'") + } + + "running match shows elapsed time when small exact string" { + val now = currentTimeSeconds() + val elapsedSet = 125L // 2:05 + val status = + ServerStatus( + isOnline = true, + isMaintenance = false, + displayName = "R", + matchStartTime = now - elapsedSet, + playerCount = 8, + waitingEndTime = 0L, + runningMatch = true, + ) + // compute expected using captured `now` so elapsed is deterministic + val elapsed = now - status.matchStartTime + val minutes = elapsed / 60 + val seconds = elapsed % 60 + val expected = " ${status.displayName}: §r${status.playerCount}§e人が試合中 §r($minutes:${String.format("%02d", seconds)})" + val line = StatusLine.getLine(status) + val l3 = assertNotNull(line) + assertEquals(l3, expected, "expected='$expected' but was='$l3'") + } + + "running match long elapsed hides elapsed display exact string" { + val now = currentTimeSeconds() + val status = + ServerStatus( + isOnline = true, + isMaintenance = false, + displayName = "RL", + matchStartTime = now - 20000L, + playerCount = 2, + waitingEndTime = 0L, + runningMatch = true, + ) + val expected = " ${status.displayName}: §r${status.playerCount}§e人が試合中" + val line = StatusLine.getLine(status) + val l4 = assertNotNull(line) + assertEquals(l4, expected, "expected='$expected' but was='$l4'") + } + }) diff --git a/core/src/test/kotlin/net/azisaba/sclat/core/team/TeamTest.kt b/core/src/test/kotlin/net/azisaba/sclat/core/team/TeamTest.kt new file mode 100644 index 00000000..c7411be1 --- /dev/null +++ b/core/src/test/kotlin/net/azisaba/sclat/core/team/TeamTest.kt @@ -0,0 +1,46 @@ +package net.azisaba.sclat.core.team + +import io.kotest.core.spec.style.StringSpec +import io.kotest.matchers.shouldBe + +class TeamTest : + StringSpec({ + + "addPaintCount should increment point" { + val team = SclatTeam(1) + team.addPaintCount() + team.point shouldBe 1 + } + + "subtractPaintCount should decrement point" { + val team = SclatTeam(1) + team.addPaintCount() + team.subtractPaintCount() + team.point shouldBe 0 + } + + "addKillCount should increment killCount" { + val team = SclatTeam(1) + team.addKillCount() + team.killCount shouldBe 1 + } + + "addGatiCount should increment gatiCount" { + val team = SclatTeam(1) + team.addGatiCount() + team.gatiCount shouldBe 1 + } + + "addRateTotal should add to rateTotal" { + val team = SclatTeam(1) + team.addRateTotal(10) + team.rateTotal shouldBe 10 + } + + "subtractRateTotal should subtract from rateTotal" { + val team = SclatTeam(1) + team.addRateTotal(10) + team.subtractRateTotal(5) + team.rateTotal shouldBe 5 + } + }) diff --git a/core/src/test/kotlin/net/azisaba/sclat/core/utils/DailyRefreshSetTest.kt b/core/src/test/kotlin/net/azisaba/sclat/core/utils/DailyRefreshSetTest.kt new file mode 100644 index 00000000..48a416b5 --- /dev/null +++ b/core/src/test/kotlin/net/azisaba/sclat/core/utils/DailyRefreshSetTest.kt @@ -0,0 +1,49 @@ +package net.azisaba.sclat.core.utils + +import org.junit.jupiter.api.Assertions.assertFalse +import org.junit.jupiter.api.Assertions.assertTrue +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test +import java.util.UUID + +class DailyRefreshSetTest { + + private lateinit var dailyRefreshSet: DailyRefreshSet + + @BeforeEach + fun setUp() { + dailyRefreshSet = DailyRefreshSet() + } + + @Test + fun `test adding UUID`() { + val uuid = UUID.randomUUID() + dailyRefreshSet + uuid + assertTrue(uuid in dailyRefreshSet) + } + + @Test + fun `test removing UUID`() { + val uuid = UUID.randomUUID() + dailyRefreshSet + uuid + dailyRefreshSet - uuid + assertFalse(uuid in dailyRefreshSet) + } + + @Test + fun `test refresh clears UUIDs`() { + val uuid = UUID.randomUUID() + dailyRefreshSet + uuid + dailyRefreshSet.nextResetEpoch = System.currentTimeMillis() - 1 // Force refresh + dailyRefreshSet + UUID.randomUUID() // Trigger refresh + assertFalse(uuid in dailyRefreshSet) + } + + @Test + fun `test next reset epoch updates`() { + val initialResetEpoch = dailyRefreshSet.nextResetEpoch + dailyRefreshSet.nextResetEpoch = System.currentTimeMillis() - 1 // Force refresh + dailyRefreshSet + UUID.randomUUID() // Trigger refresh + assertTrue(dailyRefreshSet.nextResetEpoch > initialResetEpoch) + } +} \ No newline at end of file diff --git a/core/src/test/kotlin/net/azisaba/sclat/core/utils/TextAnimationTest.kt b/core/src/test/kotlin/net/azisaba/sclat/core/utils/TextAnimationTest.kt new file mode 100644 index 00000000..ce893f28 --- /dev/null +++ b/core/src/test/kotlin/net/azisaba/sclat/core/utils/TextAnimationTest.kt @@ -0,0 +1,45 @@ +package net.azisaba.sclat.core.utils + +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test + +class TextAnimationTest { + @Test + fun `test next method`() { + val textAnimation = TextAnimation("Hello", 5) + + val first = textAnimation.next() + val second = textAnimation.next() + val third = textAnimation.next() + + assertEquals("HelloHel", first) + assertEquals("elloHell", second) + assertEquals("lloHello", third) + } + + @Test + fun `test next method with shorter text`() { + val textAnimation = TextAnimation("Hi", 2) + + val first = textAnimation.next() + val second = textAnimation.next() + val third = textAnimation.next() + + assertEquals("HiH", first) + assertEquals("iHi", second) + assertEquals("HiH", third) + } + + @Test + fun `test next method with longer text`() { + val textAnimation = TextAnimation("ABCDEFG", 4) + + val first = textAnimation.next() + val second = textAnimation.next() + val third = textAnimation.next() + + assertEquals("ABCDEF", first) + assertEquals("BCDEFG", second) + assertEquals("CDEFGA", third) + } +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml deleted file mode 100644 index 739627c8..00000000 --- a/gradle/libs.versions.toml +++ /dev/null @@ -1,42 +0,0 @@ -[versions] -kotlin = "2.3.20" -ktlint = "14.2.0" -shadow = "8.3.10" -protocolLib = "5.1.0" -paperApi = "1.14.4-R0.1-SNAPSHOT" -blockstudio = "-SNAPSHOT" -dadadachecker = "1.0.0" -noteblockapi = "1.6.3" -lunachat = "3.0.16" -spigot = "1.14.4-R0.1-SNAPSHOT" -cloudPaper = "2.0.0-SNAPSHOT" # found newer 2.0.0-beta.10 -jspecify = "1.0.0" -yamlkt = "0.13.0" -fastboard = "2.1.5" -ktoml = "0.7.1" - -[plugins] -shadow = { id = "com.gradleup.shadow", version.ref = "shadow" } -kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } -kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } -ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint" } - -[libraries] -kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8" } -protocolLib = { module = "net.dmulloy2:ProtocolLib", version.ref = "protocolLib" } -paperApi = { module = "com.destroystokyo.paper:paper-api", version.ref = "paperApi" } -blockstudio = { module = "com.github.Be4rJP:BlockStudio", version.ref = "blockstudio" } -dadadachecker = { module = "com.github.Be4rJP:DADADAChecker", version.ref = "dadadachecker" } -noteblockapi = { module = "com.github.koca2000:NoteBlockAPI", version.ref = "noteblockapi" } -lunachat = { module = "com.github.ucchyocean:LunaChat", version.ref = "lunachat" } -spigot = { module = "org.spigotmc:spigot", version.ref = "spigot" } -cloudPaper = { module = "org.incendo:cloud-paper", version.ref = "cloudPaper" } -jspecify = { module = "org.jspecify:jspecify", version.ref = "jspecify" } -yamlkt = { module = "net.mamoe.yamlkt:yamlkt", version.ref = "yamlkt" } -fastboard = { module = "fr.mrmicky:fastboard", version.ref = "fastboard" } -ktoml-core = { module = "com.akuleshov7:ktoml-core", version.ref = "ktoml"} - -[bundles] -ktoml = [ - "ktoml-core" -] diff --git a/settings.gradle.kts b/settings.gradle.kts index 6e3edc26..7f94d075 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1 +1,3 @@ rootProject.name = "Sclat" + +include("core") diff --git a/src/main/kotlin/be4rjp/sclat/Glow.kt b/src/main/kotlin/be4rjp/sclat/Glow.kt index 56504f92..7bbb75aa 100644 --- a/src/main/kotlin/be4rjp/sclat/Glow.kt +++ b/src/main/kotlin/be4rjp/sclat/Glow.kt @@ -1,11 +1,12 @@ package be4rjp.sclat +import net.azisaba.sclat.core.DelegatedLogger import org.bukkit.enchantments.Enchantment import org.bukkit.enchantments.EnchantmentTarget import org.bukkit.enchantments.EnchantmentWrapper import org.bukkit.inventory.ItemStack -class Glow : EnchantmentWrapper("sclatg") { +class Glow : EnchantmentWrapper(ENCHANT_NAME) { override fun canEnchantItem(item: ItemStack): Boolean = true override fun conflictsWith(other: Enchantment): Boolean = false @@ -14,47 +15,44 @@ class Glow : EnchantmentWrapper("sclatg") { override fun getMaxLevel(): Int = 10 - override fun getName(): String = "sclatg" + override fun getName(): String = ENCHANT_NAME override fun getStartLevel(): Int = 1 - fun enchantGlow(`is`: ItemStack): ItemStack { - enableGlow() - `is`.addEnchantment(glow!!, 1) - return `is` - } + fun enchantGlow(stack: ItemStack): ItemStack = + stack.apply { + addEnchantment(glow, 1) + } - fun removeGlow(`is`: ItemStack): ItemStack { - enableGlow() - `is`.removeEnchantment(glow!!) - return `is` - } + fun removeGlow(stack: ItemStack): ItemStack = stack.apply { removeEnchantment(glow) } - fun isGlowing(`is`: ItemStack): Boolean { - enableGlow() - return `is`.enchantments.containsKey(glow) - } + fun isGlowing(stack: ItemStack): Boolean = stack.enchantments.containsKey(glow) - fun enableGlow() { - try { - if (glow == null) { - glow = Glow() - val f = Enchantment::class.java.getDeclaredField("acceptingNew") - f.setAccessible(true) - f.set(null, true) - val hmapf = Enchantment::class.java.getDeclaredField("byName") - hmapf.setAccessible(true) - val hmap = hmapf.get(hmapf) as MutableMap<*, *> - if (!hmap.containsKey("sclatg")) { - registerEnchantment(glow!!) + companion object { + private const val ENCHANT_NAME = "sclatg" + private val logger by DelegatedLogger() + private val glow: Glow by lazy { + Glow().apply { + try { + Enchantment::class.java.getDeclaredField("acceptingNew").apply { + isAccessible = true + set(null, true) + } + @Suppress("UNCHECKED_CAST") + val hmap = + Enchantment::class.java + .getDeclaredField("byName") + .apply { isAccessible = true } + .let { it.get(it) } as MutableMap + if (!hmap.containsKey(ENCHANT_NAME)) { + registerEnchantment(glow) + } else { + logger.warn("Glow enchantment is already registered... why?") + } + } catch (e: Exception) { + logger.error("Failed to register glow enchantment", e) } } - } catch (ex: Exception) { - ex.printStackTrace() } } - - companion object { - private var glow: Glow? = null - } } diff --git a/src/main/kotlin/be4rjp/sclat/Sclat.kt b/src/main/kotlin/be4rjp/sclat/Sclat.kt index 0b25b445..33883ac1 100644 --- a/src/main/kotlin/be4rjp/sclat/Sclat.kt +++ b/src/main/kotlin/be4rjp/sclat/Sclat.kt @@ -4,19 +4,12 @@ package be4rjp.sclat import be4rjp.blockstudio.BlockStudio import be4rjp.dadadachecker.DADADACheckerAPI -import be4rjp.sclat.api.Plugins -import be4rjp.sclat.api.Plugins.Companion.onInit import be4rjp.sclat.api.SclatUtil.sendRestartedServerInfo -import be4rjp.sclat.api.ServerType import be4rjp.sclat.api.async.AsyncPlayerListener import be4rjp.sclat.api.async.AsyncThreadManager.setup import be4rjp.sclat.api.async.AsyncThreadManager.shutdownAll -import be4rjp.sclat.api.config.CustomConfig import be4rjp.sclat.api.holo.PlayerHolograms -import be4rjp.sclat.api.utils.TextAnimation import be4rjp.sclat.command.SclatCommands -import be4rjp.sclat.config.Config -import be4rjp.sclat.config.NewConfig import be4rjp.sclat.data.DataMgr import be4rjp.sclat.data.DataMgr.armorStandMap import be4rjp.sclat.data.DataMgr.blockDataMap @@ -50,10 +43,18 @@ import be4rjp.sclat.weapon.MainWeapon import be4rjp.sclat.weapon.SPWeapon import be4rjp.sclat.weapon.SnowballListener import be4rjp.sclat.weapon.SubWeapon -import com.comphenix.protocol.ProtocolLibrary -import com.comphenix.protocol.ProtocolManager import com.google.common.io.ByteStreams import fr.mrmicky.fastboard.FastBoard +import net.azisaba.sclat.core.DelegatedLogger +import net.azisaba.sclat.core.Plugins +import net.azisaba.sclat.core.Plugins.Companion.onInit +import net.azisaba.sclat.core.config.Config +import net.azisaba.sclat.core.config.CustomConfig +import net.azisaba.sclat.core.config.NewConfig +import net.azisaba.sclat.core.enums.ServerType +import net.azisaba.sclat.core.status.ServerStatus +import net.azisaba.sclat.core.status.StatusLine +import net.azisaba.sclat.core.utils.TextAnimation import org.bukkit.Bukkit import org.bukkit.ChatColor import org.bukkit.Location @@ -88,10 +89,8 @@ class Sclat : setup(1) // ----------------------------APICheck------------------------------- - if (!onInit()) return - sclatLogger.info("API check was completed.") - - protocolManager = ProtocolLibrary.getProtocolManager() + if (!onInit(server.pluginManager)) return + logger.info("API check was completed.") init() dadadaCheckerAPI = DADADACheckerAPI(this) @@ -99,7 +98,7 @@ class Sclat : // ------------------------------------------------------------------- // --------------------------Load config------------------------------ - sclatLogger.info("Loading config files...") + logger.info("Loading config files...") conf = Config() conf?.loadConfig() NewConfig.load() @@ -114,7 +113,7 @@ class Sclat : world!!.isAutoSave = false } } else { - sclatLogger.info("Deferred map loading is enabled; maps will be loaded when assigned to matches.") + logger.info("Deferred map loading is enabled; maps will be loaded when assigned to matches.") } if (conf!!.config!!.contains("Tutorial")) tutorial = conf!!.config!!.getBoolean("Tutorial") if (conf!!.config!!.contains("Colors")) colors = conf!!.config!!.getStringList("Colors") @@ -138,7 +137,7 @@ class Sclat : // ------------------------------------------------------------------- // ------------------------RegisteringEvents-------------------------- - sclatLogger.info("Registering Events...") + logger.info("Registering Events...") val pm = server.pluginManager pm.registerEvents(GameMgr(), this) pm.registerEvents(SquidListener(), this) @@ -154,27 +153,27 @@ class Sclat : // ------------------------------------------------------------------- // ------------------------RegisteringCommands------------------------ - sclatLogger.info("Registering Commands...") + logger.info("Registering Commands...") SclatCommands.init(this) // ------------------------------------------------------------------- // ------------------------Setup from config-------------------------- - sclatLogger.info("SetupColor...") + logger.info("SetupColor...") ColorMgr.setupColor() - sclatLogger.info("SetupMainWeapon...") + logger.info("SetupMainWeapon...") MainWeaponMgr.setupMainWeapon() - sclatLogger.info("WeaponClassSetup...") + logger.info("WeaponClassSetup...") WeaponClassMgr.weaponClassSetup() - sclatLogger.info("Setup Map...") - sclatLogger.info("") - sclatLogger.info("-----------------MAP LIST-----------------") + logger.info("Setup Map...") + logger.info("") + logger.info("-----------------MAP LIST-----------------") MapDataMgr.setupMap() - sclatLogger.info("------------------------------------------") - sclatLogger.info("") - sclatLogger.info("MatchSetup...") + logger.info("------------------------------------------") + logger.info("") + logger.info("MatchSetup...") MatchMgr.matchSetup() - sclatLogger.info("Setup is finished!") + logger.info("Setup is finished!") // ------------------------------------------------------------------- @@ -190,11 +189,11 @@ class Sclat : } buff.append("###") - sclatLogger.info("##############################################") - sclatLogger.info("### ###") - sclatLogger.info(buff.toString()) - sclatLogger.info("### ###") - sclatLogger.info("##############################################") + logger.info("##############################################") + logger.info("### ###") + logger.info(buff.toString()) + logger.info("### ###") + logger.info("##############################################") // ------------------------------------------------------------------- @@ -260,7 +259,7 @@ class Sclat : if (type == ServerType.LOBBY) { ss = StatusServer(conf!!.config!!.getInt("StatusShare.Port")) ss!!.start() - sclatLogger.info("StatusServer is ready!") + logger.info("StatusServer is ready!") } // ------------------------------------------------------------------- @@ -269,13 +268,13 @@ class Sclat : if (type == ServerType.MATCH || conf!!.config!!.getString("WorkMode") == "Trial") { es = EquipmentServer(conf!!.config!!.getInt("EquipShare.Port")) es!!.start() - sclatLogger.info("StatusServer is ready!") + logger.info("StatusServer is ready!") } // ------------------------------------------------------------------- // --------------------------Return task------------------------------ - PlayerReturnManager.runRemoveTask() + PlayerReturnManager.runRemoveTask(this) // ------------------------------------------------------------------- @@ -322,7 +321,7 @@ class Sclat : // ------------------------------------------------------------------- // ---------------------------BlockStudio----------------------------- - sclatLogger.info("Loading all object data...") + logger.info("Loading all object data...") val api = BlockStudio.getBlockStudioAPI() api.loadAllObjectData() @@ -447,23 +446,18 @@ class Sclat : "§9§lサーバー »", *ServerStatusManager.serverList .filter { status -> !status.isMaintenance && status.isOnline } - .map { serverStatus -> - " " + serverStatus.displayName + ": §r" + - if (serverStatus.runningMatch) { - val time = System.currentTimeMillis() / 1000 - serverStatus.matchStartTime - val min = String.format("%02d", time % 60) - serverStatus.playerCount.toString() + "§e人が試合中" + - (if (time < 10000) " §r(" + time / 60 + ":" + min + ")" else "") - } else { - if (serverStatus.waitingEndTime != 0L) { - ( - serverStatus.playerCount.toString() + "§a人が待機中" + " §r(§b" + - ((serverStatus.waitingEndTime - (System.currentTimeMillis() / 1000)).toString() + "§r秒後に開始)") - ) - } else { - serverStatus.playerCount.toString() + "§a人が待機中" - } - } + .mapNotNull { serverStatus -> + StatusLine.getLine( + ServerStatus( + serverStatus.isOnline, + serverStatus.isMaintenance, + serverStatus.displayName, + serverStatus.matchStartTime, + serverStatus.playerCount, + serverStatus.waitingEndTime, + serverStatus.runningMatch, + ), + ) }.toTypedArray(), " ", "§a§lNews »", @@ -474,6 +468,8 @@ class Sclat : } companion object { + private val logger by DelegatedLogger() + @JvmField var conf: Config? = null @@ -514,9 +510,6 @@ class Sclat : // ボム等で使用 private var nonDuplicateNumber = 0 - // for ProtocolLib - lateinit var protocolManager: ProtocolManager - // for DADADAChecker @JvmField var dadadaCheckerAPI: DADADACheckerAPI? = null diff --git a/src/main/kotlin/be4rjp/sclat/Variables.kt b/src/main/kotlin/be4rjp/sclat/Variables.kt index 442a4133..7c4b0bf2 100644 --- a/src/main/kotlin/be4rjp/sclat/Variables.kt +++ b/src/main/kotlin/be4rjp/sclat/Variables.kt @@ -1,8 +1,3 @@ package be4rjp.sclat -import org.slf4j.Logger -import org.slf4j.LoggerFactory - lateinit var plugin: Sclat - -val sclatLogger: Logger = LoggerFactory.getLogger("Sclat") diff --git a/src/main/kotlin/be4rjp/sclat/api/Animation.kt b/src/main/kotlin/be4rjp/sclat/api/Animation.kt index 778b7e11..31b7ab10 100644 --- a/src/main/kotlin/be4rjp/sclat/api/Animation.kt +++ b/src/main/kotlin/be4rjp/sclat/api/Animation.kt @@ -1,8 +1,10 @@ package be4rjp.sclat.api -import be4rjp.sclat.api.team.Team import be4rjp.sclat.data.DataMgr import be4rjp.sclat.plugin +import net.azisaba.sclat.core.enums.SoundType +import net.azisaba.sclat.core.gauge.GaugeAPI +import net.azisaba.sclat.core.team.SclatTeam import org.bukkit.ChatColor import org.bukkit.Sound import org.bukkit.entity.Player @@ -21,7 +23,7 @@ object Animation { team1point: Int, team0color: String?, team1color: String?, - winteam: Team?, + winteam: SclatTeam?, hikiwake: Boolean, ) { val task: BukkitRunnable = @@ -109,7 +111,7 @@ object Animation { team1point: Int, team0color: String?, team1color: String?, - winteam: Team?, + winteam: SclatTeam?, ) { val task: BukkitRunnable = object : BukkitRunnable() { @@ -181,7 +183,7 @@ object Animation { team1point: Int, team0color: String?, team1color: String?, - winteam: Team?, + winteam: SclatTeam?, hikiwake: Boolean, ) { val task: BukkitRunnable = diff --git a/src/main/kotlin/be4rjp/sclat/api/GlowingAPI.kt b/src/main/kotlin/be4rjp/sclat/api/GlowingAPI.kt index b09aa905..89398ee9 100644 --- a/src/main/kotlin/be4rjp/sclat/api/GlowingAPI.kt +++ b/src/main/kotlin/be4rjp/sclat/api/GlowingAPI.kt @@ -1,6 +1,8 @@ +@file:Suppress("PLATFORM_CLASS_MAPPED_TO_KOTLIN") + package be4rjp.sclat.api -import be4rjp.sclat.Sclat +import be4rjp.sclat.api.packet.Packets import com.comphenix.protocol.PacketType import com.comphenix.protocol.wrappers.WrappedDataWatcher import org.bukkit.entity.Entity @@ -11,14 +13,13 @@ import kotlin.Boolean import kotlin.Suppress object GlowingAPI { - @Suppress("PLATFORM_CLASS_MAPPED_TO_KOTLIN") @JvmStatic fun setGlowing( entity: Entity, - player: Player?, + player: Player, flag: Boolean, ) { - val packet = Sclat.protocolManager.createPacket(PacketType.Play.Server.ENTITY_METADATA) + val packet = Packets.createPacket(PacketType.Play.Server.ENTITY_METADATA) packet.integers.write(0, entity.entityId) val watcher = WrappedDataWatcher() val serializer = WrappedDataWatcher.Registry.get(Byte::class.java) @@ -26,7 +27,7 @@ object GlowingAPI { watcher.setObject(0, serializer, (if (flag) 0x40 else 0).toByte()) packet.watchableCollectionModifier.write(0, watcher.watchableObjects) try { - Sclat.protocolManager.sendServerPacket(player, packet) + Packets.sendServerPacket(player, packet) } catch (e: InvocationTargetException) { e.printStackTrace() } diff --git a/src/main/kotlin/be4rjp/sclat/api/SclatUtil.kt b/src/main/kotlin/be4rjp/sclat/api/SclatUtil.kt index cf09e2e7..e1c292a1 100644 --- a/src/main/kotlin/be4rjp/sclat/api/SclatUtil.kt +++ b/src/main/kotlin/be4rjp/sclat/api/SclatUtil.kt @@ -1,17 +1,19 @@ package be4rjp.sclat.api import be4rjp.sclat.Sclat -import be4rjp.sclat.api.Sphere.getSphere import be4rjp.sclat.api.packet.WorldPackets import be4rjp.sclat.api.packet.WorldPackets.broadcastBlockChange -import be4rjp.sclat.api.team.Team import be4rjp.sclat.data.DataMgr import be4rjp.sclat.manager.BungeeCordMgr import be4rjp.sclat.manager.DeathMgr import be4rjp.sclat.manager.MatchMgr import be4rjp.sclat.plugin -import be4rjp.sclat.sclatLogger import be4rjp.sclat.server.StatusClient +import net.azisaba.sclat.core.DelegatedLogger +import net.azisaba.sclat.core.enums.MessageType +import net.azisaba.sclat.core.enums.SoundType +import net.azisaba.sclat.core.shape.Sphere.getSphere +import net.azisaba.sclat.core.team.SclatTeam import org.bukkit.Bukkit import org.bukkit.GameMode import org.bukkit.Instrument @@ -34,6 +36,8 @@ import org.bukkit.util.Vector * 全体的に使いそうなメソッドをここに置いておく */ object SclatUtil { + private val logger by DelegatedLogger() + @JvmStatic fun setBlockByNMS( b: Block, @@ -77,26 +81,13 @@ object SclatUtil { WorldPackets.setPlayerFOV(player, fov) } - /* - * public static void setBlockByNMS(org.bukkit.block.Block b, - * org.bukkit.Material material, boolean applyPhysics) { Location loc = - * b.getLocation(); Block block = ((CraftBlockData) - * Bukkit.createBlockData(material)).getState().getBlock(); int x = - * loc.getBlockX(); int y = loc.getBlockY(); int z = loc.getBlockZ(); - * net.minecraft.server.v1_14_R1.World nmsWorld = ((CraftWorld) - * loc.getWorld()).getHandle(); net.minecraft.server.v1_14_R1.Chunk nmsChunk = - * nmsWorld.getChunkAt(x >> 4, z >> 4); ChunkSection cs = - * nmsChunk.getSections()[y >> 4]; IBlockData ibd = block.getBlockData(); if (cs - * == nmsChunk.a()) { cs = new ChunkSection(y >> 4 << 4, false); - * nmsChunk.getSections()[y >> 4] = cs; } - * - * cs.getBlocks().setBlock(x & 15, y & 15, z & 15, ibd); } - */ @JvmStatic fun restartServer() { - val commands: MutableList = ArrayList() - commands.add("restart " + Sclat.conf?.servers!!.getString("ServerName")) - commands.add("stop") + val commands: MutableList = + mutableListOf( + "restart " + Sclat.conf?.servers!!.getString("ServerName"), + "stop", + ) val sc = StatusClient( Sclat.conf?.config!!.getString("StatusShare.Host"), @@ -120,15 +111,13 @@ object SclatUtil { @JvmStatic fun sendRestartedServerInfo() { - val commands: MutableList = ArrayList() - commands.add("restarted " + Sclat.conf?.servers!!.getString("ServerName")) - commands.add( - ( + val commands: MutableList = + mutableListOf( + "restarted " + Sclat.conf?.servers!!.getString("ServerName"), "map " + Sclat.conf?.servers!!.getString("ServerName") + " " + - DataMgr.getMapRandom(if (MatchMgr.mapcount == 0) 0 else MatchMgr.mapcount - 1).mapName!! - ), - ) - commands.add("stop") + DataMgr.getMapRandom(if (MatchMgr.mapcount == 0) 0 else MatchMgr.mapcount - 1).mapName!!, + "stop", + ) val sc = StatusClient( Sclat.conf?.config!!.getString("StatusShare.Host"), @@ -155,7 +144,7 @@ object SclatUtil { } MessageType.CONSOLE -> { - sclatLogger.info(buff.toString()) + logger.info(buff.toString()) } MessageType.BROADCAST -> { @@ -169,7 +158,7 @@ object SclatUtil { fun sendMessage( message: String?, type: MessageType?, - team: Team?, + team: SclatTeam?, ) { val sclat = "[§6Sclat§r] " val buff = StringBuilder() @@ -301,42 +290,6 @@ object SclatUtil { } } - /* - * public static void createInkExplosion(Location center, double radius, int - * effectAccuracy, double damageRate, SclatDamageType type, Player player){ - * //爆発音 player.getWorld().playSound(center, Sound.ENTITY_FIREWORK_ROCKET_BLAST, - * 1, 1); - * - * //爆発エフェクト Sclat.createInkExplosionEffect(center, radius, effectAccuracy, - * player); - * - * //塗る for(int i = 0; i <= radius; i++){ List p_locs = - * Sphere.getSphere(center, i, 14); for(Location loc : p_locs){ - * PaintMgr.Paint(loc, player, false); } } - * - * //攻撃判定の処理 for (Player target : - * Main.getPlugin().getServer().getOnlinePlayers()) { - * if(!DataMgr.getPlayerData(target)?.isInMatch!! || target.getWorld() != - * player.getWorld()) continue; if (target.getLocation().distance(center) <= - * radius) { double gear = SclatDamageType.SUB_WEAPON == type ? - * Gear.getGearInfluence(player, Gear.Type.SUB_SPEC_UP) : 1.0; double damage = - * (radius - target.getLocation().distance(center)) * damageRate * gear; - * if(DataMgr.getPlayerData(player)?.team!! != - * DataMgr.getPlayerData(target)?.team!! && - * target.getGameMode().equals(GameMode.ADVENTURE)){ Sclat.giveDamage(player, - * target, damage, type.getName()); - * - * //AntiNoDamageTime BukkitRunnable task = new BukkitRunnable(){ Player p = - * target; - * - * @Override public void run(){ target.setNoDamageTicks(0); } }; - * task.runTaskLater(Main.getPlugin(), 1); } } } - * - * for(Entity as : player.getWorld().getEntities()){ if - * (as.getLocation().distance(center) <= radius){ if(as instanceof ArmorStand){ - * double damage = (radius - as.getLocation().distance(center)) * damageRate; - * ArmorStandMgr.giveDamageArmorStand((ArmorStand)as, damage, player); } } } } - */ @JvmStatic fun giveDamage( player: Player?, diff --git a/src/main/kotlin/be4rjp/sclat/api/async/AsyncTask.kt b/src/main/kotlin/be4rjp/sclat/api/async/AsyncTask.kt index d67bd66c..a515ee65 100644 --- a/src/main/kotlin/be4rjp/sclat/api/async/AsyncTask.kt +++ b/src/main/kotlin/be4rjp/sclat/api/async/AsyncTask.kt @@ -3,6 +3,7 @@ package be4rjp.sclat.api.async import be4rjp.sclat.plugin import org.bukkit.scheduler.BukkitRunnable +@Deprecated("Use mccoroutine instead") abstract class AsyncTask : Runnable { var isCanceled: Boolean = false private set diff --git a/src/main/kotlin/be4rjp/sclat/api/async/AsyncThreadManager.kt b/src/main/kotlin/be4rjp/sclat/api/async/AsyncThreadManager.kt index c5f6e817..3987eeb5 100644 --- a/src/main/kotlin/be4rjp/sclat/api/async/AsyncThreadManager.kt +++ b/src/main/kotlin/be4rjp/sclat/api/async/AsyncThreadManager.kt @@ -7,6 +7,7 @@ import java.util.Random import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.CopyOnWriteArrayList +@Deprecated("Use mccoroutine") object AsyncThreadManager { private val tickThreads: MutableList = CopyOnWriteArrayList() @@ -31,14 +32,6 @@ object AsyncThreadManager { @JvmField var onlinePlayers: MutableSet = ConcurrentHashMap.newKeySet() - fun toOnline(player: Player?) { - onlinePlayers.add(player) - } - - fun toOffline(player: Player?) { - onlinePlayers.add(player) - } - @JvmStatic fun sync(runnable: Runnable) { Bukkit.getScheduler().runTask(plugin, runnable) diff --git a/src/main/kotlin/be4rjp/sclat/api/async/AsyncTickThread.kt b/src/main/kotlin/be4rjp/sclat/api/async/AsyncTickThread.kt index fccd7051..f6c7d69a 100644 --- a/src/main/kotlin/be4rjp/sclat/api/async/AsyncTickThread.kt +++ b/src/main/kotlin/be4rjp/sclat/api/async/AsyncTickThread.kt @@ -3,6 +3,7 @@ package be4rjp.sclat.api.async import java.util.concurrent.ExecutorService import java.util.concurrent.Executors +@Deprecated("Use mccoroutine") class AsyncTickThread { private val executor: ExecutorService diff --git a/src/main/kotlin/be4rjp/sclat/api/enums/SclatDamageType.kt b/src/main/kotlin/be4rjp/sclat/api/enums/SclatDamageType.kt deleted file mode 100644 index 4b04cd19..00000000 --- a/src/main/kotlin/be4rjp/sclat/api/enums/SclatDamageType.kt +++ /dev/null @@ -1,11 +0,0 @@ -package be4rjp.sclat.api.enums - -enum class SclatDamageType( - name: String, -) { - MAIN_WEAPON("killed"), - SUB_WEAPON("subWeapon"), - SP_WEAPON("spWeapon"), - WATER("water"), - FALL("fall"), -} diff --git a/src/main/kotlin/be4rjp/sclat/api/holo/HologramLine.kt b/src/main/kotlin/be4rjp/sclat/api/holo/HologramLine.kt index f8766ae1..0ac80952 100644 --- a/src/main/kotlin/be4rjp/sclat/api/holo/HologramLine.kt +++ b/src/main/kotlin/be4rjp/sclat/api/holo/HologramLine.kt @@ -11,19 +11,15 @@ import java.util.Optional import java.util.UUID import java.util.concurrent.ThreadLocalRandom +@Deprecated("Sorry we wont use this class because of entityId generation is unsafe") class HologramLine( private val location: Location, private var text: String, ) { - val entityId: Int - private val uuid: UUID + val entityId: Int = ThreadLocalRandom.current().nextInt(100000, 999999) + private val uuid: UUID = UUID.randomUUID() private var visible = true - init { - this.entityId = ThreadLocalRandom.current().nextInt(100000, 999999) - this.uuid = UUID.randomUUID() - } - fun setText(text: String) { this.text = text } diff --git a/src/main/kotlin/be4rjp/sclat/api/packet/Packets.kt b/src/main/kotlin/be4rjp/sclat/api/packet/Packets.kt index 3c84c40e..f0142843 100644 --- a/src/main/kotlin/be4rjp/sclat/api/packet/Packets.kt +++ b/src/main/kotlin/be4rjp/sclat/api/packet/Packets.kt @@ -1,45 +1,47 @@ package be4rjp.sclat.api.packet -import be4rjp.sclat.Sclat -import be4rjp.sclat.sclatLogger import com.comphenix.protocol.PacketType +import com.comphenix.protocol.ProtocolLibrary import com.comphenix.protocol.ProtocolManager import com.comphenix.protocol.events.PacketContainer +import com.comphenix.protocol.reflect.FieldAccessException +import net.azisaba.sclat.core.DelegatedLogger import org.bukkit.entity.Player import org.jspecify.annotations.NullMarked import java.lang.reflect.InvocationTargetException @NullMarked object Packets { - fun manager(): ProtocolManager = Sclat.protocolManager + private val logger by DelegatedLogger() - fun createPacket(packetType: PacketType): PacketContainer = manager().createPacket(packetType) + val protocolManager: ProtocolManager by lazy { ProtocolLibrary.getProtocolManager() } + + fun createPacket(packetType: PacketType): PacketContainer = protocolManager.createPacket(packetType) fun createPacket( packetType: PacketType, b: Boolean, - ): PacketContainer = manager().createPacket(packetType, b) + ): PacketContainer = protocolManager.createPacket(packetType, b) fun sendServerPacket( player: Player, packet: PacketContainer, ): Boolean { try { - manager().sendServerPacket(player, packet) + protocolManager.sendServerPacket(player, packet) return true } catch (e: InvocationTargetException) { - sclatLogger.error("Failed to send packet", e) + logger.error("Failed to send packet", e) return false } } - fun broadcastServerPacket(packet: PacketContainer): Boolean { + fun broadcastServerPacket(packet: PacketContainer): Boolean = try { - manager().broadcastServerPacket(packet) - return true - } catch (e: Exception) { - sclatLogger.error("Failed to broadcast packet", e) - return false + protocolManager.broadcastServerPacket(packet) + true + } catch (e: FieldAccessException) { + logger.error("Failed to broadcast packet because of reflection", e) + false } - } } diff --git a/src/main/kotlin/be4rjp/sclat/api/player/PlayerData.kt b/src/main/kotlin/be4rjp/sclat/api/player/PlayerData.kt index f65d7d2a..b644b8bb 100644 --- a/src/main/kotlin/be4rjp/sclat/api/player/PlayerData.kt +++ b/src/main/kotlin/be4rjp/sclat/api/player/PlayerData.kt @@ -1,9 +1,10 @@ package be4rjp.sclat.api.player -import be4rjp.sclat.api.team.Team -import be4rjp.sclat.data.MainWeapon import be4rjp.sclat.data.Match import be4rjp.sclat.data.WeaponClass +import net.azisaba.sclat.core.data.MainWeapon +import net.azisaba.sclat.core.player.PlayerSettings +import net.azisaba.sclat.core.team.SclatTeam import net.minecraft.server.v1_14_R1.ItemStack import org.bukkit.Location import org.bukkit.entity.ArmorStand @@ -25,7 +26,7 @@ class PlayerData( var match: Match? = null @JvmField - var team: Team? = null + var team: SclatTeam? = null @JvmField var isInMatch: Boolean = false diff --git a/src/main/kotlin/be4rjp/sclat/api/wiremesh/Wiremesh.kt b/src/main/kotlin/be4rjp/sclat/api/wiremesh/Wiremesh.kt index 06b2acb2..dc639d63 100644 --- a/src/main/kotlin/be4rjp/sclat/api/wiremesh/Wiremesh.kt +++ b/src/main/kotlin/be4rjp/sclat/api/wiremesh/Wiremesh.kt @@ -1,6 +1,5 @@ package be4rjp.sclat.api.wiremesh -import be4rjp.sclat.plugin import net.minecraft.server.v1_14_R1.EntityArmorStand import net.minecraft.server.v1_14_R1.EntityFallingBlock import net.minecraft.server.v1_14_R1.IBlockData @@ -16,6 +15,7 @@ import org.bukkit.craftbukkit.v1_14_R1.CraftWorld import org.bukkit.craftbukkit.v1_14_R1.block.data.CraftBlockData import org.bukkit.craftbukkit.v1_14_R1.entity.CraftPlayer import org.bukkit.entity.Player +import org.bukkit.plugin.java.JavaPlugin import org.bukkit.scheduler.BukkitRunnable import java.util.Random @@ -24,6 +24,7 @@ import java.util.Random * @author Be4rJP */ class Wiremesh( + private val plugin: JavaPlugin, private val block: Block, private val originalType: Material, private val blockData: BlockData, diff --git a/src/main/kotlin/be4rjp/sclat/api/wiremesh/WiremeshListTask.kt b/src/main/kotlin/be4rjp/sclat/api/wiremesh/WiremeshListTask.kt index 9d1c9dfe..a237bbb2 100644 --- a/src/main/kotlin/be4rjp/sclat/api/wiremesh/WiremeshListTask.kt +++ b/src/main/kotlin/be4rjp/sclat/api/wiremesh/WiremeshListTask.kt @@ -2,7 +2,7 @@ package be4rjp.sclat.api.wiremesh import be4rjp.sclat.data.RegionBlocks import be4rjp.sclat.plugin -import be4rjp.sclat.sclatLogger +import net.azisaba.sclat.core.DelegatedLogger import org.bukkit.Location import org.bukkit.Material import org.bukkit.block.Block @@ -60,7 +60,7 @@ class WiremeshListTask( while (processed < batchSize && blockList.isNotEmpty() && !stopRequested) { val block = blockList.removeAt(0) val bData = blockDataMap[block] ?: continue - val wm = Wiremesh(block, block.type, bData) + val wm = Wiremesh(plugin, block, block.type, bData) try { wm.startTask() } catch (e: Exception) { @@ -71,7 +71,7 @@ class WiremeshListTask( } if (blockList.isEmpty() || stopRequested) { - sclatLogger.info("WiremeshListTask: finished building wiremesh (count=${wiremeshsList.size})") + logger.info("WiremeshListTask: finished building wiremesh (count=${wiremeshsList.size})") this.cancel() builderTask = null } @@ -84,7 +84,7 @@ class WiremeshListTask( } builderTask!!.runTaskTimer(plugin, 0L, 1L) - sclatLogger.info("WiremeshListTask: started incremental build (total=$totalBlocks)") + logger.info("WiremeshListTask: started incremental build (total=$totalBlocks)") } fun stopTask() { @@ -114,4 +114,8 @@ class WiremeshListTask( * candidate blocks to process. */ fun isWorking(): Boolean = (builderTask != null) || blockList.isNotEmpty() + + companion object { + private val logger by DelegatedLogger() + } } diff --git a/src/main/kotlin/be4rjp/sclat/command/SclatCommands.kt b/src/main/kotlin/be4rjp/sclat/command/SclatCommands.kt index 1e26e98d..02268f4a 100644 --- a/src/main/kotlin/be4rjp/sclat/command/SclatCommands.kt +++ b/src/main/kotlin/be4rjp/sclat/command/SclatCommands.kt @@ -6,8 +6,8 @@ import be4rjp.sclat.emblem.EmblemManager import be4rjp.sclat.manager.BungeeCordMgr import be4rjp.sclat.manager.MapLoader import be4rjp.sclat.manager.ServerStatusManager -import be4rjp.sclat.sclatLogger import be4rjp.sclat.server.EquipmentClient +import net.azisaba.sclat.core.DelegatedLogger import org.bukkit.ChatColor import org.bukkit.configuration.file.YamlConfiguration import org.bukkit.entity.Player @@ -23,6 +23,7 @@ import org.incendo.cloud.parser.standard.StringParser import java.io.IOException object SclatCommands { + private val logger by DelegatedLogger() const val PERMISSION_ADMIN = "sclat.admin" fun init(plugin: JavaPlugin) { @@ -37,7 +38,7 @@ object SclatCommands { } else if (commandManager.hasCapability(CloudBukkitCapabilities.ASYNCHRONOUS_COMPLETION)) { commandManager.registerAsynchronousCompletions() } else { - sclatLogger.warn("Are you using old spigot? We can't handle command over this cloud framework.") + logger.warn("Are you using old spigot? We can't handle command over this cloud framework.") } val sclat = commandManager.commandBuilder("sclat").permission(PERMISSION_ADMIN) diff --git a/src/main/kotlin/be4rjp/sclat/data/Area.kt b/src/main/kotlin/be4rjp/sclat/data/Area.kt index e0b614fe..1486ea46 100644 --- a/src/main/kotlin/be4rjp/sclat/data/Area.kt +++ b/src/main/kotlin/be4rjp/sclat/data/Area.kt @@ -1,20 +1,21 @@ package be4rjp.sclat.data import be4rjp.sclat.Sclat -import be4rjp.sclat.api.MessageType import be4rjp.sclat.api.SclatUtil.sendMessage -import be4rjp.sclat.api.team.Team import be4rjp.sclat.manager.PaintMgr -import be4rjp.sclat.plugin +import net.azisaba.sclat.core.enums.MessageType +import net.azisaba.sclat.core.team.SclatTeam import org.bukkit.Location import org.bukkit.Material import org.bukkit.Sound import org.bukkit.block.Block import org.bukkit.entity.EntityType import org.bukkit.entity.Shulker +import org.bukkit.plugin.java.JavaPlugin import org.bukkit.potion.PotionEffect import org.bukkit.potion.PotionEffectType import org.bukkit.scheduler.BukkitRunnable +import org.bukkit.scoreboard.Team import java.util.function.Consumer /** @@ -22,14 +23,15 @@ import java.util.function.Consumer * @author Be4rJP */ class Area( + private val plugin: JavaPlugin, private val from: Location, private val to: Location, ) { private var match: Match? = null - var team: Team? = null + var team: SclatTeam? = null private set - private var colorTeam0: org.bukkit.scoreboard.Team? = null - private var colorTeam1: org.bukkit.scoreboard.Team? = null + private var colorTeam0: Team? = null + private var colorTeam1: Team? = null private var task: BukkitRunnable? = null var shulkerBoxes: MutableList = ArrayList() private set @@ -47,7 +49,7 @@ class Area( colorTeam1 = match!! - .team0!! + .team1!! // Todo: もともとteam0を使っていたため、不都合が発生しないか確認する .team!! .scoreboard!! .registerNewTeam("ColorTeam1" + Sclat.notDuplicateNumber) diff --git a/src/main/kotlin/be4rjp/sclat/data/BlockUpdater.kt b/src/main/kotlin/be4rjp/sclat/data/BlockUpdater.kt index 547c3b05..0a14d3d2 100644 --- a/src/main/kotlin/be4rjp/sclat/data/BlockUpdater.kt +++ b/src/main/kotlin/be4rjp/sclat/data/BlockUpdater.kt @@ -1,7 +1,6 @@ package be4rjp.sclat.data import be4rjp.sclat.api.SclatUtil -import be4rjp.sclat.plugin import net.minecraft.server.v1_14_R1.PacketPlayOutMultiBlockChange import org.bukkit.Chunk import org.bukkit.Material @@ -9,13 +8,16 @@ import org.bukkit.block.Block import org.bukkit.block.BlockFace import org.bukkit.craftbukkit.v1_14_R1.CraftChunk import org.bukkit.craftbukkit.v1_14_R1.entity.CraftPlayer +import org.bukkit.plugin.java.JavaPlugin import org.bukkit.scheduler.BukkitRunnable /** * * @author Be4rJP */ -class BlockUpdater { +class BlockUpdater( + private val plugin: JavaPlugin, +) { private val blocklist: MutableMap = mutableMapOf() private val blocks: MutableList = mutableListOf() private val task: BukkitRunnable @@ -38,30 +40,15 @@ class BlockUpdater { if (block.location.chunk.isLoaded) { try { // Sclat.setBlockByNMSChunk(block, blocklist.get(block), true); - - val list: MutableList = ArrayList() - val up = block.getRelative(BlockFace.UP) - val west = block.getRelative(BlockFace.WEST) - val east = block.getRelative(BlockFace.EAST) - val south = block.getRelative(BlockFace.SOUTH) - val north = block.getRelative(BlockFace.NORTH) - val down = block.getRelative(BlockFace.DOWN) - list.add(up) - list.add(west) - list.add(east) - list.add(south) - list.add(north) - list.add(down) - - check@ for (cb in list) { - if (cb.type == Material.AIR) { - // Sclat.sendBlockChangeForAllPlayer(block, blocklist.get(block)); - chunkBlockMap - .computeIfAbsent(block.chunk) { chunk: Chunk? -> mutableListOf() } - .add(block) - continue + arrayOf(BlockFace.UP, BlockFace.WEST, BlockFace.EAST, BlockFace.SOUTH, BlockFace.NORTH, BlockFace.DOWN) + .forEach { face -> + val relativeBlock = block.getRelative(face) + if (relativeBlock.type == Material.AIR) { + chunkBlockMap + .computeIfAbsent(block.chunk) { chunk: Chunk? -> mutableListOf() } + .add(block) + } } - } } catch (e: Exception) { } } else { diff --git a/src/main/kotlin/be4rjp/sclat/data/DataMgr.kt b/src/main/kotlin/be4rjp/sclat/data/DataMgr.kt index fc2eaf7e..19c41444 100644 --- a/src/main/kotlin/be4rjp/sclat/data/DataMgr.kt +++ b/src/main/kotlin/be4rjp/sclat/data/DataMgr.kt @@ -1,8 +1,11 @@ package be4rjp.sclat.data import be4rjp.sclat.api.player.PlayerData -import be4rjp.sclat.api.team.Team import be4rjp.sclat.api.team.TeamLoc +import net.azisaba.sclat.core.data.Color +import net.azisaba.sclat.core.data.KasaData +import net.azisaba.sclat.core.data.MainWeapon +import net.azisaba.sclat.core.team.SclatTeam import org.bukkit.World import org.bukkit.block.Block import org.bukkit.entity.ArmorStand @@ -22,7 +25,7 @@ object DataMgr { @JvmStatic val uUIDDataMap: MutableMap = HashMap() private val matchdata: MutableMap = HashMap() - private val teamdata: MutableMap = HashMap() + private val teamdata: MutableMap = HashMap() private val colordata: MutableMap = HashMap() private val weaponclassdata: MutableMap = HashMap() private val weapondata: MutableMap = HashMap() @@ -112,7 +115,7 @@ object DataMgr { @JvmStatic fun getMatchFromId(id: Int): Match? = matchdata[id] - fun getTeamFromId(id: Int): Team? = teamdata[id] + fun getTeamFromId(id: Int): SclatTeam? = teamdata[id] fun getColor(name: String?): Color? = colordata[name] @@ -199,7 +202,7 @@ object DataMgr { @JvmStatic fun setTeam( id: Int, - team: Team?, + team: SclatTeam?, ) { teamdata[id] = team } diff --git a/src/main/kotlin/be4rjp/sclat/data/MapData.kt b/src/main/kotlin/be4rjp/sclat/data/MapData.kt index 1cc7cb9c..56d25ef2 100644 --- a/src/main/kotlin/be4rjp/sclat/data/MapData.kt +++ b/src/main/kotlin/be4rjp/sclat/data/MapData.kt @@ -1,6 +1,7 @@ package be4rjp.sclat.data import be4rjp.sclat.api.wiremesh.WiremeshListTask +import net.azisaba.sclat.core.data.Path import org.bukkit.Location /** diff --git a/src/main/kotlin/be4rjp/sclat/data/Match.kt b/src/main/kotlin/be4rjp/sclat/data/Match.kt index 606329e1..f710ba7f 100644 --- a/src/main/kotlin/be4rjp/sclat/data/Match.kt +++ b/src/main/kotlin/be4rjp/sclat/data/Match.kt @@ -1,6 +1,6 @@ package be4rjp.sclat.data -import be4rjp.sclat.api.team.Team +import net.azisaba.sclat.core.team.SclatTeam import org.bukkit.World import org.bukkit.entity.Player import org.bukkit.scoreboard.Scoreboard @@ -15,10 +15,10 @@ class Match( val world: World? = null @JvmField - var team0: Team? = null + var team0: SclatTeam? = null @JvmField - var team1: Team? = null + var team1: SclatTeam? = null var playerCount: Int = 0 private set var mapData: MapData? = null @@ -32,7 +32,7 @@ class Match( private set var isFinished: Boolean = false var blockUpdater: BlockUpdater? = null - var winTeam: Team? = null + var winTeam: SclatTeam? = null @JvmField var isHikiwake: Boolean = false diff --git a/src/main/kotlin/be4rjp/sclat/data/MatchServerRunnable.kt b/src/main/kotlin/be4rjp/sclat/data/MatchServerRunnable.kt index cefb9ed6..cc2eaa0b 100644 --- a/src/main/kotlin/be4rjp/sclat/data/MatchServerRunnable.kt +++ b/src/main/kotlin/be4rjp/sclat/data/MatchServerRunnable.kt @@ -1,11 +1,11 @@ package be4rjp.sclat.data -import be4rjp.sclat.api.MessageType import be4rjp.sclat.api.SclatUtil.playGameSound import be4rjp.sclat.api.SclatUtil.sendMessage -import be4rjp.sclat.api.SoundType import be4rjp.sclat.manager.BungeeCordMgr import be4rjp.sclat.plugin +import net.azisaba.sclat.core.enums.MessageType +import net.azisaba.sclat.core.enums.SoundType import org.bukkit.entity.Player import org.bukkit.scheduler.BukkitRunnable diff --git a/src/main/kotlin/be4rjp/sclat/data/PaintData.kt b/src/main/kotlin/be4rjp/sclat/data/PaintData.kt index 7a0b4550..b890671f 100644 --- a/src/main/kotlin/be4rjp/sclat/data/PaintData.kt +++ b/src/main/kotlin/be4rjp/sclat/data/PaintData.kt @@ -1,6 +1,6 @@ package be4rjp.sclat.data -import be4rjp.sclat.api.team.Team +import net.azisaba.sclat.core.team.SclatTeam import org.bukkit.Material import org.bukkit.block.Block import org.bukkit.block.BlockState @@ -20,7 +20,7 @@ class PaintData( private set @JvmField - var team: Team? = null + var team: SclatTeam? = null var originalState: BlockState? = null diff --git a/src/main/kotlin/be4rjp/sclat/data/ServerStatus.kt b/src/main/kotlin/be4rjp/sclat/data/ServerStatus.kt index 7f2b1177..474b0745 100644 --- a/src/main/kotlin/be4rjp/sclat/data/ServerStatus.kt +++ b/src/main/kotlin/be4rjp/sclat/data/ServerStatus.kt @@ -1,38 +1,25 @@ package be4rjp.sclat.data -import be4rjp.sclat.api.MineStat import be4rjp.sclat.plugin +import net.azisaba.sclat.core.status.MineStat import org.bukkit.block.Block import org.bukkit.block.Sign import org.bukkit.scheduler.BukkitRunnable class ServerStatus( @JvmField val serverName: String?, - displayName: String, - host: String?, - port: Int, - maxPlayer: Int, - period: Int, - sign: Block, - info: String?, + @JvmField val displayName: String, + private val host: String?, + private val port: Int, + @JvmField val maxPlayer: Int, + private val period: Int, + @JvmField val sign: Block, + @JvmField val info: String?, ) { - @JvmField - val displayName: String? - private val host: String? - private val port: Int - private val period: Int private val task: BukkitRunnable - @JvmField - val maxPlayer: Int private val task2: BukkitRunnable - @JvmField - val sign: Block? - - @JvmField - val info: String? - var playerCount: Int = 0 private set var isOnline: Boolean = false @@ -43,7 +30,7 @@ class ServerStatus( @JvmField var mapName: String? = "" var isMaintenance: Boolean = false - val uUIDList: MutableList? + val uUIDList: MutableList = ArrayList() @JvmField var waitingEndTime: Long = 0 @@ -51,17 +38,9 @@ class ServerStatus( @JvmField var matchStartTime: Long = 0 - private val matchServerRunnable: MatchServerRunnable? + private val matchServerRunnable: MatchServerRunnable init { - this.displayName = displayName - this.host = host - this.port = port - this.period = period - this.maxPlayer = maxPlayer - this.sign = sign - this.info = info - this.uUIDList = ArrayList() this.matchServerRunnable = MatchServerRunnable(this) diff --git a/src/main/kotlin/be4rjp/sclat/data/Sponge.kt b/src/main/kotlin/be4rjp/sclat/data/Sponge.kt index e64ce852..5ed6a8bd 100644 --- a/src/main/kotlin/be4rjp/sclat/data/Sponge.kt +++ b/src/main/kotlin/be4rjp/sclat/data/Sponge.kt @@ -1,9 +1,9 @@ package be4rjp.sclat.data import be4rjp.sclat.api.SclatUtil.setBlockByNMS -import be4rjp.sclat.api.team.Team import be4rjp.sclat.manager.PaintMgr import be4rjp.sclat.plugin +import net.azisaba.sclat.core.team.SclatTeam import org.bukkit.Material import org.bukkit.Sound import org.bukkit.block.Block @@ -17,7 +17,7 @@ class Sponge( var block: Block, ) { @JvmField - var team: Team? = null + var team: SclatTeam? = null var health: Double = 1.0 @JvmField @@ -27,7 +27,7 @@ class Sponge( fun giveDamage( damage: Double, - team: Team?, + team: SclatTeam?, ) { if (!canGiveDamage) return canGiveDamage = false diff --git a/src/main/kotlin/be4rjp/sclat/data/TrapData.kt b/src/main/kotlin/be4rjp/sclat/data/TrapData.kt index 1030c6c3..67112852 100644 --- a/src/main/kotlin/be4rjp/sclat/data/TrapData.kt +++ b/src/main/kotlin/be4rjp/sclat/data/TrapData.kt @@ -4,13 +4,13 @@ import be4rjp.sclat.Sclat import be4rjp.sclat.api.SclatUtil.createInkExplosionEffect import be4rjp.sclat.api.SclatUtil.giveDamage import be4rjp.sclat.api.SclatUtil.repelBarrier -import be4rjp.sclat.api.Sphere.getSphere -import be4rjp.sclat.api.Sphere.getXZCircle -import be4rjp.sclat.api.team.Team import be4rjp.sclat.manager.ArmorStandMgr import be4rjp.sclat.manager.PaintMgr import be4rjp.sclat.plugin import be4rjp.sclat.weapon.Gear +import net.azisaba.sclat.core.shape.Sphere.getSphere +import net.azisaba.sclat.core.shape.Sphere.getXZCircle +import net.azisaba.sclat.core.team.SclatTeam import org.bukkit.Color import org.bukkit.GameMode import org.bukkit.Location @@ -25,7 +25,7 @@ import org.bukkit.scheduler.BukkitRunnable class TrapData( private val location: Location, private val player: Player, - private val team: Team?, + private val team: SclatTeam?, number: Int, ) { private val task: BukkitRunnable diff --git a/src/main/kotlin/be4rjp/sclat/data/WeaponClass.kt b/src/main/kotlin/be4rjp/sclat/data/WeaponClass.kt index feb9bf29..f0cb7b22 100644 --- a/src/main/kotlin/be4rjp/sclat/data/WeaponClass.kt +++ b/src/main/kotlin/be4rjp/sclat/data/WeaponClass.kt @@ -1,5 +1,7 @@ package be4rjp.sclat.data +import net.azisaba.sclat.core.data.MainWeapon + /** * * @author Be4rJP diff --git a/src/main/kotlin/be4rjp/sclat/emblem/EmblemData.kt b/src/main/kotlin/be4rjp/sclat/emblem/EmblemData.kt index 9057a216..54514cca 100644 --- a/src/main/kotlin/be4rjp/sclat/emblem/EmblemData.kt +++ b/src/main/kotlin/be4rjp/sclat/emblem/EmblemData.kt @@ -3,7 +3,7 @@ package be4rjp.sclat.emblem import org.bukkit.entity.Player import java.util.function.Function -class EmblemData( +data class EmblemData( val itemName: String, val condition: Function, ) diff --git a/src/main/kotlin/be4rjp/sclat/extension/ZoneId.kt b/src/main/kotlin/be4rjp/sclat/extension/ZoneId.kt deleted file mode 100644 index 67b53c0f..00000000 --- a/src/main/kotlin/be4rjp/sclat/extension/ZoneId.kt +++ /dev/null @@ -1,8 +0,0 @@ -package be4rjp.sclat.extension - -import java.time.LocalDate -import java.time.ZoneId - -val ZONE_TOKYO: ZoneId = ZoneId.of("Asia/Tokyo") - -fun ZoneId.toLocalDate(): LocalDate = LocalDate.now(this) diff --git a/src/main/kotlin/be4rjp/sclat/gui/ClickListener.kt b/src/main/kotlin/be4rjp/sclat/gui/ClickListener.kt index 931485db..65c30e22 100644 --- a/src/main/kotlin/be4rjp/sclat/gui/ClickListener.kt +++ b/src/main/kotlin/be4rjp/sclat/gui/ClickListener.kt @@ -1,11 +1,8 @@ package be4rjp.sclat.gui import be4rjp.sclat.Sclat -import be4rjp.sclat.api.MessageType import be4rjp.sclat.api.SclatUtil.playGameSound import be4rjp.sclat.api.SclatUtil.sendMessage -import be4rjp.sclat.api.ServerType -import be4rjp.sclat.api.SoundType import be4rjp.sclat.data.BlockUpdater import be4rjp.sclat.data.DataMgr.beaconMap import be4rjp.sclat.data.DataMgr.getBeaconFromplayer @@ -56,6 +53,9 @@ import be4rjp.sclat.weapon.Shooter.maneuverShootRunnable import be4rjp.sclat.weapon.Shooter.shooterRunnable import be4rjp.sclat.weapon.Spinner.spinnerRunnable import be4rjp.sclat.weapon.Swapper.swapperRunnable +import net.azisaba.sclat.core.enums.MessageType +import net.azisaba.sclat.core.enums.ServerType +import net.azisaba.sclat.core.enums.SoundType import org.bukkit.Bukkit import org.bukkit.ChatColor import org.bukkit.GameMode @@ -142,7 +142,7 @@ class ClickListener : Listener { match!!.blockUpdater!!.stop() rollBack() player.exp = 0.99f - val bur = BlockUpdater() + val bur = BlockUpdater(plugin) if (Sclat.conf!! .config!! .contains("BlockUpdateRate") diff --git a/src/main/kotlin/be4rjp/sclat/gui/LootBox.kt b/src/main/kotlin/be4rjp/sclat/gui/LootBox.kt index 1648b063..4e61c380 100644 --- a/src/main/kotlin/be4rjp/sclat/gui/LootBox.kt +++ b/src/main/kotlin/be4rjp/sclat/gui/LootBox.kt @@ -1,7 +1,6 @@ package be4rjp.sclat.gui import be4rjp.sclat.Sclat -import be4rjp.sclat.api.MessageType import be4rjp.sclat.api.SclatUtil.sendMessage import be4rjp.sclat.data.DataMgr.getPlayerData import be4rjp.sclat.data.DataMgr.getWeaponClass @@ -10,6 +9,7 @@ import be4rjp.sclat.manager.PlayerStatusMgr.addWeapon import be4rjp.sclat.manager.PlayerStatusMgr.getTicket import be4rjp.sclat.manager.PlayerStatusMgr.haveWeapon import be4rjp.sclat.manager.PlayerStatusMgr.subTicket +import net.azisaba.sclat.core.enums.MessageType import org.bukkit.Bukkit import org.bukkit.ChatColor import org.bukkit.Material diff --git a/src/main/kotlin/be4rjp/sclat/gui/OpenGUI.kt b/src/main/kotlin/be4rjp/sclat/gui/OpenGUI.kt index 159c129b..9e5dce41 100644 --- a/src/main/kotlin/be4rjp/sclat/gui/OpenGUI.kt +++ b/src/main/kotlin/be4rjp/sclat/gui/OpenGUI.kt @@ -1,7 +1,6 @@ package be4rjp.sclat.gui import be4rjp.sclat.Sclat -import be4rjp.sclat.api.ServerType import be4rjp.sclat.data.DataMgr.beaconMap import be4rjp.sclat.data.DataMgr.getArmorStandPlayer import be4rjp.sclat.data.DataMgr.getMatchFromId @@ -22,6 +21,7 @@ import be4rjp.sclat.tutorial.Tutorial import be4rjp.sclat.weapon.Gear.getGearMaterial import be4rjp.sclat.weapon.Gear.getGearName import be4rjp.sclat.weapon.Gear.getGearPrice +import net.azisaba.sclat.core.enums.ServerType import org.bukkit.Bukkit import org.bukkit.GameMode import org.bukkit.Material diff --git a/src/main/kotlin/be4rjp/sclat/listener/SquidListener.kt b/src/main/kotlin/be4rjp/sclat/listener/SquidListener.kt index 7e594caf..5a6bc6c2 100644 --- a/src/main/kotlin/be4rjp/sclat/listener/SquidListener.kt +++ b/src/main/kotlin/be4rjp/sclat/listener/SquidListener.kt @@ -14,20 +14,17 @@ import org.bukkit.event.player.PlayerMoveEvent class SquidListener : Listener { @EventHandler fun onPlayerMove(event: PlayerMoveEvent) { - val player = event.getPlayer() - SquidListenerMgr.checkOnInk(player) + SquidListenerMgr.checkOnInk(event.player) } @EventHandler fun onPlayerSwitchSlot(event: PlayerItemHeldEvent) { - val player = event.getPlayer() + val player = event.player val data = getPlayerData(player) SquidListenerMgr.checkOnInk(player) - if (player.inventory.getItem(event.newSlot) == null) { - data!!.isSquid = true - return - } - data!!.isSquid = false + + // enable squid mode if player held no item + data?.isSquid = player.inventory.getItem(event.newSlot) == null } @EventHandler diff --git a/src/main/kotlin/be4rjp/sclat/listener/SquidListenerMgr.kt b/src/main/kotlin/be4rjp/sclat/listener/SquidListenerMgr.kt index 38dace43..996cde6b 100644 --- a/src/main/kotlin/be4rjp/sclat/listener/SquidListenerMgr.kt +++ b/src/main/kotlin/be4rjp/sclat/listener/SquidListenerMgr.kt @@ -16,23 +16,24 @@ import org.bukkit.entity.Player object SquidListenerMgr { fun checkOnInk(player: Player) { val data = getPlayerData(player) - if (!data!!.isInMatch) return + if (!data?.isInMatch!!) return + val loc = player.location - val playerblock = player.location.block + val playerBlock = player.location.block val b1 = loc.add(0.0, -0.5, 0.0).block - val b2 = player.location.block.getRelative(BlockFace.NORTH) - val b3 = player.location.block.getRelative(BlockFace.EAST) - val b4 = player.location.block.getRelative(BlockFace.SOUTH) - val b5 = player.location.block.getRelative(BlockFace.WEST) - val list: MutableList = ArrayList() - list.add(b1) - list.add(b2) - list.add(b3) - list.add(b4) - list.add(b5) + val list: MutableList = + mutableListOf( + b1, + *listOf( + BlockFace.NORTH, + BlockFace.EAST, + BlockFace.SOUTH, + BlockFace.WEST, + ).map { face -> playerBlock.getRelative(face) }.toTypedArray(), + ) - if (playerblock.type == Material.WATER && player.gameMode == GameMode.ADVENTURE) { + if (playerBlock.type == Material.WATER && player.gameMode == GameMode.ADVENTURE) { DeathMgr.playerDeathRunnable( player, player, @@ -63,36 +64,25 @@ object SquidListenerMgr { .toString() + "_POWDER", ) - for (block in list) { - if (block != b1) { - if (blockDataMap.containsKey(block)) { - if (blockDataMap[block]!!.team == data.team) { - if (!data.isSquid || block.type == Material.AIR) continue - data.isOnInk = true - player.allowFlight = true - player.isFlying = true - return - } - } - } else { - if (blockDataMap.containsKey(block)) { - if (blockDataMap[block]!!.team == data.team) { - if (!data.isSquid || block.type == Material.AIR) continue - data.isOnInk = true + if (data.isSquid) { + list + .firstOrNull { b -> + blockDataMap.containsKey(b) && + blockDataMap[b]?.team == data.team && + b.type != Material.AIR + }.let { b -> + data.isOnInk = b != null + if (b == b1 || b == null) { if (!data.isUsingJetPack) { player.allowFlight = false player.isFlying = false } + } else { + player.allowFlight = true + player.isFlying = true return } } - } - } - - data.isOnInk = false - if (!data.isUsingJetPack) { - player.allowFlight = false - player.isFlying = false } } } diff --git a/src/main/kotlin/be4rjp/sclat/loginbonus/LoginBonus.kt b/src/main/kotlin/be4rjp/sclat/loginbonus/LoginBonus.kt deleted file mode 100644 index 8b59dd2a..00000000 --- a/src/main/kotlin/be4rjp/sclat/loginbonus/LoginBonus.kt +++ /dev/null @@ -1,32 +0,0 @@ -package be4rjp.sclat.loginbonus - -import be4rjp.sclat.api.utils.DailyRefreshSet -import be4rjp.sclat.config.NewConfig -import be4rjp.sclat.manager.PlayerStatusMgr -import org.bukkit.entity.Player -import java.util.UUID - -object LoginBonus { - var refreshSet: DailyRefreshSet = DailyRefreshSet() - internal set - - fun isClaimable(playerUUID: UUID) = playerUUID !in refreshSet - - fun markClaimed(playerUUID: UUID) = refreshSet.plus(playerUUID) - - fun unmarkClaimed(playerUUID: UUID) = refreshSet.minus(playerUUID) - - /** - * Try to claim daily login bonus - * - * @param player target player - * @return is succeeded - */ - fun tryClaim(player: Player): Boolean { - if (!isClaimable(player.uniqueId)) return false - PlayerStatusMgr.addMoney(player, NewConfig.loginBonusReward.money) - PlayerStatusMgr.addTicket(player, NewConfig.loginBonusReward.ticket) - markClaimed(player.uniqueId) - return true - } -} diff --git a/src/main/kotlin/be4rjp/sclat/manager/ArmorStandMgr.kt b/src/main/kotlin/be4rjp/sclat/manager/ArmorStandMgr.kt index 9106a8ce..524959a8 100644 --- a/src/main/kotlin/be4rjp/sclat/manager/ArmorStandMgr.kt +++ b/src/main/kotlin/be4rjp/sclat/manager/ArmorStandMgr.kt @@ -2,7 +2,6 @@ package be4rjp.sclat.manager import be4rjp.sclat.Sclat import be4rjp.sclat.api.SclatUtil.createInkExplosionEffect -import be4rjp.sclat.api.Sphere.getSphere import be4rjp.sclat.data.DataMgr.getArmorStandPlayer import be4rjp.sclat.data.DataMgr.getKasaDataFromArmorStand import be4rjp.sclat.data.DataMgr.getPlayerData @@ -11,6 +10,7 @@ import be4rjp.sclat.data.DataMgr.setArmorStandPlayer import be4rjp.sclat.data.DataMgr.setBeaconFromPlayer import be4rjp.sclat.data.DataMgr.setSprinklerFromPlayer import be4rjp.sclat.plugin +import net.azisaba.sclat.core.shape.Sphere.getSphere import net.minecraft.server.v1_14_R1.EnumItemSlot import net.minecraft.server.v1_14_R1.PacketPlayOutEntityDestroy import net.minecraft.server.v1_14_R1.PacketPlayOutEntityEquipment diff --git a/src/main/kotlin/be4rjp/sclat/manager/ColorMgr.kt b/src/main/kotlin/be4rjp/sclat/manager/ColorMgr.kt index 3ea0fbfd..53936a9a 100644 --- a/src/main/kotlin/be4rjp/sclat/manager/ColorMgr.kt +++ b/src/main/kotlin/be4rjp/sclat/manager/ColorMgr.kt @@ -1,9 +1,9 @@ package be4rjp.sclat.manager import be4rjp.sclat.Sclat -import be4rjp.sclat.data.Color import be4rjp.sclat.data.DataMgr.addColorList import be4rjp.sclat.data.DataMgr.setColor +import net.azisaba.sclat.core.data.Color import org.bukkit.ChatColor import org.bukkit.Material import org.bukkit.inventory.ItemStack diff --git a/src/main/kotlin/be4rjp/sclat/manager/DeathMgr.kt b/src/main/kotlin/be4rjp/sclat/manager/DeathMgr.kt index c3c43130..884a646e 100644 --- a/src/main/kotlin/be4rjp/sclat/manager/DeathMgr.kt +++ b/src/main/kotlin/be4rjp/sclat/manager/DeathMgr.kt @@ -2,13 +2,13 @@ package be4rjp.sclat.manager import be4rjp.sclat.Sclat import be4rjp.sclat.api.SclatUtil.createInkExplosionEffect -import be4rjp.sclat.api.Sphere.getSphere import be4rjp.sclat.data.DataMgr.getPlayerData import be4rjp.sclat.plugin -import be4rjp.sclat.sclatLogger import be4rjp.sclat.weapon.Gear import be4rjp.sclat.weapon.Gear.getGearInfluence import be4rjp.sclat.weapon.spweapon.SuperArmor.setArmor +import net.azisaba.sclat.core.DelegatedLogger +import net.azisaba.sclat.core.shape.Sphere.getSphere import net.md_5.bungee.api.ChatColor import net.md_5.bungee.api.ChatMessageType import net.md_5.bungee.api.chat.TextComponent @@ -26,6 +26,8 @@ import org.bukkit.util.Vector * @author Be4rJP */ object DeathMgr { + private val logger by DelegatedLogger() + fun playerDeathRunnable( target: Player, shooter: Player, @@ -103,7 +105,7 @@ object DeathMgr { cancel() return } - sclatLogger.debug("Handling player kill!!") + logger.debug("Handling player kill!!") if (type == "killed") { t.gameMode = GameMode.SPECTATOR t.inventory.clear() @@ -346,12 +348,12 @@ object DeathMgr { t.gameMode = GameMode.SPECTATOR val playerData = getPlayerData(t) ?: run { - sclatLogger.debug("Player Data is null on water death") + logger.debug("Player Data is null on water death") return } playerData.tick = 10 t.inventory.clear() - sclatLogger.debug("Water tick if / current tick: {}", i) + logger.debug("Water tick if / current tick: {}", i) if (i == 0) { loc = t.location if (playerData.lastAttack === t) { @@ -464,12 +466,12 @@ object DeathMgr { t.gameMode = GameMode.SPECTATOR val playerData = getPlayerData(t) if (playerData == null) { - sclatLogger.debug("Player data is null on fall handling") + logger.debug("Player data is null on fall handling") return } playerData.tick = 10 t.inventory.clear() - sclatLogger.debug("on fall handling") + logger.debug("on fall handling") if (i == 0) { loc = playerData.match!!.mapData!!.intro ?: throw RuntimeException("Intro map data is null!") if (playerData.lastAttack === t) { @@ -594,7 +596,7 @@ object DeathMgr { setArmor(t, Double.MAX_VALUE, 120, false) if (getPlayerData(t)!!.sPGauge == 100) SPWeaponMgr.setSPWeapon(t) cancel() - sclatLogger.error("Failed to process death", e) + logger.error("Failed to process death", e) e.printStackTrace() } } diff --git a/src/main/kotlin/be4rjp/sclat/manager/GameMgr.kt b/src/main/kotlin/be4rjp/sclat/manager/GameMgr.kt index c448e70b..66cc6a4c 100644 --- a/src/main/kotlin/be4rjp/sclat/manager/GameMgr.kt +++ b/src/main/kotlin/be4rjp/sclat/manager/GameMgr.kt @@ -1,14 +1,9 @@ package be4rjp.sclat.manager import be4rjp.sclat.Sclat -import be4rjp.sclat.api.MessageType import be4rjp.sclat.api.SclatUtil.playGameSound import be4rjp.sclat.api.SclatUtil.sendMessage -import be4rjp.sclat.api.ServerType -import be4rjp.sclat.api.SoundType import be4rjp.sclat.api.player.PlayerData -import be4rjp.sclat.api.player.PlayerSettings -import be4rjp.sclat.config.NewConfig import be4rjp.sclat.data.DataMgr import be4rjp.sclat.data.DataMgr.beaconMap import be4rjp.sclat.data.DataMgr.getBeaconFromplayer @@ -25,7 +20,6 @@ import be4rjp.sclat.data.DataMgr.sprinklerMap import be4rjp.sclat.data.PaintData import be4rjp.sclat.gui.LootBox import be4rjp.sclat.gui.OpenGUI -import be4rjp.sclat.loginbonus.LoginBonus import be4rjp.sclat.packet.PacketHandler import be4rjp.sclat.plugin import be4rjp.sclat.server.EquipmentClient @@ -51,6 +45,11 @@ import be4rjp.sclat.weapon.Shooter.shooterRunnable import be4rjp.sclat.weapon.Spinner.spinnerRunnable import be4rjp.sclat.weapon.Swapper.swapperRunnable import fr.mrmicky.fastboard.FastBoard +import net.azisaba.sclat.core.config.NewConfig +import net.azisaba.sclat.core.enums.MessageType +import net.azisaba.sclat.core.enums.ServerType +import net.azisaba.sclat.core.enums.SoundType +import net.azisaba.sclat.core.player.PlayerSettings import net.md_5.bungee.api.chat.ClickEvent import net.md_5.bungee.api.chat.TextComponent import org.bukkit.Bukkit @@ -103,10 +102,7 @@ class GameMgr : Listener { player.isCollidable = false // player.setDisplayName(player.getName()); - if (PlayerReturnManager.isReturned( - player.uniqueId.toString(), - ) - ) { + if (PlayerReturnManager.isReturned(player.uniqueId)) { e.joinMessage = ChatColor.GOLD.toString() + player.name + " returned from a match." } @@ -116,13 +112,13 @@ class GameMgr : Listener { val uuid: String = player.uniqueId.toString() val settings = PlayerSettings(player) data.settings = settings - data.weaponClass = ( + data.weaponClass = getWeaponClass( Sclat.conf!! .config!! .getString("DefaultClass"), ) - ) + setPlayerData(player, data) // ((LivingEntity)player).setCollidable(false); @@ -139,8 +135,12 @@ class GameMgr : Listener { // DataMgr.setRankingHolograms(player, rankingHolograms); // PlayerStatusMgr.HologramUpdateRunnable(player); Sclat.playerHolograms.add(player) - if (LoginBonus.tryClaim(player)) { - player.sendMessage( + player.apply { + if (uniqueId in NewConfig.loginBonusRefreshSet) return@apply + PlayerStatusMgr.addMoney(player, NewConfig.loginBonusReward.money) + PlayerStatusMgr.addTicket(player, NewConfig.loginBonusReward.ticket) + NewConfig.loginBonusRefreshSet.plus(uniqueId) + sendMessage( "${ChatColor.GOLD}ログインボーナス!${ChatColor.WHITE} お金 ${ChatColor.GREEN}+${NewConfig.loginBonusReward.money}${ChatColor.WHITE} & チケット ${ChatColor.GREEN}+${NewConfig.loginBonusReward.ticket}${ChatColor.WHITE}", ) } diff --git a/src/main/kotlin/be4rjp/sclat/manager/MainWeaponMgr.kt b/src/main/kotlin/be4rjp/sclat/manager/MainWeaponMgr.kt index a6bc1bf9..73ec71b9 100644 --- a/src/main/kotlin/be4rjp/sclat/manager/MainWeaponMgr.kt +++ b/src/main/kotlin/be4rjp/sclat/manager/MainWeaponMgr.kt @@ -4,9 +4,6 @@ import be4rjp.dadadachecker.ClickType import be4rjp.sclat.Sclat import be4rjp.sclat.data.DataMgr.getPlayerData import be4rjp.sclat.data.DataMgr.setMainWeapon -import be4rjp.sclat.data.MainWeapon -import be4rjp.sclat.extension.toMaterial -import be4rjp.sclat.sclatLogger import be4rjp.sclat.weapon.Blaster.shootBlaster import be4rjp.sclat.weapon.Brush import be4rjp.sclat.weapon.Bucket.shootBucket @@ -14,6 +11,9 @@ import be4rjp.sclat.weapon.Burst.burstCooltime import be4rjp.sclat.weapon.Kasa.shootKasa import be4rjp.sclat.weapon.Roller import be4rjp.sclat.weapon.Slosher.shootSlosher +import net.azisaba.sclat.core.DelegatedLogger +import net.azisaba.sclat.core.data.MainWeapon +import net.azisaba.sclat.core.extension.toMaterial import org.bukkit.Material import org.bukkit.entity.Player import org.bukkit.inventory.ItemStack @@ -23,17 +23,19 @@ import org.bukkit.inventory.ItemStack * @author Be4rJP */ object MainWeaponMgr { + private val logger by DelegatedLogger() + @Synchronized fun setupMainWeapon() { val mainWeaponSection = Sclat.conf?.weaponConfig?.getConfigurationSection("MainWeapon") ?: run { - sclatLogger.error("Failed to get MainWeapon section from mainweapon.yml") + logger.error("Failed to get MainWeapon section from mainweapon.yml") return } for (weaponname in mainWeaponSection.getKeys(false)) { val section = mainWeaponSection.getConfigurationSection(weaponname) ?: run { - sclatLogger.warn("Failed to get section for $weaponname") + logger.warn("Failed to get section for $weaponname") continue } diff --git a/src/main/kotlin/be4rjp/sclat/manager/MapDataMgr.kt b/src/main/kotlin/be4rjp/sclat/manager/MapDataMgr.kt index 6c1b2425..95c2925f 100644 --- a/src/main/kotlin/be4rjp/sclat/manager/MapDataMgr.kt +++ b/src/main/kotlin/be4rjp/sclat/manager/MapDataMgr.kt @@ -7,7 +7,7 @@ import be4rjp.sclat.data.LocMeta import be4rjp.sclat.data.MapData import be4rjp.sclat.data.PathMeta import be4rjp.sclat.data.WiremeshMeta -import be4rjp.sclat.sclatLogger +import net.azisaba.sclat.core.DelegatedLogger /** * MapData manager — parse map configuration into metadata only. @@ -16,6 +16,7 @@ import be4rjp.sclat.sclatLogger * startup. Runtime objects remain null until MapLoader loads the map. */ object MapDataMgr { + private val logger by DelegatedLogger() var allmapcount: Int = 0 @Synchronized @@ -151,7 +152,7 @@ object MapDataMgr { } // Perform final registration - sclatLogger.info(mapname) + logger.info(mapname) map.worldName = worldName allmapcount++ addMapList(map) diff --git a/src/main/kotlin/be4rjp/sclat/manager/MapLoader.kt b/src/main/kotlin/be4rjp/sclat/manager/MapLoader.kt index 1efbae42..97a06677 100644 --- a/src/main/kotlin/be4rjp/sclat/manager/MapLoader.kt +++ b/src/main/kotlin/be4rjp/sclat/manager/MapLoader.kt @@ -5,9 +5,9 @@ import be4rjp.sclat.data.Area import be4rjp.sclat.data.DataMgr import be4rjp.sclat.data.LocMeta import be4rjp.sclat.data.MapData -import be4rjp.sclat.data.Path import be4rjp.sclat.plugin -import be4rjp.sclat.sclatLogger +import net.azisaba.sclat.core.DelegatedLogger +import net.azisaba.sclat.core.data.Path import org.bukkit.Bukkit import org.bukkit.Location import org.bukkit.WorldCreator @@ -21,6 +21,7 @@ import kotlin.math.roundToLong * until the load completes. */ object MapLoader { + private val logger by DelegatedLogger() private val usage: MutableMap = ConcurrentHashMap() private val unloadRetries: MutableMap = ConcurrentHashMap() @@ -34,7 +35,7 @@ object MapLoader { fun incrementUsage(map: MapData) { val name = map.mapName ?: return val newCount = usage.merge(name, 1) { old, one -> old + one } ?: 1 - sclatLogger.info("MapLoader: incrementUsage($name) -> $newCount") + logger.info("MapLoader: incrementUsage($name) -> $newCount") if (newCount == 1) { // first user — load synchronously on main thread @@ -56,7 +57,7 @@ object MapLoader { latch.await() } catch (e: InterruptedException) { Thread.currentThread().interrupt() - sclatLogger.warn("MapLoader: interrupted while waiting for map load: $name") + logger.warn("MapLoader: interrupted while waiting for map load: $name") } } } @@ -66,7 +67,7 @@ object MapLoader { val name = map.mapName ?: return usage.computeIfPresent(name) { _, old -> (old - 1).coerceAtLeast(0) } val current = usage[name] ?: 0 - sclatLogger.info("MapLoader: releaseMap($name) -> $current") + logger.info("MapLoader: releaseMap($name) -> $current") if (current <= 0) { attemptUnload(map) } @@ -91,7 +92,7 @@ object MapLoader { // idempotent if (map.team0Loc != null || map.pathList.isNotEmpty() || map.wiremeshListTask != null) { - sclatLogger.info("MapLoader: map $name already loaded; skipping") + logger.info("MapLoader: map $name already loaded; skipping") return } @@ -102,7 +103,7 @@ object MapLoader { if (worldName != null) { var w = Bukkit.getWorld(worldName) if (w == null) { - sclatLogger.info("MapLoader: creating world $worldName for map $name") + logger.info("MapLoader: creating world $worldName for map $name") w = Bukkit.createWorld(WorldCreator(worldName)) } map.worldName = w?.name @@ -126,7 +127,7 @@ object MapLoader { for (pm in map.pathMetaList) { val from = toLocation(pm.from) val to = toLocation(pm.to) - val path = Path(from, to) + val path = Path(plugin, from, to) map.addPath(path) } @@ -135,7 +136,7 @@ object MapLoader { val from = toLocation(am.from) val to = toLocation(am.to) if (from != null && to != null) { - val area = Area(from, to) + val area = Area(plugin, from, to) map.addArea(area) } } @@ -153,7 +154,7 @@ object MapLoader { // record candidate count for metrics wiremeshCandidates[name] = wmTask.totalBlocks val tend = System.currentTimeMillis() - sclatLogger.info("MapLoader: wiremesh builder started for $name in ${tend - tstart}ms (candidates=${wmTask.totalBlocks})") + logger.info("MapLoader: wiremesh builder started for $name in ${tend - tstart}ms (candidates=${wmTask.totalBlocks})") } } @@ -163,7 +164,7 @@ object MapLoader { loadTimes.computeIfAbsent(name) { ArrayList() }.add(ms) } catch (_: Exception) { } - sclatLogger.info("MapLoader: loaded map $name in ${ms}ms") + logger.info("MapLoader: loaded map $name in ${ms}ms") } fun getMetricsString(mapName: String?): String? { @@ -198,11 +199,11 @@ object MapLoader { if (world != null && world.players.isNotEmpty()) { val tries = unloadRetries.getOrDefault(name, 0) if (tries >= MAX_RETRIES) { - sclatLogger.warn("MapLoader: max unload retries reached for $name; leaving loaded") + logger.warn("MapLoader: max unload retries reached for $name; leaving loaded") return } unloadRetries[name] = tries + 1 - sclatLogger.info("MapLoader: deferred unload for $name - players present (attempt ${tries + 1})") + logger.info("MapLoader: deferred unload for $name - players present (attempt ${tries + 1})") Bukkit.getScheduler().runTaskLater( plugin, Runnable { attemptUnload(map, false) }, @@ -237,11 +238,11 @@ object MapLoader { waitedTicks++ } if (wmTask.isWorking()) { - sclatLogger.warn("MapLoader: wiremesh builder did not finish promptly for $name; proceeding with unload") + logger.warn("MapLoader: wiremesh builder did not finish promptly for $name; proceeding with unload") } } } catch (e: Exception) { - sclatLogger.warn("MapLoader: error stopping wiremesh for $name: ${e.message}") + logger.warn("MapLoader: error stopping wiremesh for $name: ${e.message}") } // Stop paths and areas @@ -250,14 +251,14 @@ object MapLoader { p?.stop() } } catch (e: Exception) { - sclatLogger.warn("MapLoader: error stopping paths for $name: ${e.message}") + logger.warn("MapLoader: error stopping paths for $name: ${e.message}") } try { for (a in map.areaList) { a?.stop() } } catch (e: Exception) { - sclatLogger.warn("MapLoader: error stopping areas for $name: ${e.message}") + logger.warn("MapLoader: error stopping areas for $name: ${e.message}") } // Remove armor stands and clear DataMgr entries that belong to this world's world @@ -265,7 +266,7 @@ object MapLoader { try { DataMgr.clearWorldData(world) } catch (e: Exception) { - sclatLogger.warn("MapLoader: error clearing DataMgr for $name: ${e.message}") + logger.warn("MapLoader: error clearing DataMgr for $name: ${e.message}") } } @@ -275,7 +276,7 @@ object MapLoader { Bukkit.unloadWorld(world, false) } } catch (e: Exception) { - sclatLogger.warn("MapLoader: error unloading world for $name: ${e.message}") + logger.warn("MapLoader: error unloading world for $name: ${e.message}") } // Clear runtime fields @@ -292,7 +293,7 @@ object MapLoader { usage.remove(name) unloadRetries.remove(name) - sclatLogger.info("MapLoader: unloaded map $name") + logger.info("MapLoader: unloaded map $name") } fun unloadAllLoadedMaps() { diff --git a/src/main/kotlin/be4rjp/sclat/manager/MatchMgr.kt b/src/main/kotlin/be4rjp/sclat/manager/MatchMgr.kt index 54ee54d4..cc8abed2 100644 --- a/src/main/kotlin/be4rjp/sclat/manager/MatchMgr.kt +++ b/src/main/kotlin/be4rjp/sclat/manager/MatchMgr.kt @@ -4,17 +4,10 @@ import be4rjp.sclat.Sclat import be4rjp.sclat.api.Animation.areaResultAnimation import be4rjp.sclat.api.Animation.resultAnimation import be4rjp.sclat.api.Animation.tdmResultAnimation -import be4rjp.sclat.api.MessageType -import be4rjp.sclat.api.Plugins import be4rjp.sclat.api.SclatUtil.playGameSound import be4rjp.sclat.api.SclatUtil.restartServer import be4rjp.sclat.api.SclatUtil.sendMessage import be4rjp.sclat.api.SclatUtil.sendWorldBorderWarningClearPacket -import be4rjp.sclat.api.ServerType -import be4rjp.sclat.api.SoundType -import be4rjp.sclat.api.player.PlayerSettings -import be4rjp.sclat.api.team.Team -import be4rjp.sclat.api.utils.ObjectiveUtil import be4rjp.sclat.data.BlockUpdater import be4rjp.sclat.data.DataMgr import be4rjp.sclat.data.DataMgr.armorStandMap @@ -59,6 +52,13 @@ import be4rjp.sclat.weapon.Spinner.spinnerRunnable import be4rjp.sclat.weapon.Swapper.swapperRunnable import be4rjp.sclat.weapon.spweapon.SuperArmor.setArmor import com.xxmicloxx.NoteBlockAPI.songplayer.RadioSongPlayer +import net.azisaba.sclat.core.Plugins +import net.azisaba.sclat.core.enums.MessageType +import net.azisaba.sclat.core.enums.ServerType +import net.azisaba.sclat.core.enums.SoundType +import net.azisaba.sclat.core.player.PlayerSettings +import net.azisaba.sclat.core.team.SclatTeam +import net.azisaba.sclat.core.utils.ObjectiveUtil import net.md_5.bungee.api.ChatMessageType import net.md_5.bungee.api.chat.TextComponent import org.bukkit.Bukkit @@ -121,7 +121,7 @@ object MatchMgr { match.addJoinedPlayerCount() data!!.match = match - data.isJoined = (true) + data.isJoined = true DataMgr.joinedList.add(player) @@ -165,8 +165,8 @@ object MatchMgr { } if (match.joinedPlayerCount == startPlayerCount && !match.isStarted && !match.isStartedCount) { - match.isStarted = (true) - match.isStartedCount = (true) + match.isStarted = true + match.isStartedCount = true val task: BukkitRunnable = object : BukkitRunnable() { var s: Int = 0 @@ -182,18 +182,18 @@ object MatchMgr { "§aあと§c" + (startPlayerCount - match.joinedPlayerCount) + "§a人必要です", MessageType.ALL_PLAYER, ) - match.isStartedCount = (false) - match.isStarted = (false) + match.isStartedCount = false + match.isStarted = false // Send match status if (Sclat.type == ServerType.MATCH) { - val commands: MutableList = ArrayList() - commands.add( - "cdc " + - Sclat.conf!! - .servers!! - .getString("ServerName"), - ) - commands.add("stop") + val commands: MutableList = + mutableListOf( + "cdc " + + Sclat.conf!! + .servers!! + .getString("ServerName"), + "stop", + ) val sc = StatusClient( Sclat.conf!! @@ -211,17 +211,15 @@ object MatchMgr { if (s == 0) { // Send match status if (Sclat.type == ServerType.MATCH) { - val commands: MutableList = ArrayList() - commands.add( - ( + val commands: MutableList = + mutableListOf( "cd " + Sclat.conf!! .servers!! .getString("ServerName") + " " + - (System.currentTimeMillis() / 1000 + 30) - ), - ) - commands.add("stop") + (System.currentTimeMillis() / 1000 + 30), + "stop", + ) val sc = StatusClient( Sclat.conf!! @@ -350,17 +348,15 @@ object MatchMgr { // Send match status if (Sclat.type == ServerType.MATCH) { - val commands: MutableList = ArrayList() - commands.add( - ( + val commands: MutableList = + mutableListOf( "started " + Sclat.conf!! .servers!! .getString("ServerName") + " " + - System.currentTimeMillis() / 1000 - ), - ) - commands.add("stop") + System.currentTimeMillis() / 1000, + "stop", + ) val sc = StatusClient( Sclat.conf!! @@ -413,12 +409,12 @@ object MatchMgr { val id = matchcount val match = Match(id) - val team0 = Team(id * 2) - val team1 = Team(id * 2 + 1) + val team0 = SclatTeam(id * 2) + val team1 = SclatTeam(id * 2 + 1) setTeam(id * 2, team0) setTeam(id * 2 + 1, team1) - val bur = BlockUpdater() + val bur = BlockUpdater(plugin) if (Sclat.conf!! .config!! .contains("BlockUpdateRate") @@ -460,8 +456,8 @@ object MatchMgr { // lobby待機者用 val id2 = Int.MAX_VALUE val lobbyM = Match(id2) - val lobbyT0 = Team(id2) - val lobbyT1 = Team(id2 - 1) + val lobbyT0 = SclatTeam(id2) + val lobbyT1 = SclatTeam(id2 - 1) setTeam(id2, lobbyT0) setTeam(id2 - 1, lobbyT1) @@ -594,7 +590,7 @@ object MatchMgr { if (s == 0) { p.setDisplayName(getPlayerData(p)!!.team!!.teamColor!!.colorCode + p.name) - getPlayerData(p)!!.canFly = (true) + getPlayerData(p)!!.canFly = true if (getPlayerData(p)!!.playerNumber == 1) { PaintMgr.paintGlass(match) @@ -950,7 +946,7 @@ object MatchMgr { } if (s == 281) { - getPlayerData(p)!!.canFly = (false) + getPlayerData(p)!!.canFly = false // playerclass if (getPlayerData(p)!!.weaponClass!!.subWeaponName == "ビーコン") { @@ -969,7 +965,7 @@ object MatchMgr { swapperRunnable(p) if (getPlayerData(p)!!.weaponClass!!.mainWeapon!!.slidingShootTick > 1) { maneuverShootRunnable(p) - getPlayerData(p)!!.isUsingManeuver = (true) + getPlayerData(p)!!.isUsingManeuver = true } } if (getPlayerData(p)!!.weaponClass!!.mainWeapon!!.weaponType == "Shooter") { @@ -1030,7 +1026,7 @@ object MatchMgr { if (getPlayerData(p)!!.weaponClass!!.mainWeapon!!.weaponType == "Camping") { kasaRunnable(p, true) - getPlayerData(p)!!.mainItemGlow = (true) + getPlayerData(p)!!.mainItemGlow = true WeaponClassMgr.setWeaponClass(p) } if (getPlayerData(p)!!.weaponClass!!.mainWeapon!!.weaponType == "Hound") { @@ -1055,7 +1051,7 @@ object MatchMgr { // Shooter.ShooterRunnable(p); // SquidMgr.SquidRunnable(p); - getPlayerData(p)!!.isInMatch = (true) + getPlayerData(p)!!.isInMatch = true p.exp = 0.99f if (getPlayerData(p)!!.playerNumber == 1) { inMatchCounter(p) @@ -1270,7 +1266,7 @@ object MatchMgr { lines.add(" ") lines.add("§b§l残り時間 » §r" + s / 60 + ":" + min) - var gcteam: Team? = null + var gcteam: SclatTeam? = null var isgc = false var entyo = false @@ -1279,13 +1275,13 @@ object MatchMgr { .config!! .getString("WorkMode") == "Area" ) { - val list: MutableList = ArrayList() + val list: MutableList = ArrayList() for (area in match.mapData!!.areaList) { list.add(area!!.team) } var `is` = true - var t: Team? = null + var t: SclatTeam? = null for ((i, team) in list.withIndex()) { if (i == 0) { if (team != null) { @@ -1361,7 +1357,7 @@ object MatchMgr { ) if (isgc) { - var ngcteam: Team = match.team0!! + var ngcteam: SclatTeam = match.team0!! if (match.team0 == gcteam) ngcteam = match.team1!! if (gcteam!!.gatiCount <= ngcteam.gatiCount) entyo = true } @@ -1488,7 +1484,7 @@ object MatchMgr { object : BukkitRunnable() { val p: Player = player var loc: Location? = null - var winteam: Team? = getPlayerData(player)!!.match!!.team0 + var winteam: SclatTeam? = getPlayerData(player)!!.match!!.team0 var i: Int = 0 var bestkills: Int = 0 var bestpaint: Int = 0 @@ -1543,7 +1539,7 @@ object MatchMgr { beaconMap.clear() sprinklerMap.clear() armorStandMap.clear() - getPlayerData(p)!!.isInMatch = (false) + getPlayerData(p)!!.isInMatch = false if (p.hasPotionEffect(PotionEffectType.SLOW)) p.removePotionEffect(PotionEffectType.SLOW) p.playSound(p.location, Sound.ENTITY_FIREWORK_ROCKET_LAUNCH, 3f, 1.3f) loc = p.location @@ -1561,7 +1557,7 @@ object MatchMgr { p.scoreboard = scoreboard } if (i == 2) { - getPlayerData(p)!!.canFly = (true) + getPlayerData(p)!!.canFly = true p.resetTitle() p.sendTitle( ChatColor.YELLOW.toString() + "=========================== Finish! ===========================", @@ -1761,9 +1757,11 @@ object MatchMgr { if (i == 80) { getPlayerData(p) - val commands: MutableList = ArrayList() - commands.add("return " + p.uniqueId) - commands.add("stop") + val commands: MutableList = + mutableListOf( + "return ${p.uniqueId}", + "stop", + ) val sc = StatusClient( Sclat.conf!! @@ -1782,7 +1780,7 @@ object MatchMgr { // int kill = data.killCount; // int paint = data.paintCount; - data!!.canFly = (false) + data!!.canFly = false sendMessage("§a----------<< Match result >>----------", MessageType.PLAYER, p) sendMessage("", MessageType.PLAYER, p) @@ -1915,14 +1913,16 @@ object MatchMgr { PlayerStatusMgr.addKill(p, data.killCount) if (Sclat.type == ServerType.MATCH) { - val commands: MutableList = ArrayList() - commands.add("add money " + pMoney + " " + p.uniqueId) - commands.add("add level " + pLv + " " + p.uniqueId) - commands.add("add ticket " + pTicket + " " + p.uniqueId) - commands.add("add rank " + pRank + " " + p.uniqueId) - commands.add("add kill " + data.killCount + " " + p.uniqueId) - commands.add("add paint " + data.paintCount + " " + p.uniqueId) - commands.add("stop") + val commands: MutableList = + mutableListOf( + "add money " + pMoney + " " + p.uniqueId, + "add level " + pLv + " " + p.uniqueId, + "add ticket " + pTicket + " " + p.uniqueId, + "add rank " + pRank + " " + p.uniqueId, + "add kill " + data.killCount + " " + p.uniqueId, + "add paint " + data.paintCount + " " + p.uniqueId, + "stop", + ) val sc = StatusClient( Sclat.conf!! @@ -2044,23 +2044,21 @@ object MatchMgr { // Send match status if (Sclat.type == ServerType.MATCH) { - val commands: MutableList = ArrayList() - commands.add( - "stopped " + - Sclat.conf!! - .servers!! - .getString("ServerName"), - ) - commands.add( - "map " + - Sclat.conf!! - .servers!! - .getString("ServerName") + " " + - getMapRandom( - if (mapcount == 0) 0 else mapcount - 1, - ).mapName, - ) - commands.add("stop") + val commands: MutableList = + mutableListOf( + "stopped " + + Sclat.conf!! + .servers!! + .getString("ServerName"), + "map " + + Sclat.conf!! + .servers!! + .getString("ServerName") + " " + + getMapRandom( + if (mapcount == 0) 0 else mapcount - 1, + ).mapName, + "stop", + ) val sc = StatusClient( Sclat.conf!! diff --git a/src/main/kotlin/be4rjp/sclat/manager/PaintMgr.kt b/src/main/kotlin/be4rjp/sclat/manager/PaintMgr.kt index fa4014c0..87cc5e1c 100644 --- a/src/main/kotlin/be4rjp/sclat/manager/PaintMgr.kt +++ b/src/main/kotlin/be4rjp/sclat/manager/PaintMgr.kt @@ -2,8 +2,6 @@ package be4rjp.sclat.manager import be4rjp.sclat.Sclat import be4rjp.sclat.api.SclatUtil -import be4rjp.sclat.api.ServerType -import be4rjp.sclat.api.team.Team import be4rjp.sclat.data.DataMgr.blockDataMap import be4rjp.sclat.data.DataMgr.getPaintDataFromBlock import be4rjp.sclat.data.DataMgr.getPlayerData @@ -16,6 +14,8 @@ import be4rjp.sclat.data.PaintData import be4rjp.sclat.data.Sponge import be4rjp.sclat.weapon.Gear import be4rjp.sclat.weapon.Gear.getGearInfluence +import net.azisaba.sclat.core.enums.ServerType +import net.azisaba.sclat.core.team.SclatTeam import org.bukkit.Location import org.bukkit.Material import org.bukkit.block.Block @@ -176,7 +176,7 @@ object PaintMgr { fun paintByTeam( block: Block, - team: Team, + team: SclatTeam, match: Match, ) { val team = team diff --git a/src/main/kotlin/be4rjp/sclat/manager/PathMgr.kt b/src/main/kotlin/be4rjp/sclat/manager/PathMgr.kt index e2ebb9a2..76f6fac9 100644 --- a/src/main/kotlin/be4rjp/sclat/manager/PathMgr.kt +++ b/src/main/kotlin/be4rjp/sclat/manager/PathMgr.kt @@ -5,8 +5,8 @@ import be4rjp.sclat.api.raytrace.RayTrace import be4rjp.sclat.data.DataMgr.addPathArmorStandList import be4rjp.sclat.data.DataMgr.getPlayerData import be4rjp.sclat.data.Match -import be4rjp.sclat.data.Path import be4rjp.sclat.plugin +import net.azisaba.sclat.core.data.Path import net.minecraft.server.v1_14_R1.EnumItemSlot import net.minecraft.server.v1_14_R1.PacketPlayOutEntityEquipment import org.bukkit.Color @@ -131,7 +131,7 @@ object PathMgr { val effect: BukkitRunnable = object : BukkitRunnable() { val path1: Path = path - val from: Location = path.fromLocation.clone() + val from: Location = path.fromLocation!!.clone() val to: Location = path.toLocation!!.clone() val match: Match = m @@ -177,8 +177,8 @@ object PathMgr { val task: BukkitRunnable = object : BukkitRunnable() { val path1: Path = path - val from: Location = path.fromLocation.clone() - val to: Location = path.toLocation.clone() + val from: Location = path.fromLocation!!.clone() + val to: Location = path.toLocation!!.clone() val match: Match = m var c: Int = 0 diff --git a/src/main/kotlin/be4rjp/sclat/manager/PlayerReturnManager.kt b/src/main/kotlin/be4rjp/sclat/manager/PlayerReturnManager.kt index 0f098559..8380bf9b 100644 --- a/src/main/kotlin/be4rjp/sclat/manager/PlayerReturnManager.kt +++ b/src/main/kotlin/be4rjp/sclat/manager/PlayerReturnManager.kt @@ -1,37 +1,25 @@ package be4rjp.sclat.manager import be4rjp.sclat.api.player.PlayerReturn -import be4rjp.sclat.plugin -import org.bukkit.scheduler.BukkitRunnable +import com.github.shynixn.mccoroutine.bukkit.launch +import kotlinx.coroutines.time.delay +import org.bukkit.plugin.java.JavaPlugin +import java.time.Duration +import java.util.UUID object PlayerReturnManager { - var list: MutableList = ArrayList() + private val playerReturnMap: MutableMap = mutableMapOf() - fun isReturned(uuid: String?): Boolean { - for (pr in list) { - if (pr.uUID == uuid) { - list.remove(pr) - return true - } - } - return false - } + fun isReturned(uuid: UUID): Boolean = playerReturnMap.remove(uuid)?.flag ?: false - fun runRemoveTask() { - val task: BukkitRunnable = - object : BukkitRunnable() { - override fun run() { - try { - list.removeIf { pr: PlayerReturn? -> !pr!!.flag } - } catch (e: Exception) { - } - } - } - task.runTaskTimer(plugin, 0, 200) + fun runRemoveTask(plugin: JavaPlugin) { + plugin.launch { + delay(Duration.ofSeconds(2)) + playerReturnMap.entries.removeIf { (_, pr) -> pr.flag } + } } - fun addPlayerReturn(uuid: String?) { - val pr = PlayerReturn(uuid) - list.add(pr) + fun addPlayerReturn(uuid: UUID) { + playerReturnMap[uuid] = PlayerReturn(uuid.toString()) } } diff --git a/src/main/kotlin/be4rjp/sclat/manager/SPWeaponMgr.kt b/src/main/kotlin/be4rjp/sclat/manager/SPWeaponMgr.kt index dbf08e5c..70019db2 100644 --- a/src/main/kotlin/be4rjp/sclat/manager/SPWeaponMgr.kt +++ b/src/main/kotlin/be4rjp/sclat/manager/SPWeaponMgr.kt @@ -1,7 +1,5 @@ package be4rjp.sclat.manager -import be4rjp.sclat.api.GaugeAPI.toGauge -import be4rjp.sclat.api.MessageType import be4rjp.sclat.api.SclatUtil.sendMessage import be4rjp.sclat.data.DataMgr.getPlayerData import be4rjp.sclat.plugin @@ -19,6 +17,8 @@ import be4rjp.sclat.weapon.spweapon.SuperSensor.superSensorRunnable import be4rjp.sclat.weapon.spweapon.SuperShot.setSuperShot import be4rjp.sclat.weapon.spweapon.SuperTyakuti.superTyakutiRunnable import be4rjp.sclat.weapon.spweapon.SwordMord.setSwordMord +import net.azisaba.sclat.core.enums.MessageType +import net.azisaba.sclat.core.gauge.GaugeAPI.toGauge import org.bukkit.Material import org.bukkit.Sound import org.bukkit.boss.BarColor diff --git a/src/main/kotlin/be4rjp/sclat/manager/ServerStatusManager.kt b/src/main/kotlin/be4rjp/sclat/manager/ServerStatusManager.kt index 9eb344cd..50de7177 100644 --- a/src/main/kotlin/be4rjp/sclat/manager/ServerStatusManager.kt +++ b/src/main/kotlin/be4rjp/sclat/manager/ServerStatusManager.kt @@ -14,6 +14,7 @@ import org.bukkit.scheduler.BukkitRunnable object ServerStatusManager { var inv: Inventory = Bukkit.createInventory(null, 18, "Server List") + // Todo: migrate ServerStatus class on core module @JvmField var serverList: MutableList = ArrayList() diff --git a/src/main/kotlin/be4rjp/sclat/manager/SettingMgr.kt b/src/main/kotlin/be4rjp/sclat/manager/SettingMgr.kt index 83aa8a09..a52757ec 100644 --- a/src/main/kotlin/be4rjp/sclat/manager/SettingMgr.kt +++ b/src/main/kotlin/be4rjp/sclat/manager/SettingMgr.kt @@ -1,8 +1,8 @@ package be4rjp.sclat.manager import be4rjp.sclat.Sclat -import be4rjp.sclat.api.player.PlayerSettings import be4rjp.sclat.data.DataMgr.getPlayerData +import net.azisaba.sclat.core.player.PlayerSettings import org.bukkit.entity.Player object SettingMgr { diff --git a/src/main/kotlin/be4rjp/sclat/manager/SquidMgr.kt b/src/main/kotlin/be4rjp/sclat/manager/SquidMgr.kt index 8b7c5db9..39b30e22 100644 --- a/src/main/kotlin/be4rjp/sclat/manager/SquidMgr.kt +++ b/src/main/kotlin/be4rjp/sclat/manager/SquidMgr.kt @@ -1,12 +1,12 @@ package be4rjp.sclat.manager import be4rjp.sclat.Sclat -import be4rjp.sclat.api.ServerType import be4rjp.sclat.data.DataMgr.blockDataMap import be4rjp.sclat.data.DataMgr.getPlayerData import be4rjp.sclat.plugin import be4rjp.sclat.weapon.Gear import be4rjp.sclat.weapon.Gear.getGearInfluence +import net.azisaba.sclat.core.enums.ServerType import net.minecraft.server.v1_14_R1.EntitySquid import net.minecraft.server.v1_14_R1.EntityTypes import net.minecraft.server.v1_14_R1.PacketPlayOutEntityDestroy diff --git a/src/main/kotlin/be4rjp/sclat/packet/PacketHandler.kt b/src/main/kotlin/be4rjp/sclat/packet/PacketHandler.kt index 667c76dc..12985baf 100644 --- a/src/main/kotlin/be4rjp/sclat/packet/PacketHandler.kt +++ b/src/main/kotlin/be4rjp/sclat/packet/PacketHandler.kt @@ -1,11 +1,11 @@ package be4rjp.sclat.packet import be4rjp.sclat.api.player.PlayerData -import be4rjp.sclat.api.player.PlayerSettings import be4rjp.sclat.data.DataMgr.getPlayerData import io.netty.channel.ChannelDuplexHandler import io.netty.channel.ChannelHandlerContext import io.netty.channel.ChannelPromise +import net.azisaba.sclat.core.player.PlayerSettings import net.minecraft.server.v1_14_R1.EntityTypes import net.minecraft.server.v1_14_R1.PacketPlayOutAbilities import net.minecraft.server.v1_14_R1.PacketPlayOutSpawnEntity @@ -14,13 +14,8 @@ import org.bukkit.entity.Player class PacketHandler( private val player: Player?, ) : ChannelDuplexHandler() { - private val playerData: PlayerData? - private val playerSettings: PlayerSettings - - init { - this.playerData = getPlayerData(player) - this.playerSettings = playerData?.settings!! - } + private val playerData: PlayerData? = getPlayerData(player) + private val playerSettings: PlayerSettings = playerData?.settings!! @Throws(Exception::class) override fun channelRead( diff --git a/src/main/kotlin/be4rjp/sclat/protocollib/EntityClickListener.kt b/src/main/kotlin/be4rjp/sclat/protocollib/EntityClickListener.kt index 49f2b04a..697edff0 100644 --- a/src/main/kotlin/be4rjp/sclat/protocollib/EntityClickListener.kt +++ b/src/main/kotlin/be4rjp/sclat/protocollib/EntityClickListener.kt @@ -13,23 +13,21 @@ class EntityClickListener( ) : PacketAdapter(plugin, *types) { override fun onPacketReceiving(event: PacketEvent) { // プレイヤーがエンティティをクリックしたときのパケットの監視 val player = event.player - if (event.packetType === PacketType.Play.Client.USE_ENTITY) { - val packet = event.packet + if (event.packetType !== PacketType.Play.Client.USE_ENTITY) return + val packet = event.packet - val entityID = packet.integers.readSafely(0) + val entityID = packet.integers.readSafely(0) - try { - val rankingHolograms = Sclat.playerHolograms.get(player) ?: return - for (armorStand in rankingHolograms.armorStandList) { - if (armorStand!!.bukkitEntity.entityId == entityID) { - player.playSound(player.location, Sound.BLOCK_WOODEN_PRESSURE_PLATE_CLICK_ON, 1f, 1.2f) - rankingHolograms.switchNextRankingType() - rankingHolograms.refreshRankingAsync() - break - } + try { + val rankingHolograms = Sclat.playerHolograms.get(player) ?: return + rankingHolograms.armorStandList + .first { armorStand -> armorStand?.bukkitEntity?.entityId!! == entityID } + .let { armorStand -> + player.playSound(player.location, Sound.BLOCK_WOODEN_PRESSURE_PLATE_CLICK_ON, 1f, 1.2f) + rankingHolograms.switchNextRankingType() + rankingHolograms.refreshRankingAsync() } - } catch (e: Exception) { - } + } catch (e: Exception) { } } } diff --git a/src/main/kotlin/be4rjp/sclat/protocollib/SclatPacketListener.kt b/src/main/kotlin/be4rjp/sclat/protocollib/SclatPacketListener.kt index f099c56a..422f2f60 100644 --- a/src/main/kotlin/be4rjp/sclat/protocollib/SclatPacketListener.kt +++ b/src/main/kotlin/be4rjp/sclat/protocollib/SclatPacketListener.kt @@ -1,23 +1,16 @@ package be4rjp.sclat.protocollib -import be4rjp.sclat.Sclat +import be4rjp.sclat.api.packet.Packets import be4rjp.sclat.plugin import com.comphenix.protocol.PacketType -import com.comphenix.protocol.events.ListenerPriority object SclatPacketListener { @JvmStatic fun init() { - Sclat.protocolManager.addPacketListener( - VehiclePacketListener( - plugin, - ListenerPriority.NORMAL, - PacketType.Play.Client.STEER_VEHICLE, - ), - ) - - Sclat.protocolManager - .addPacketListener(EntityClickListener(plugin, PacketType.Play.Client.USE_ENTITY)) + Packets.protocolManager.apply { + addPacketListener(VehiclePacketListener(plugin, PacketType.Play.Client.STEER_VEHICLE)) + addPacketListener(EntityClickListener(plugin, PacketType.Play.Client.USE_ENTITY)) + } /* * Main.protocolManager.addPacketListener( new PacketAdapter(Main.getPlugin(), diff --git a/src/main/kotlin/be4rjp/sclat/protocollib/VehiclePacketListener.kt b/src/main/kotlin/be4rjp/sclat/protocollib/VehiclePacketListener.kt index a1380d7b..b2e3fd1f 100644 --- a/src/main/kotlin/be4rjp/sclat/protocollib/VehiclePacketListener.kt +++ b/src/main/kotlin/be4rjp/sclat/protocollib/VehiclePacketListener.kt @@ -2,7 +2,6 @@ package be4rjp.sclat.protocollib import be4rjp.sclat.data.DataMgr.getPlayerData import com.comphenix.protocol.PacketType -import com.comphenix.protocol.events.ListenerPriority import com.comphenix.protocol.events.PacketAdapter import com.comphenix.protocol.events.PacketEvent import org.bukkit.plugin.Plugin @@ -10,9 +9,8 @@ import org.bukkit.util.Vector class VehiclePacketListener( plugin: Plugin, - listenerPriority: ListenerPriority, vararg types: PacketType, -) : PacketAdapter(plugin, listenerPriority, *types) { +) : PacketAdapter(plugin, *types) { override fun onPacketReceiving(event: PacketEvent) { // プレイヤーがエンティティに乗っているときのパケットを監視 val player = event.player if (event.packetType === PacketType.Play.Client.STEER_VEHICLE && player.vehicle != null) { diff --git a/src/main/kotlin/be4rjp/sclat/server/EquipmentServerManager.kt b/src/main/kotlin/be4rjp/sclat/server/EquipmentServerManager.kt index 8715f057..cc37d4b2 100644 --- a/src/main/kotlin/be4rjp/sclat/server/EquipmentServerManager.kt +++ b/src/main/kotlin/be4rjp/sclat/server/EquipmentServerManager.kt @@ -5,13 +5,15 @@ import be4rjp.sclat.data.DataMgr.getPlayerData import be4rjp.sclat.data.DataMgr.getWeaponClass import be4rjp.sclat.manager.PlayerStatusMgr import be4rjp.sclat.plugin -import be4rjp.sclat.sclatLogger +import net.azisaba.sclat.core.DelegatedLogger object EquipmentServerManager { + private val logger by DelegatedLogger() + var commands: MutableList = ArrayList() fun addEquipmentCommand(command: String) { - sclatLogger.debug("Equip command: $command") + logger.debug("Equip command: $command") commands.add(command) } diff --git a/src/main/kotlin/be4rjp/sclat/server/StatusClient.kt b/src/main/kotlin/be4rjp/sclat/server/StatusClient.kt index 693e6406..9c50689b 100644 --- a/src/main/kotlin/be4rjp/sclat/server/StatusClient.kt +++ b/src/main/kotlin/be4rjp/sclat/server/StatusClient.kt @@ -11,75 +11,68 @@ import java.net.Socket class StatusClient( private val host: String?, private val port: Int, - commands: MutableList, + private val commands: MutableList, ) { - private var commands: MutableList = ArrayList() + private val task: BukkitRunnable = + object : BukkitRunnable() { + override fun run() { + var reader: BufferedReader? = null - private val task: BukkitRunnable + try { + Socket( + host, + port, + ).use { cSocket -> + PrintWriter(cSocket.getOutputStream(), true).use { writer -> + try { + // System.out.println("test"); + // IPアドレスとポート番号を指定してクライアント側のソケットを作成 - init { - this.commands = commands - this.task = - object : BukkitRunnable() { - override fun run() { - var reader: BufferedReader? = null + // クライアント側からサーバへの送信用 - try { - Socket( - host, - port, - ).use { cSocket -> - PrintWriter(cSocket.getOutputStream(), true).use { writer -> - try { - // System.out.println("test"); - // IPアドレスとポート番号を指定してクライアント側のソケットを作成 + // サーバ側からの受取用 - // クライアント側からサーバへの送信用 + reader = BufferedReader(InputStreamReader(cSocket.getInputStream())) - // サーバ側からの受取用 + // 命令送信ループ + var cmd: String? = null + while (true) { + if (!commands.isEmpty()) { + cmd = commands[0] - reader = BufferedReader(InputStreamReader(cSocket.getInputStream())) + // 送信用の文字を送信 + writer.println(cmd) - // 命令送信ループ - var cmd: String? = null - while (true) { - if (!commands.isEmpty()) { - cmd = commands[0] - - // 送信用の文字を送信 - writer.println(cmd) - - // stopの入力でループを抜ける - if (cmd == "stop") { - break - } - - // サーバ側からの受取の結果を表示 - // System.out.println("result:" + reader.readLine()); - commands.removeAt(0) - } else { + // stopの入力でループを抜ける + if (cmd == "stop") { break } + + // サーバ側からの受取の結果を表示 + // System.out.println("result:" + reader.readLine()); + commands.removeAt(0) + } else { + break } - } catch (e: Exception) { - e.printStackTrace() } + } catch (e: Exception) { + e.printStackTrace() } } - } catch (e: IOException) { - e.printStackTrace() - } finally { - println("Client is stopped!") } + } catch (e: IOException) { + e.printStackTrace() + } finally { + println("Client is stopped!") } } - } + } fun startClient() { this.task.runTaskAsynchronously(plugin) } - fun addCommand(command: String?) { + fun addCommand(command: String) { commands.add(command) } } diff --git a/src/main/kotlin/be4rjp/sclat/server/StatusServer.kt b/src/main/kotlin/be4rjp/sclat/server/StatusServer.kt index 51a86e0c..597c152d 100644 --- a/src/main/kotlin/be4rjp/sclat/server/StatusServer.kt +++ b/src/main/kotlin/be4rjp/sclat/server/StatusServer.kt @@ -1,14 +1,14 @@ package be4rjp.sclat.server -import be4rjp.sclat.api.MessageType import be4rjp.sclat.api.SclatUtil import be4rjp.sclat.api.SclatUtil.sendMessage -import be4rjp.sclat.api.SoundType import be4rjp.sclat.manager.PlayerReturnManager import be4rjp.sclat.manager.PlayerStatusMgr import be4rjp.sclat.manager.RankMgr import be4rjp.sclat.manager.ServerStatusManager import be4rjp.sclat.plugin +import net.azisaba.sclat.core.enums.MessageType +import net.azisaba.sclat.core.enums.SoundType import org.bukkit.entity.Player import java.io.BufferedReader import java.io.IOException @@ -16,6 +16,7 @@ import java.io.InputStreamReader import java.io.PrintWriter import java.net.ServerSocket import java.net.Socket +import java.util.UUID class StatusServer( // private List commands = new ArrayList<>(); private val port: Int, @@ -88,7 +89,7 @@ internal class EchoThread( if (args[0] == "return" && args.size == 2) { if (args[1]!!.length == 36) { - PlayerReturnManager.addPlayerReturn(args[1]) + PlayerReturnManager.addPlayerReturn(UUID.fromString(args[1])) } } diff --git a/src/main/kotlin/be4rjp/sclat/tutorial/Tutorial.kt b/src/main/kotlin/be4rjp/sclat/tutorial/Tutorial.kt index 1ad7d809..8c22e110 100644 --- a/src/main/kotlin/be4rjp/sclat/tutorial/Tutorial.kt +++ b/src/main/kotlin/be4rjp/sclat/tutorial/Tutorial.kt @@ -1,10 +1,8 @@ package be4rjp.sclat.tutorial import be4rjp.sclat.Sclat -import be4rjp.sclat.api.MessageType import be4rjp.sclat.api.SclatUtil.playGameSound import be4rjp.sclat.api.SclatUtil.sendMessage -import be4rjp.sclat.api.SoundType import be4rjp.sclat.data.BlockUpdater import be4rjp.sclat.data.DataMgr.blockDataMap import be4rjp.sclat.data.DataMgr.getPlayerData @@ -17,6 +15,8 @@ import be4rjp.sclat.manager.PathMgr import be4rjp.sclat.manager.PlayerStatusMgr import be4rjp.sclat.plugin import be4rjp.sclat.server.StatusClient +import net.azisaba.sclat.core.enums.MessageType +import net.azisaba.sclat.core.enums.SoundType import org.bukkit.Bukkit import org.bukkit.ChatColor import org.bukkit.Location @@ -319,9 +319,11 @@ object Tutorial { fun sendPlayerRunnable(player: Player) { clearPlayerCount++ - val commands: MutableList = ArrayList() - commands.add("tutorial " + player.uniqueId.toString()) - commands.add("stop") + val commands: MutableList = + mutableListOf( + "tutorial " + player.uniqueId.toString(), + "stop", + ) val sc = StatusClient( Sclat.conf?.config!!.getString("StatusShare.Host"), @@ -382,7 +384,7 @@ object Tutorial { spongeMap.clear() // ------------------------------------------------------------ for (player in plugin.server.onlinePlayers) player.exp = 0.99f - val bur = BlockUpdater() + val bur = BlockUpdater(plugin) if (Sclat.conf?.config!!.contains("BlockUpdateRate")) { bur.setMaxBlockInOneTick( Sclat.conf?.config!!.getInt( diff --git a/src/main/kotlin/be4rjp/sclat/weapon/Blaster.kt b/src/main/kotlin/be4rjp/sclat/weapon/Blaster.kt index 75cb4125..8ded6217 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/Blaster.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/Blaster.kt @@ -5,7 +5,6 @@ import be4rjp.sclat.Sclat.Companion.notDuplicateNumber import be4rjp.sclat.api.SclatUtil.createInkExplosionEffect import be4rjp.sclat.api.SclatUtil.giveDamage import be4rjp.sclat.api.SclatUtil.repelBarrier -import be4rjp.sclat.api.Sphere.getSphere import be4rjp.sclat.data.DataMgr import be4rjp.sclat.data.DataMgr.getKasaDataFromArmorStand import be4rjp.sclat.data.DataMgr.getPlayerData @@ -13,10 +12,11 @@ import be4rjp.sclat.data.DataMgr.getSnowballHitCount import be4rjp.sclat.data.DataMgr.getSplashShieldDataFromArmorStand import be4rjp.sclat.data.DataMgr.mainSnowballNameMap import be4rjp.sclat.data.DataMgr.setSnowballHitCount -import be4rjp.sclat.extension.armorstands import be4rjp.sclat.manager.ArmorStandMgr import be4rjp.sclat.manager.PaintMgr import be4rjp.sclat.plugin +import net.azisaba.sclat.core.extension.armorstands +import net.azisaba.sclat.core.shape.Sphere.getSphere import org.bukkit.ChatColor import org.bukkit.GameMode import org.bukkit.Location diff --git a/src/main/kotlin/be4rjp/sclat/weapon/Charger.kt b/src/main/kotlin/be4rjp/sclat/weapon/Charger.kt index b941ecfe..de0200dc 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/Charger.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/Charger.kt @@ -1,7 +1,6 @@ package be4rjp.sclat.weapon import be4rjp.sclat.Sclat -import be4rjp.sclat.api.GaugeAPI.toGauge import be4rjp.sclat.api.SclatUtil import be4rjp.sclat.api.SclatUtil.giveDamage import be4rjp.sclat.api.SclatUtil.setPlayerFOV @@ -13,6 +12,7 @@ import be4rjp.sclat.data.DataMgr.getSplashShieldDataFromArmorStand import be4rjp.sclat.manager.ArmorStandMgr import be4rjp.sclat.manager.PaintMgr import be4rjp.sclat.plugin +import net.azisaba.sclat.core.gauge.GaugeAPI.toGauge import org.bukkit.ChatColor import org.bukkit.GameMode import org.bukkit.Material diff --git a/src/main/kotlin/be4rjp/sclat/weapon/Decoy.kt b/src/main/kotlin/be4rjp/sclat/weapon/Decoy.kt index a24b8d3d..c506a4ab 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/Decoy.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/Decoy.kt @@ -5,8 +5,8 @@ import be4rjp.sclat.api.player.PlayerData import be4rjp.sclat.data.DataMgr.blockDataMap import be4rjp.sclat.data.DataMgr.getPlayerData import be4rjp.sclat.plugin -import be4rjp.sclat.sclatLogger import com.mojang.authlib.GameProfile +import net.azisaba.sclat.core.DelegatedLogger import net.minecraft.server.v1_14_R1.DataWatcherRegistry import net.minecraft.server.v1_14_R1.EntityPlayer import net.minecraft.server.v1_14_R1.EntitySquid @@ -40,6 +40,8 @@ import org.bukkit.entity.Player import org.bukkit.scheduler.BukkitRunnable object Decoy { + private val logger by DelegatedLogger() + @JvmStatic fun decoyRunnable(player: Player) { val delay: BukkitRunnable = @@ -318,7 +320,7 @@ object Decoy { } catch (e: Exception) { as1!!.remove() cancel() - sclatLogger.warn(e.message) + logger.warn(e.message) } } } diff --git a/src/main/kotlin/be4rjp/sclat/weapon/Funnel.kt b/src/main/kotlin/be4rjp/sclat/weapon/Funnel.kt index d02f36bb..451cc439 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/Funnel.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/Funnel.kt @@ -12,9 +12,9 @@ import be4rjp.sclat.data.DataMgr.getPlayerData import be4rjp.sclat.data.DataMgr.getSplashShieldDataFromArmorStand import be4rjp.sclat.data.DataMgr.setKasaDataWithARmorStand import be4rjp.sclat.data.DataMgr.setKasaDataWithPlayer -import be4rjp.sclat.data.KasaData import be4rjp.sclat.manager.ArmorStandMgr import be4rjp.sclat.plugin +import net.azisaba.sclat.core.data.KasaData import net.minecraft.server.v1_14_R1.EnumItemSlot import net.minecraft.server.v1_14_R1.PacketPlayOutEntityEquipment import org.bukkit.GameMode diff --git a/src/main/kotlin/be4rjp/sclat/weapon/Hound.kt b/src/main/kotlin/be4rjp/sclat/weapon/Hound.kt index 4275dde8..8011eac2 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/Hound.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/Hound.kt @@ -6,7 +6,6 @@ import be4rjp.sclat.api.GlowingAPI import be4rjp.sclat.api.SclatUtil.createInkExplosionEffect import be4rjp.sclat.api.SclatUtil.giveDamage import be4rjp.sclat.api.SclatUtil.repelBarrier -import be4rjp.sclat.api.Sphere.getSphere import be4rjp.sclat.api.player.PlayerData import be4rjp.sclat.data.DataMgr.getKasaDataFromArmorStand import be4rjp.sclat.data.DataMgr.getPlayerData @@ -14,6 +13,7 @@ import be4rjp.sclat.data.DataMgr.getSplashShieldDataFromArmorStand import be4rjp.sclat.manager.ArmorStandMgr import be4rjp.sclat.manager.PaintMgr import be4rjp.sclat.plugin +import net.azisaba.sclat.core.shape.Sphere.getSphere import org.bukkit.ChatColor import org.bukkit.GameMode import org.bukkit.Location diff --git a/src/main/kotlin/be4rjp/sclat/weapon/Kasa.kt b/src/main/kotlin/be4rjp/sclat/weapon/Kasa.kt index 262710bc..c9bfffc8 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/Kasa.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/Kasa.kt @@ -12,11 +12,11 @@ import be4rjp.sclat.data.DataMgr.mainSnowballNameMap import be4rjp.sclat.data.DataMgr.setKasaDataWithARmorStand import be4rjp.sclat.data.DataMgr.setKasaDataWithPlayer import be4rjp.sclat.data.DataMgr.setSnowballHitCount -import be4rjp.sclat.data.KasaData import be4rjp.sclat.manager.MainWeaponMgr import be4rjp.sclat.manager.PaintMgr import be4rjp.sclat.manager.WeaponClassMgr import be4rjp.sclat.plugin +import net.azisaba.sclat.core.data.KasaData import net.minecraft.server.v1_14_R1.EnumItemSlot import net.minecraft.server.v1_14_R1.PacketPlayOutEntityEquipment import org.bukkit.ChatColor diff --git a/src/main/kotlin/be4rjp/sclat/weapon/Slosher.kt b/src/main/kotlin/be4rjp/sclat/weapon/Slosher.kt index 960a4c4a..244f9bbc 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/Slosher.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/Slosher.kt @@ -4,7 +4,6 @@ import be4rjp.sclat.Sclat import be4rjp.sclat.Sclat.Companion.notDuplicateNumber import be4rjp.sclat.api.SclatUtil.createInkExplosionEffect import be4rjp.sclat.api.SclatUtil.giveDamage -import be4rjp.sclat.api.Sphere.getSphere import be4rjp.sclat.data.DataMgr import be4rjp.sclat.data.DataMgr.getPlayerData import be4rjp.sclat.data.DataMgr.getSnowballHitCount @@ -13,6 +12,7 @@ import be4rjp.sclat.data.DataMgr.setSnowballHitCount import be4rjp.sclat.manager.ArmorStandMgr import be4rjp.sclat.manager.PaintMgr import be4rjp.sclat.plugin +import net.azisaba.sclat.core.shape.Sphere.getSphere import org.bukkit.ChatColor import org.bukkit.GameMode import org.bukkit.Particle diff --git a/src/main/kotlin/be4rjp/sclat/weapon/SnowballListener.kt b/src/main/kotlin/be4rjp/sclat/weapon/SnowballListener.kt index 793e052f..e4721034 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/SnowballListener.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/SnowballListener.kt @@ -3,7 +3,6 @@ package be4rjp.sclat.weapon import be4rjp.sclat.Sclat import be4rjp.sclat.api.SclatUtil import be4rjp.sclat.api.SclatUtil.giveDamage -import be4rjp.sclat.api.ServerType import be4rjp.sclat.data.DataMgr import be4rjp.sclat.data.DataMgr.addSnowballHitCount import be4rjp.sclat.data.DataMgr.getKasaDataFromArmorStand @@ -17,6 +16,7 @@ import be4rjp.sclat.manager.ArmorStandMgr import be4rjp.sclat.manager.PaintMgr import be4rjp.sclat.manager.SPWeaponMgr import be4rjp.sclat.plugin +import net.azisaba.sclat.core.enums.ServerType import net.minecraft.server.v1_14_R1.PacketPlayOutEntityDestroy import org.bukkit.GameMode import org.bukkit.Location diff --git a/src/main/kotlin/be4rjp/sclat/weapon/Spinner.kt b/src/main/kotlin/be4rjp/sclat/weapon/Spinner.kt index 319db93c..44cd865c 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/Spinner.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/Spinner.kt @@ -2,7 +2,6 @@ package be4rjp.sclat.weapon import be4rjp.sclat.Sclat import be4rjp.sclat.Sclat.Companion.notDuplicateNumber -import be4rjp.sclat.api.GaugeAPI.toGauge import be4rjp.sclat.data.DataMgr import be4rjp.sclat.data.DataMgr.getPlayerData import be4rjp.sclat.data.DataMgr.getSnowballHitCount @@ -10,6 +9,7 @@ import be4rjp.sclat.data.DataMgr.mainSnowballNameMap import be4rjp.sclat.data.DataMgr.setSnowballHitCount import be4rjp.sclat.manager.PaintMgr import be4rjp.sclat.plugin +import net.azisaba.sclat.core.gauge.GaugeAPI.toGauge import org.bukkit.ChatColor import org.bukkit.GameMode import org.bukkit.Material diff --git a/src/main/kotlin/be4rjp/sclat/weapon/spweapon/AirStrike.kt b/src/main/kotlin/be4rjp/sclat/weapon/spweapon/AirStrike.kt index 61178a5b..40635837 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/spweapon/AirStrike.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/spweapon/AirStrike.kt @@ -3,7 +3,6 @@ package be4rjp.sclat.weapon.spweapon import be4rjp.sclat.Sclat.Companion.notDuplicateNumber import be4rjp.sclat.api.SclatUtil.createInkExplosionEffect import be4rjp.sclat.api.SclatUtil.giveDamage -import be4rjp.sclat.api.Sphere.getSphere import be4rjp.sclat.api.raytrace.RayTrace import be4rjp.sclat.data.DataMgr.getPlayerData import be4rjp.sclat.manager.ArmorStandMgr @@ -12,6 +11,7 @@ import be4rjp.sclat.manager.PaintMgr import be4rjp.sclat.manager.SPWeaponMgr import be4rjp.sclat.manager.WeaponClassMgr import be4rjp.sclat.plugin +import net.azisaba.sclat.core.shape.Sphere.getSphere import org.bukkit.GameMode import org.bukkit.Location import org.bukkit.Material diff --git a/src/main/kotlin/be4rjp/sclat/weapon/spweapon/Amehurasi.kt b/src/main/kotlin/be4rjp/sclat/weapon/spweapon/Amehurasi.kt index 48d453bf..28741625 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/spweapon/Amehurasi.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/spweapon/Amehurasi.kt @@ -3,14 +3,14 @@ package be4rjp.sclat.weapon.spweapon import be4rjp.sclat.Sclat import be4rjp.sclat.Sclat.Companion.notDuplicateNumber import be4rjp.sclat.api.SclatUtil.giveDamage -import be4rjp.sclat.api.Sphere.getXZCircle import be4rjp.sclat.api.raytrace.RayTrace import be4rjp.sclat.data.DataMgr.getPlayerData import be4rjp.sclat.manager.ArmorStandMgr import be4rjp.sclat.manager.SPWeaponMgr import be4rjp.sclat.manager.WeaponClassMgr import be4rjp.sclat.plugin -import be4rjp.sclat.sclatLogger +import net.azisaba.sclat.core.DelegatedLogger +import net.azisaba.sclat.core.shape.Sphere.getXZCircle import org.bukkit.GameMode import org.bukkit.Location import org.bukkit.Material @@ -33,6 +33,8 @@ import java.util.Random * @author Be4rJP */ object Amehurasi { + private val logger by DelegatedLogger() + @JvmStatic fun amehurasiDropRunnable(player: Player) { val task: BukkitRunnable = @@ -114,7 +116,7 @@ object Amehurasi { } catch (e: Exception) { drop!!.remove() cancel() - sclatLogger.warn(e.message) + logger.warn(e.message) } } } @@ -246,7 +248,7 @@ object Amehurasi { c++ } catch (e: Exception) { cancel() - sclatLogger.warn(e.message) + logger.warn(e.message) } } } diff --git a/src/main/kotlin/be4rjp/sclat/weapon/spweapon/Barrier.kt b/src/main/kotlin/be4rjp/sclat/weapon/spweapon/Barrier.kt index b5022621..30701c99 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/spweapon/Barrier.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/spweapon/Barrier.kt @@ -1,10 +1,10 @@ package be4rjp.sclat.weapon.spweapon import be4rjp.sclat.Sclat -import be4rjp.sclat.api.Sphere.getSphere import be4rjp.sclat.data.DataMgr.getPlayerData import be4rjp.sclat.manager.SPWeaponMgr import be4rjp.sclat.plugin +import net.azisaba.sclat.core.shape.Sphere.getSphere import net.minecraft.server.v1_14_R1.EntityArmorStand import org.bukkit.GameMode import org.bukkit.Particle diff --git a/src/main/kotlin/be4rjp/sclat/weapon/spweapon/JetPack.kt b/src/main/kotlin/be4rjp/sclat/weapon/spweapon/JetPack.kt index 1c5f253b..8981ce83 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/spweapon/JetPack.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/spweapon/JetPack.kt @@ -5,7 +5,6 @@ import be4rjp.sclat.Sclat import be4rjp.sclat.Sclat.Companion.notDuplicateNumber import be4rjp.sclat.api.SclatUtil.createInkExplosionEffect import be4rjp.sclat.api.SclatUtil.giveDamage -import be4rjp.sclat.api.Sphere.getSphere import be4rjp.sclat.data.DataMgr.getPlayerData import be4rjp.sclat.data.DataMgr.getSnowballIsHit import be4rjp.sclat.data.DataMgr.setSnowballIsHit @@ -15,7 +14,8 @@ import be4rjp.sclat.manager.SPWeaponMgr import be4rjp.sclat.manager.SuperJumpMgr import be4rjp.sclat.manager.WeaponClassMgr import be4rjp.sclat.plugin -import be4rjp.sclat.sclatLogger +import net.azisaba.sclat.core.DelegatedLogger +import net.azisaba.sclat.core.shape.Sphere.getSphere import net.minecraft.server.v1_14_R1.EntityArmorStand import net.minecraft.server.v1_14_R1.PacketPlayOutEntityDestroy import net.minecraft.server.v1_14_R1.PacketPlayOutSpawnEntityLiving @@ -45,6 +45,8 @@ import org.bukkit.util.Vector * @author Be4rJP */ object JetPack { + private val logger by DelegatedLogger() + @JvmStatic fun jetPackRunnable(player: Player) { val api = BlockStudio.getBlockStudioAPI() @@ -539,7 +541,7 @@ object JetPack { } catch (e: Exception) { drop!!.remove() cancel() - sclatLogger.warn(e.message) + logger.warn(e.message) } } } diff --git a/src/main/kotlin/be4rjp/sclat/weapon/spweapon/LitterFiveG.kt b/src/main/kotlin/be4rjp/sclat/weapon/spweapon/LitterFiveG.kt index 1cd1b432..f562ae3e 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/spweapon/LitterFiveG.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/spweapon/LitterFiveG.kt @@ -4,7 +4,6 @@ import be4rjp.sclat.Sclat import be4rjp.sclat.api.SclatUtil import be4rjp.sclat.api.SclatUtil.createInkExplosionEffect import be4rjp.sclat.api.SclatUtil.giveDamage -import be4rjp.sclat.api.Sphere.getSphere import be4rjp.sclat.api.raytrace.BoundingBox import be4rjp.sclat.api.raytrace.RayTrace import be4rjp.sclat.data.DataMgr.getKasaDataFromArmorStand @@ -16,6 +15,7 @@ import be4rjp.sclat.manager.SPWeaponMgr import be4rjp.sclat.manager.WeaponClassMgr import be4rjp.sclat.plugin import be4rjp.sclat.weapon.Gear +import net.azisaba.sclat.core.shape.Sphere.getSphere import org.bukkit.GameMode import org.bukkit.Material import org.bukkit.Particle diff --git a/src/main/kotlin/be4rjp/sclat/weapon/spweapon/MultiMissile.kt b/src/main/kotlin/be4rjp/sclat/weapon/spweapon/MultiMissile.kt index 32f7cc53..a4865e9f 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/spweapon/MultiMissile.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/spweapon/MultiMissile.kt @@ -4,7 +4,6 @@ import be4rjp.sclat.Sclat import be4rjp.sclat.api.GlowingAPI.setGlowing import be4rjp.sclat.api.SclatUtil.createInkExplosionEffect import be4rjp.sclat.api.SclatUtil.giveDamage -import be4rjp.sclat.api.Sphere.getSphere import be4rjp.sclat.data.DataMgr.getPlayerData import be4rjp.sclat.data.DataMgr.getSnowballIsHit import be4rjp.sclat.data.DataMgr.setSnowballIsHit @@ -13,7 +12,8 @@ import be4rjp.sclat.manager.PaintMgr import be4rjp.sclat.manager.SPWeaponMgr import be4rjp.sclat.manager.WeaponClassMgr import be4rjp.sclat.plugin -import be4rjp.sclat.sclatLogger +import net.azisaba.sclat.core.DelegatedLogger +import net.azisaba.sclat.core.shape.Sphere.getSphere import net.minecraft.server.v1_14_R1.EntityArmorStand import net.minecraft.server.v1_14_R1.EntitySquid import net.minecraft.server.v1_14_R1.EntityTypes @@ -47,6 +47,8 @@ import org.bukkit.util.Vector * @author Be4rJP */ object MultiMissile { + private val logger by DelegatedLogger() + @JvmStatic fun mmLockRunnable(player: Player) { val task: BukkitRunnable = @@ -73,7 +75,7 @@ object MultiMissile { getPlayerData(p)!!.isUsingMM = true val nmsWorld = (p.world as CraftWorld).handle for (op in plugin.server.onlinePlayers) { - sclatLogger.debug("For player: ${op.name}") + logger.debug("For player: ${op.name}") if (getPlayerData(op)!!.isInMatch && op.world === p.world && (op.name != p.name) && @@ -93,7 +95,7 @@ object MultiMissile { .playerConnection .sendPacket(PacketPlayOutSpawnEntityLiving(es)) } else { - sclatLogger.debug("Player ${op.name} ignored.") + logger.debug("Player ${op.name} ignored.") } } for (armorStand in p.world.entities) { @@ -128,7 +130,7 @@ object MultiMissile { } } if (c != 0) { - sclatLogger.debug("Non-0 ticking for MultiMissile") + logger.debug("Non-0 ticking for MultiMissile") for (op in plugin.server.onlinePlayers) { if (getPlayerData(op)!!.isInMatch && op.world === p.world && @@ -142,7 +144,7 @@ object MultiMissile { es.setLocation(loc.x, loc.y, loc.z, loc.yaw, loc.pitch) val requireGlowing = mmCheckCanLock(p, op) setGlowing(es.bukkitEntity, p, requireGlowing) - sclatLogger.debug("Set grow for ${op.name} to $requireGlowing") + logger.debug("Set grow for ${op.name} to $requireGlowing") (p as CraftPlayer) .handle .playerConnection @@ -171,7 +173,7 @@ object MultiMissile { } } if (!getPlayerData(p)!!.isUsingMM || c == 200) { - sclatLogger.debug("Shoot!!! by MultiMissile") + logger.debug("Shoot!!! by MultiMissile") val targetList: MutableList = ArrayList() var count = 0 for (op in plugin.server.onlinePlayers) { @@ -194,7 +196,7 @@ object MultiMissile { targetList.add(op) count++ } else { - sclatLogger.debug("Ignored for ${op.name}") + logger.debug("Ignored for ${op.name}") } } } @@ -232,17 +234,17 @@ object MultiMissile { fireworksRunnable(p) SPWeaponMgr.setSPCoolTimeAnimation(p, 100) - sclatLogger.debug("Cancelled! after SPWeaponMgr") + logger.debug("Cancelled! after SPWeaponMgr") cancel() } if (!getPlayerData(p)!!.isInMatch || !p.isOnline || p.gameMode == GameMode.SPECTATOR) { getPlayerData(p)!!.isUsingSP = false - sclatLogger.debug("Cancelled! after disable usingSP") + logger.debug("Cancelled! after disable usingSP") cancel() } c++ } catch (e: Exception) { - sclatLogger.error("Failed to process lock", e) + logger.error("Failed to process lock", e) e.printStackTrace() cancel() } diff --git a/src/main/kotlin/be4rjp/sclat/weapon/spweapon/QuadroArms.kt b/src/main/kotlin/be4rjp/sclat/weapon/spweapon/QuadroArms.kt index d20ddf79..65151e08 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/spweapon/QuadroArms.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/spweapon/QuadroArms.kt @@ -4,7 +4,6 @@ import be4rjp.sclat.Sclat import be4rjp.sclat.Sclat.Companion.notDuplicateNumber import be4rjp.sclat.api.SclatUtil.createInkExplosionEffect import be4rjp.sclat.api.SclatUtil.giveDamage -import be4rjp.sclat.api.Sphere.getSphere import be4rjp.sclat.api.raytrace.RayTrace import be4rjp.sclat.data.DataMgr import be4rjp.sclat.data.DataMgr.getPlayerData @@ -18,7 +17,8 @@ import be4rjp.sclat.manager.PaintMgr import be4rjp.sclat.manager.SPWeaponMgr import be4rjp.sclat.manager.WeaponClassMgr import be4rjp.sclat.plugin -import be4rjp.sclat.sclatLogger +import net.azisaba.sclat.core.DelegatedLogger +import net.azisaba.sclat.core.shape.Sphere.getSphere import net.minecraft.server.v1_14_R1.PacketPlayOutEntityDestroy import org.bukkit.ChatColor import org.bukkit.Color @@ -49,6 +49,8 @@ import java.util.Random * @author Be4rJP */ object QuadroArms { + private val logger by DelegatedLogger() + private val Hash_Quadro_overheat = HashMap() @JvmStatic @@ -833,7 +835,7 @@ object QuadroArms { } catch (e: Exception) { cancel() drop!!.remove() - sclatLogger.warn(e.message) + logger.warn(e.message) } } } diff --git a/src/main/kotlin/be4rjp/sclat/weapon/spweapon/SuperShot.kt b/src/main/kotlin/be4rjp/sclat/weapon/spweapon/SuperShot.kt index f1ab50fa..1850ea2b 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/spweapon/SuperShot.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/spweapon/SuperShot.kt @@ -7,7 +7,7 @@ import be4rjp.sclat.manager.PaintMgr import be4rjp.sclat.manager.SPWeaponMgr import be4rjp.sclat.manager.WeaponClassMgr import be4rjp.sclat.plugin -import be4rjp.sclat.sclatLogger +import net.azisaba.sclat.core.DelegatedLogger import net.minecraft.server.v1_14_R1.PacketPlayOutEntityDestroy import org.bukkit.Location import org.bukkit.Material @@ -31,6 +31,8 @@ import java.util.Random * @author Be4rJP */ object SuperShot { + private val logger by DelegatedLogger() + @JvmStatic fun setSuperShot(player: Player) { getPlayerData(player)!!.isUsingSP = true @@ -207,7 +209,7 @@ object SuperShot { } catch (e: Exception) { drop!!.remove() cancel() - sclatLogger.warn(e.message) + logger.warn(e.message) } } } diff --git a/src/main/kotlin/be4rjp/sclat/weapon/spweapon/SuperTyakuti.kt b/src/main/kotlin/be4rjp/sclat/weapon/spweapon/SuperTyakuti.kt index e8d59077..447f3ec0 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/spweapon/SuperTyakuti.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/spweapon/SuperTyakuti.kt @@ -3,14 +3,14 @@ package be4rjp.sclat.weapon.spweapon import be4rjp.sclat.Sclat import be4rjp.sclat.api.SclatUtil.createInkExplosionEffect import be4rjp.sclat.api.SclatUtil.giveDamage -import be4rjp.sclat.api.Sphere.getSphere -import be4rjp.sclat.api.Sphere.getXZCircle import be4rjp.sclat.data.DataMgr.getPlayerData import be4rjp.sclat.manager.ArmorStandMgr import be4rjp.sclat.manager.PaintMgr import be4rjp.sclat.manager.SPWeaponMgr import be4rjp.sclat.manager.WeaponClassMgr import be4rjp.sclat.plugin +import net.azisaba.sclat.core.shape.Sphere.getSphere +import net.azisaba.sclat.core.shape.Sphere.getXZCircle import org.bukkit.GameMode import org.bukkit.Location import org.bukkit.Material diff --git a/src/main/kotlin/be4rjp/sclat/weapon/spweapon/SwordMord.kt b/src/main/kotlin/be4rjp/sclat/weapon/spweapon/SwordMord.kt index 0d6563b7..30db5b7d 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/spweapon/SwordMord.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/spweapon/SwordMord.kt @@ -3,7 +3,6 @@ package be4rjp.sclat.weapon.spweapon import be4rjp.sclat.Sclat import be4rjp.sclat.Sclat.Companion.notDuplicateNumber import be4rjp.sclat.api.SclatUtil.giveDamage -import be4rjp.sclat.api.Sphere.getSphere import be4rjp.sclat.api.raytrace.BoundingBox import be4rjp.sclat.api.raytrace.RayTrace import be4rjp.sclat.data.DataMgr @@ -13,12 +12,13 @@ import be4rjp.sclat.data.DataMgr.mainSnowballNameMap import be4rjp.sclat.data.DataMgr.setKasaDataWithARmorStand import be4rjp.sclat.data.DataMgr.setKasaDataWithPlayer import be4rjp.sclat.data.DataMgr.setSnowballHitCount -import be4rjp.sclat.data.KasaData import be4rjp.sclat.manager.ArmorStandMgr import be4rjp.sclat.manager.PaintMgr import be4rjp.sclat.manager.SPWeaponMgr import be4rjp.sclat.manager.WeaponClassMgr import be4rjp.sclat.plugin +import net.azisaba.sclat.core.data.KasaData +import net.azisaba.sclat.core.shape.Sphere.getSphere import org.bukkit.GameMode import org.bukkit.Location import org.bukkit.Material diff --git a/src/main/kotlin/be4rjp/sclat/weapon/subweapon/Boomerang.kt b/src/main/kotlin/be4rjp/sclat/weapon/subweapon/Boomerang.kt index 67a95733..53bf70b9 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/subweapon/Boomerang.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/subweapon/Boomerang.kt @@ -4,7 +4,6 @@ import be4rjp.sclat.Sclat import be4rjp.sclat.api.SclatUtil.createInkExplosionEffect import be4rjp.sclat.api.SclatUtil.giveDamage import be4rjp.sclat.api.SclatUtil.repelBarrier -import be4rjp.sclat.api.Sphere.getSphere import be4rjp.sclat.data.DataMgr.getKasaDataFromArmorStand import be4rjp.sclat.data.DataMgr.getPlayerData import be4rjp.sclat.data.DataMgr.getSplashShieldDataFromArmorStand @@ -12,6 +11,7 @@ import be4rjp.sclat.manager.ArmorStandMgr import be4rjp.sclat.manager.PaintMgr import be4rjp.sclat.plugin import be4rjp.sclat.weapon.Gear +import net.azisaba.sclat.core.shape.Sphere.getSphere import net.minecraft.server.v1_14_R1.EnumItemSlot import net.minecraft.server.v1_14_R1.PacketPlayOutEntityEquipment import org.bukkit.ChatColor diff --git a/src/main/kotlin/be4rjp/sclat/weapon/subweapon/CurlingBomb.kt b/src/main/kotlin/be4rjp/sclat/weapon/subweapon/CurlingBomb.kt index a58c891d..852eb818 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/subweapon/CurlingBomb.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/subweapon/CurlingBomb.kt @@ -4,7 +4,6 @@ import be4rjp.sclat.Sclat import be4rjp.sclat.api.SclatUtil.createInkExplosionEffect import be4rjp.sclat.api.SclatUtil.giveDamage import be4rjp.sclat.api.SclatUtil.repelBarrier -import be4rjp.sclat.api.Sphere.getSphere import be4rjp.sclat.data.DataMgr.getKasaDataFromArmorStand import be4rjp.sclat.data.DataMgr.getPlayerData import be4rjp.sclat.data.DataMgr.getSplashShieldDataFromArmorStand @@ -12,6 +11,7 @@ import be4rjp.sclat.manager.ArmorStandMgr import be4rjp.sclat.manager.PaintMgr import be4rjp.sclat.plugin import be4rjp.sclat.weapon.Gear +import net.azisaba.sclat.core.shape.Sphere.getSphere import net.minecraft.server.v1_14_R1.EnumItemSlot import net.minecraft.server.v1_14_R1.PacketPlayOutEntityEquipment import org.bukkit.ChatColor diff --git a/src/main/kotlin/be4rjp/sclat/weapon/subweapon/FloaterBomb.kt b/src/main/kotlin/be4rjp/sclat/weapon/subweapon/FloaterBomb.kt index 174af7cc..15117aed 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/subweapon/FloaterBomb.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/subweapon/FloaterBomb.kt @@ -5,7 +5,6 @@ import be4rjp.sclat.Sclat.Companion.notDuplicateNumber import be4rjp.sclat.api.SclatUtil.createInkExplosionEffect import be4rjp.sclat.api.SclatUtil.giveDamage import be4rjp.sclat.api.SclatUtil.repelBarrier -import be4rjp.sclat.api.Sphere.getSphere import be4rjp.sclat.api.packet.EntityPackets.sendDestroyEntities import be4rjp.sclat.data.DataMgr.getKasaDataFromArmorStand import be4rjp.sclat.data.DataMgr.getPlayerData @@ -15,8 +14,9 @@ import be4rjp.sclat.data.DataMgr.setSnowballIsHit import be4rjp.sclat.manager.ArmorStandMgr import be4rjp.sclat.manager.PaintMgr import be4rjp.sclat.plugin -import be4rjp.sclat.sclatLogger import be4rjp.sclat.weapon.Gear +import net.azisaba.sclat.core.DelegatedLogger +import net.azisaba.sclat.core.shape.Sphere.getSphere import org.bukkit.ChatColor import org.bukkit.GameMode import org.bukkit.Location @@ -35,6 +35,8 @@ import org.bukkit.util.Vector * @author Be4rJP */ object FloaterBomb { + private val logger by DelegatedLogger() + @JvmStatic fun floaterBombRunnable(player: Player) { val task: BukkitRunnable = @@ -284,7 +286,7 @@ object FloaterBomb { } catch (e: Exception) { drop!!.remove() cancel() - sclatLogger.warn(e.message) + logger.warn(e.message) } } } diff --git a/src/main/kotlin/be4rjp/sclat/weapon/subweapon/KBomb.kt b/src/main/kotlin/be4rjp/sclat/weapon/subweapon/KBomb.kt index 526f5de5..c02d45b6 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/subweapon/KBomb.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/subweapon/KBomb.kt @@ -5,7 +5,6 @@ import be4rjp.sclat.Sclat.Companion.notDuplicateNumber import be4rjp.sclat.api.SclatUtil.createInkExplosionEffect import be4rjp.sclat.api.SclatUtil.giveDamage import be4rjp.sclat.api.SclatUtil.repelBarrier -import be4rjp.sclat.api.Sphere.getSphere import be4rjp.sclat.data.DataMgr.getPlayerData import be4rjp.sclat.data.DataMgr.getSnowballIsHit import be4rjp.sclat.data.DataMgr.setSnowballIsHit @@ -13,8 +12,9 @@ import be4rjp.sclat.data.DataMgr.snowballNameMap import be4rjp.sclat.manager.ArmorStandMgr import be4rjp.sclat.manager.PaintMgr import be4rjp.sclat.plugin -import be4rjp.sclat.sclatLogger import be4rjp.sclat.weapon.Gear +import net.azisaba.sclat.core.DelegatedLogger +import net.azisaba.sclat.core.shape.Sphere.getSphere import net.minecraft.server.v1_14_R1.PacketPlayOutEntityDestroy import org.bukkit.ChatColor import org.bukkit.GameMode @@ -35,6 +35,8 @@ import org.bukkit.util.Vector * @author Be4rJP */ object KBomb { + private val logger by DelegatedLogger() + @JvmStatic fun kBomRunnable(player: Player) { val task: BukkitRunnable = @@ -219,7 +221,7 @@ object KBomb { } catch (e: Exception) { cancel() drop!!.remove() - sclatLogger.warn(e.message) + logger.warn(e.message) } } } diff --git a/src/main/kotlin/be4rjp/sclat/weapon/subweapon/Poison.kt b/src/main/kotlin/be4rjp/sclat/weapon/subweapon/Poison.kt index 41b85407..dc488ecb 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/subweapon/Poison.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/subweapon/Poison.kt @@ -2,13 +2,13 @@ package be4rjp.sclat.weapon.subweapon import be4rjp.sclat.Sclat import be4rjp.sclat.Sclat.Companion.notDuplicateNumber -import be4rjp.sclat.api.Sphere.getSphere import be4rjp.sclat.data.DataMgr.getPlayerData import be4rjp.sclat.data.DataMgr.getSnowballIsHit import be4rjp.sclat.data.DataMgr.setSnowballIsHit import be4rjp.sclat.plugin -import be4rjp.sclat.sclatLogger import be4rjp.sclat.weapon.Gear +import net.azisaba.sclat.core.DelegatedLogger +import net.azisaba.sclat.core.shape.Sphere.getSphere import net.minecraft.server.v1_14_R1.PacketPlayOutEntityDestroy import org.bukkit.ChatColor import org.bukkit.Color @@ -31,6 +31,8 @@ import org.bukkit.util.Vector * @author Be4rJP */ object Poison { + private val logger by DelegatedLogger() + @JvmStatic fun poisonRunnable(player: Player) { val task: BukkitRunnable = @@ -199,7 +201,7 @@ object Poison { } catch (e: Exception) { drop!!.remove() cancel() - sclatLogger.warn(e.message) + logger.warn(e.message) } } } diff --git a/src/main/kotlin/be4rjp/sclat/weapon/subweapon/QuickBomb.kt b/src/main/kotlin/be4rjp/sclat/weapon/subweapon/QuickBomb.kt index b17b236c..701dbcba 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/subweapon/QuickBomb.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/subweapon/QuickBomb.kt @@ -5,7 +5,6 @@ import be4rjp.sclat.Sclat.Companion.notDuplicateNumber import be4rjp.sclat.api.SclatUtil.createInkExplosionEffect import be4rjp.sclat.api.SclatUtil.giveDamage import be4rjp.sclat.api.SclatUtil.repelBarrier -import be4rjp.sclat.api.Sphere.getSphere import be4rjp.sclat.data.DataMgr.getKasaDataFromArmorStand import be4rjp.sclat.data.DataMgr.getPlayerData import be4rjp.sclat.data.DataMgr.getSnowballIsHit @@ -14,8 +13,9 @@ import be4rjp.sclat.data.DataMgr.setSnowballIsHit import be4rjp.sclat.manager.ArmorStandMgr import be4rjp.sclat.manager.PaintMgr import be4rjp.sclat.plugin -import be4rjp.sclat.sclatLogger import be4rjp.sclat.weapon.Gear +import net.azisaba.sclat.core.DelegatedLogger +import net.azisaba.sclat.core.shape.Sphere.getSphere import net.minecraft.server.v1_14_R1.PacketPlayOutEntityDestroy import org.bukkit.ChatColor import org.bukkit.GameMode @@ -36,6 +36,8 @@ import org.bukkit.util.Vector * @author Be4rJP */ object QuickBomb { + private val logger by DelegatedLogger() + @JvmStatic fun quickBomRunnable(player: Player) { val task: BukkitRunnable = @@ -234,7 +236,7 @@ object QuickBomb { } catch (e: Exception) { drop!!.remove() cancel() - sclatLogger.warn(e.message) + logger.warn(e.message) } } } diff --git a/src/main/kotlin/be4rjp/sclat/weapon/subweapon/Sensor.kt b/src/main/kotlin/be4rjp/sclat/weapon/subweapon/Sensor.kt index 195f61f2..15e591cc 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/subweapon/Sensor.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/subweapon/Sensor.kt @@ -2,13 +2,13 @@ package be4rjp.sclat.weapon.subweapon import be4rjp.sclat.Sclat import be4rjp.sclat.Sclat.Companion.notDuplicateNumber -import be4rjp.sclat.api.Sphere.getSphere import be4rjp.sclat.data.DataMgr.getPlayerData import be4rjp.sclat.data.DataMgr.getSnowballIsHit import be4rjp.sclat.data.DataMgr.setSnowballIsHit import be4rjp.sclat.plugin -import be4rjp.sclat.sclatLogger import be4rjp.sclat.weapon.Gear +import net.azisaba.sclat.core.DelegatedLogger +import net.azisaba.sclat.core.shape.Sphere.getSphere import net.minecraft.server.v1_14_R1.PacketPlayOutEntityDestroy import org.bukkit.ChatColor import org.bukkit.Color @@ -31,6 +31,8 @@ import org.bukkit.util.Vector * @author Be4rJP */ object Sensor { + private val logger by DelegatedLogger() + @JvmStatic fun sensorRunnable(player: Player) { val task: BukkitRunnable = @@ -197,7 +199,7 @@ object Sensor { } catch (e: Exception) { cancel() drop!!.remove() - sclatLogger.warn(e.message) + logger.warn(e.message) } } } diff --git a/src/main/kotlin/be4rjp/sclat/weapon/subweapon/SplashBomb.kt b/src/main/kotlin/be4rjp/sclat/weapon/subweapon/SplashBomb.kt index 319e0aeb..9a5d9682 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/subweapon/SplashBomb.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/subweapon/SplashBomb.kt @@ -5,13 +5,13 @@ import be4rjp.sclat.Sclat.Companion.notDuplicateNumber import be4rjp.sclat.api.SclatUtil.createInkExplosionEffect import be4rjp.sclat.api.SclatUtil.giveDamage import be4rjp.sclat.api.SclatUtil.repelBarrier -import be4rjp.sclat.api.Sphere.getSphere import be4rjp.sclat.data.DataMgr.getPlayerData import be4rjp.sclat.manager.ArmorStandMgr import be4rjp.sclat.manager.PaintMgr import be4rjp.sclat.plugin -import be4rjp.sclat.sclatLogger import be4rjp.sclat.weapon.Gear +import net.azisaba.sclat.core.DelegatedLogger +import net.azisaba.sclat.core.shape.Sphere.getSphere import org.bukkit.ChatColor import org.bukkit.GameMode import org.bukkit.Location @@ -28,6 +28,8 @@ import org.bukkit.scheduler.BukkitRunnable * @author Be4rJP */ object SplashBomb { + private val logger by DelegatedLogger() + @JvmStatic fun splashBomRunnable(player: Player) { val task: BukkitRunnable = @@ -161,7 +163,7 @@ object SplashBomb { } catch (e: Exception) { drop!!.remove() cancel() - sclatLogger.warn(e.message) + logger.warn(e.message) } } } diff --git a/src/main/kotlin/be4rjp/sclat/weapon/subweapon/Sprinkler.kt b/src/main/kotlin/be4rjp/sclat/weapon/subweapon/Sprinkler.kt index f97007ef..632107fa 100644 --- a/src/main/kotlin/be4rjp/sclat/weapon/subweapon/Sprinkler.kt +++ b/src/main/kotlin/be4rjp/sclat/weapon/subweapon/Sprinkler.kt @@ -8,8 +8,8 @@ import be4rjp.sclat.data.DataMgr.getSprinklerFromplayer import be4rjp.sclat.data.DataMgr.setSnowballIsHit import be4rjp.sclat.data.DataMgr.snowballNameMap import be4rjp.sclat.plugin -import be4rjp.sclat.sclatLogger import be4rjp.sclat.weapon.Gear +import net.azisaba.sclat.core.DelegatedLogger import net.minecraft.server.v1_14_R1.EnumItemSlot import net.minecraft.server.v1_14_R1.PacketPlayOutEntityDestroy import net.minecraft.server.v1_14_R1.PacketPlayOutEntityEquipment @@ -33,6 +33,8 @@ import org.bukkit.util.Vector * @author Be4rJP */ object Sprinkler { + private val logger by DelegatedLogger() + @JvmStatic fun sprinklerRunnable(player: Player) { val task: BukkitRunnable = @@ -150,7 +152,7 @@ object Sprinkler { } catch (e: Exception) { cancel() drop!!.remove() - sclatLogger.warn(e.message) + logger.warn(e.message) } } }