This commit is contained in:
TONY_All 2022-10-18 02:08:18 +08:00
parent 72b3bd2033
commit 7b7849194c
11 changed files with 172 additions and 15 deletions

View File

@ -2,7 +2,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins { plugins {
kotlin("jvm") version "1.7.20" kotlin("jvm") version "1.7.20"
application id("io.izzel.taboolib") version "1.42"
} }
group = "cc.maxmc.blastingcrisis" group = "cc.maxmc.blastingcrisis"
@ -10,20 +10,33 @@ version = "1.0-SNAPSHOT"
repositories { repositories {
mavenCentral() mavenCentral()
maven("https://repo.maxmc.cn/repository/maven-snapshots/") {
name = "maxmc"
credentials(PasswordCredentials::class.java)
}
} }
dependencies { dependencies {
testImplementation(kotlin("test")) implementation(kotlin("stdlib"))
implementation("ink.ptms.core:v10800:10800")
} }
tasks.test { taboolib {
useJUnitPlatform() description {
contributors {
name("坏黑")
name("TONY_All")
}
}
install("common", "common-5")
install("platform-bukkit")
install("module-nms", "module-nms-util", "module-chat")
options("skip-kotlin-relocate")
version = "6.0.9-117"
} }
tasks.withType<KotlinCompile> { tasks.withType<KotlinCompile> {
kotlinOptions.jvmTarget = "1.8" kotlinOptions.jvmTarget = "1.8"
} }
application {
mainClass.set("MainKt")
}

View File

@ -1,7 +0,0 @@
fun main(args: Array<String>) {
println("Hello World!")
// Try adding program arguments via Run/Debug configuration.
// Learn more about running applications: https://www.jetbrains.com/help/idea/running-applications.html.
println("Program arguments: ${args.joinToString()}")
}

View File

@ -0,0 +1,11 @@
package cc.maxmc.blastingcrisis
import taboolib.common.platform.Plugin
object BlastingCrisis: Plugin() {
override fun onEnable() {
}
}

View File

@ -0,0 +1,5 @@
package cc.maxmc.blastingcrisis.game
class Game {
}

View File

@ -0,0 +1,2 @@
package cc.maxmc.blastingcrisis.game

View File

@ -0,0 +1,4 @@
package cc.maxmc.blastingcrisis.game
class GameTeam {
}

View File

@ -0,0 +1,5 @@
package cc.maxmc.blastingcrisis.map
class GameMap(val name: String,) {
}

View File

@ -0,0 +1,18 @@
package cc.maxmc.blastingcrisis.map
import cc.maxmc.blastingcrisis.misc.Area
object MapInitializer {
}
class MapInfo(
var name: String,
var waitArea: Area,
val teams: List<MapTeam>,
val maxPlayersPerTeam: Int,
) {
}

View File

@ -0,0 +1,17 @@
package cc.maxmc.blastingcrisis.map
import cc.maxmc.blastingcrisis.misc.Area
import org.bukkit.ChatColor
import org.bukkit.Location
data class MapTeam(
val name: String,
val color: ChatColor,
val spawn: Location,
val home: Area,
val wall: Area,
val mine: Area,
val sides: List<Area>,
val teleport: Area,
val upgrade: Location,
)

View File

@ -0,0 +1,84 @@
package cc.maxmc.blastingcrisis.misc
import org.bukkit.Location
import org.bukkit.Material
import org.bukkit.configuration.serialization.ConfigurationSerializable
import org.bukkit.configuration.serialization.SerializableAs
import kotlin.math.max
import kotlin.math.min
@SerializableAs("Area")
class Area(loc1: Location, loc2: Location) : ConfigurationSerializable {
val locTop: Location
val locMin: Location
constructor(map: Map<String, Any>) : this(map["locTop"] as Location, map["locMin"] as Location)
init {
if (loc1.world != loc2.world) throw IllegalArgumentException("Locations must be of the same world.")
locTop = Location(loc1.world, max(loc1.x, loc2.x), max(loc1.y, loc2.y), max(loc1.z, loc2.z))
locMin = Location(loc1.world, min(loc1.x, loc2.x), min(loc1.y, loc2.y), min(loc1.z, loc2.z))
}
/**
* check if the given location is in this area
*
* @param location location to check
*
* @return true if the location is in this area
*/
fun isInArea(location: Location): Boolean {
if (location.world != locTop.world) return false
if (location.x !in locTop.x..locMin.x) return false
if (location.y !in locTop.y..locMin.y) return false
if (location.z !in locTop.z..locMin.z) return false
return true
}
/**
* get all locations of the blocks in this area
*
* @return all locations of the blocks in this area
*/
fun forBlocksInArea(): List<Location> {
val blocks = arrayListOf<Location>()
for (x in locTop.blockX..locMin.blockX) {
for (y in locTop.blockY..locMin.blockY) {
for (z in locTop.blockZ..locMin.blockZ) {
blocks.add(Location(locTop.world, x.toDouble(), y.toDouble(), z.toDouble()))
}
}
}
return blocks
}
/**
* get all locations of the non air blocks in this area
*
* @return all locations of the non air blocks in this area
*/
fun forBlocksWithoutAir(): List<Location> {
return forBlocksInArea().filter { it.block.type != Material.AIR }
}
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false
other as Area
if (locTop != other.locTop) return false
if (locMin != other.locMin) return false
return true
}
override fun hashCode(): Int {
var result = locTop.hashCode()
result = 31 * result + locMin.hashCode()
return result
}
override fun serialize() = mutableMapOf<String, Any>("locTop" to locTop, "locMin" to locMin)
}

View File

@ -0,0 +1,5 @@
package cc.maxmc.blastingcrisis.misc
object GameManager {
}