Skip to content

Commit

Permalink
Refactor and some more MVVM and observer
Browse files Browse the repository at this point in the history
  • Loading branch information
makeevrserg committed Jul 10, 2022
1 parent ca98212 commit daf00a0
Show file tree
Hide file tree
Showing 30 changed files with 606 additions and 701 deletions.
26 changes: 11 additions & 15 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import java.util.Properties
import java.io.FileInputStream
object Kotlin {
const val version = "1.7.0"
const val coroutines = "1.6.3"
Expand All @@ -20,7 +18,7 @@ object Spigot {
}

group = "com.astrainteractive"
version = "2.1.0"
version = "2.2.0"
val name = "AstraTemplate"
description = "Template plugin from AstraInteractive"

Expand Down Expand Up @@ -75,30 +73,27 @@ dependencies {
implementation("com.charleskorn.kaml:kaml:${Kotlin.kaml}")
// AstraLibs
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))


// Test
testImplementation("org.jetbrains.kotlin:kotlin-test-junit:1.5.20")
testImplementation("junit:junit:4.13.2")
testImplementation("com.github.seeseemelk:MockBukkit-v1.18:2.26.0")
testImplementation("io.kotest:kotest-runner-junit5:5.3.1")
testImplementation("io.kotest:kotest-assertions-core:5.3.1")
testImplementation(kotlin("test"))
// Spigot dependencies
compileOnly("net.essentialsx:EssentialsX:${Spigot.essentials}")
compileOnly("io.papermc.paper:paper-api:${Spigot.version}")
compileOnly("org.spigotmc:spigot-api:${Spigot.version}")
compileOnly("org.spigotmc:spigot:${Spigot.version}")
// compileOnly("org.spigotmc:spigot-api:${Spigot.version}")
// compileOnly("org.spigotmc:spigot:${Spigot.version}")
compileOnly("com.comphenix.protocol:ProtocolLib:${Spigot.protocolLib}")
compileOnly("me.clip:placeholderapi:${Spigot.placeholderAPI}")
compileOnly("com.sk89q.worldguard:worldguard-bukkit:${Spigot.worldGuard}")
compileOnly("com.discordsrv:discordsrv:${Spigot.discordSRV}")
compileOnly("com.github.MilkBowl:VaultAPI:${Spigot.vault}")
compileOnly("net.coreprotect:coreprotect:${Spigot.coreProtect}")
compileOnly("com.ticxo.modelengine:api:${Spigot.modelEngine}")
// Test
testImplementation("junit:junit:4.13.1")
testImplementation("com.github.seeseemelk:MockBukkit-v1.18:1.24.1")
testImplementation("io.kotest:kotest-runner-junit5:latest.release")
testImplementation("io.kotest:kotest-assertions-core:latest.release")
testImplementation(kotlin("test"))
}



tasks {
withType<JavaCompile>() {
options.encoding = "UTF-8"
Expand Down Expand Up @@ -153,4 +148,5 @@ tasks.shadowJar {
from(project.configurations.runtimeClasspath)
minimize()
destinationDirectory.set(File("D:\\Minecraft Servers\\TEST_SERVER\\plugins"))
// destinationDirectory.set(File("/media/makeevrserg/Новый том/Servers/Server/plugins"))
}
1 change: 1 addition & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
kotlin.code.style=official
48 changes: 19 additions & 29 deletions src/main/kotlin/com/astrainteractive/astratemplate/AstraTemplate.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,34 +5,27 @@ import com.astrainteractive.astralibs.AstraLibs
import com.astrainteractive.astralibs.Logger
import com.astrainteractive.astralibs.ServerVersion
import com.astrainteractive.astralibs.events.GlobalEventManager
import com.astrainteractive.astratemplate.api.Api
import com.astrainteractive.astratemplate.api.TemplateApi
import com.astrainteractive.astratemplate.events.EventHandler
import com.astrainteractive.astratemplate.sqldatabase.Database
import com.astrainteractive.astratemplate.utils.PluginTranslation
import com.astrainteractive.astratemplate.utils.Files
import com.astrainteractive.astratemplate.utils.config.EmpireConfig
import com.astrainteractive.astratemplate.utils._Files
import com.astrainteractive.astratemplate.utils.EmpireConfig
import kotlinx.coroutines.runBlocking
import org.bukkit.event.HandlerList
import org.bukkit.plugin.java.JavaPlugin

/**
* Initial class for your plugin
*/
class AstraTemplate : JavaPlugin() {

/**
* Static objects of this class
*/
companion object {
lateinit var instance: AstraTemplate
private set
lateinit var translations: PluginTranslation
private set
lateinit var empireFiles: Files
private set
lateinit var pluginConfig: EmpireConfig
private set
lateinit var database: Database
private set
lateinit var database: Database
private set
companion object{
lateinit var instance:AstraTemplate
}
init {
instance = this
}

/**
Expand All @@ -54,14 +47,12 @@ class AstraTemplate : JavaPlugin() {
override fun onEnable() {
AstraLibs.rememberPlugin(this)
Logger.prefix = "AstraTemplate"
instance = this
translations = PluginTranslation()
empireFiles = Files()
PluginTranslation()
_Files()
eventHandler = EventHandler()
commandManager = CommandManager()
pluginConfig = EmpireConfig.new2()
Logger.log("$pluginConfig", tag = "EmpireConfig")
// database = Database().apply { onEnable() }
EmpireConfig.create()
database = Database().apply { runBlocking { onEnable() } }
Logger.log("Logger enabled", "AstraTemplate")
Logger.warn("Warn message from logger", "AstraTemplate")
Logger.error("Error message", "AstraTemplate")
Expand All @@ -72,18 +63,17 @@ class AstraTemplate : JavaPlugin() {
"Your server version is: ${ServerVersion.getServerVersion()}. This version is supported!",
"AstraTemplate"
)

Api.onEnable()
TemplateApi.onEnable()
}

/**
* This method called when server is shutting down or when PlugMan disable plugin.
*/
override fun onDisable() {
eventHandler.onDisable()
// database.onDisable()
// HandlerList.unregisterAll(this)
Api.onDisable()
runBlocking { database.onDisable() }
HandlerList.unregisterAll(this)
TemplateApi.onDisable()
GlobalEventManager.onDisable()
}

Expand Down
35 changes: 0 additions & 35 deletions src/main/kotlin/com/astrainteractive/astratemplate/api/Api.kt

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.astrainteractive.astratemplate.api

import org.bukkit.Material
import org.bukkit.inventory.ItemStack
import kotlin.random.Random

object TemplateApi {
fun randomItemStack(): ItemStack {
val values = Material.values()
val size = values.size
val i = Random.nextInt(size)
return ItemStack(values[i])
}
fun randomItemStackList(size: Int = 70) = IntRange(0, size).map { randomItemStack() }

fun onEnable() {
}

fun onDisable() {
}
}
Original file line number Diff line number Diff line change
@@ -1,77 +1,77 @@
package com.astrainteractive.astratemplate.commands

import CommandManager
import com.astrainteractive.astralibs.commands.AstraDSLCommand
import com.astrainteractive.astralibs.withEntry
import org.bukkit.Bukkit
import org.bukkit.Material
import org.bukkit.entity.Player
import org.bukkit.inventory.ItemStack


class AddCommand {
val newTabCompleter = AstraDSLCommand.onTabComplete("add") {
onType(0) {
return@onTabComplete Bukkit.getOnlinePlayers().map { it.name }.withEntry(it)
fun CommandManager.addCommandCompleter() = AstraDSLCommand.onTabComplete("add") {
onType(0) {
return@onTabComplete Bukkit.getOnlinePlayers().map { it.name }.withEntry(it)
}
onType(1) {
return@onTabComplete Material.values().map { it.name }.withEntry(it)
}
onType(2) {
return@onTabComplete IntRange(1, 64).map { it.toString() }.withEntry(it)
}
return@onTabComplete listOf()
}

/**
* Add {PLAYER} {ITEM} [AMOUNT]
*/
fun CommandManager.addCommand() = AstraDSLCommand.command("add") {
if (!sentByPlayer) {
sender.sendMessage("Sender should be player")
return@command
}
val player = player() {
onEmptyArgument {
println("onEmptyArgument")
}
onType(1) {
return@onTabComplete Material.values().map { it.name }.withEntry(it)
onWrongArgument {
println("onWrongArgument")
}
onType(2) {
return@onTabComplete IntRange(1, 64).map { it.toString() }.withEntry(it)
onResultNotFound {
println("onResultNotFound")
}
return@onTabComplete listOf()
}

/**
* Add {PLAYER} {ITEM} [AMOUNT]
*/
val addCommand = AstraDSLCommand.command("add") {
if (!sentByPlayer) {
sender.sendMessage("Sender should be player")
return@command
onFailure {
println("onFailure")
}
val player = player() {
onEmptyArgument {
println("onEmptyArgument")
}
onWrongArgument {
println("onWrongArgument")
}
onResultNotFound {
println("onResultNotFound")
}
onFailure {
println("onFailure")
}
} ?: return@command
val item = item() {
sender.sendMessage("Item not found")
} ?: return@command
val amount = getArgumentOrNull(2)?.toIntOrNull() ?: 1
player.inventory.addItem(item.apply
{ setAmount(amount) })
}
} ?: return@command
val item = item() {
sender.sendMessage("Item not found")
} ?: return@command
val amount = getArgumentOrNull(2)?.toIntOrNull() ?: 1
player.inventory.addItem(item.apply
{ setAmount(amount) })
}


fun AstraDSLCommand.DSLCommandBuilder.player(block: AstraDSLCommand.ArgumentResult.() -> Unit): Player? {
val argument = this.getArgumentOrNull(0) ?: run {
block(AstraDSLCommand.ArgumentResult(AstraDSLCommand.ArgumentStatus.Empty))
return null
}
return Bukkit.getPlayer(argument) ?: run {
block(AstraDSLCommand.ArgumentResult(AstraDSLCommand.ArgumentStatus.ResultNotFound))
null
}
private fun AstraDSLCommand.DSLCommandBuilder.player(block: AstraDSLCommand.ArgumentResult.() -> Unit): Player? {
val argument = this.getArgumentOrNull(0) ?: run {
block(AstraDSLCommand.ArgumentResult(AstraDSLCommand.ArgumentStatus.Empty))
return null
}
return Bukkit.getPlayer(argument) ?: run {
block(AstraDSLCommand.ArgumentResult(AstraDSLCommand.ArgumentStatus.ResultNotFound))
null
}
}

private fun AstraDSLCommand.DSLCommandBuilder.item(onNotFound: () -> Unit): ItemStack? {
val argument = getArgumentOrNull(1) ?: run {
onNotFound()
return null
}
val material = Material.matchMaterial(argument) ?: run {
onNotFound()
return null
}
return ItemStack(material)
private fun AstraDSLCommand.DSLCommandBuilder.item(onNotFound: () -> Unit): ItemStack? {
val argument = getArgumentOrNull(1) ?: run {
onNotFound()
return null
}
val material = Material.matchMaterial(argument) ?: run {
onNotFound()
return null
}
}
return ItemStack(material)
}
Loading

0 comments on commit daf00a0

Please sign in to comment.