This commit is contained in:
user 2023-03-31 15:10:37 +09:00
parent 28799cadeb
commit e3393fdc4c
5 changed files with 28 additions and 15 deletions

View File

@ -1,6 +1,6 @@
plugins { plugins {
kotlin("jvm") version "1.8.0" kotlin("jvm") version "1.8.0"
id("io.papermc.paperweight.userdev") version "1.5.3" // id("io.papermc.paperweight.userdev") version "1.5.3"
} }
group = "group.pvpconnect" group = "group.pvpconnect"
@ -8,6 +8,7 @@ version = "1.0-SNAPSHOT"
repositories { repositories {
mavenCentral() mavenCentral()
maven("https://repo.papermc.io/repository/maven-public/")
} }
java { java {
@ -16,7 +17,8 @@ java {
dependencies { dependencies {
testImplementation(kotlin("test")) testImplementation(kotlin("test"))
paperweight.paperDevBundle("1.19.2-R0.1-SNAPSHOT") compileOnly("io.papermc.paper:paper-api:1.19.2-R0.1-SNAPSHOT")
// paperweight.paperDevBundle("1.19.2-R0.1-SNAPSHOT")
implementation("io.github.monun:kommand-api:3.1.3") implementation("io.github.monun:kommand-api:3.1.3")
} }

View File

@ -3,20 +3,21 @@ package group.pvpconnect.combat_f
import group.pvpconnect.combat_f.cmd.CombatCmd import group.pvpconnect.combat_f.cmd.CombatCmd
import group.pvpconnect.combat_f.data.CombatData import group.pvpconnect.combat_f.data.CombatData
import group.pvpconnect.combat_f.event.CombatEvent import group.pvpconnect.combat_f.event.CombatEvent
import net.kyori.adventure.text.Component
import org.bukkit.Bukkit import org.bukkit.Bukkit
import org.bukkit.ChatColor import org.bukkit.ChatColor
import org.bukkit.plugin.java.JavaPlugin import org.bukkit.plugin.java.JavaPlugin
import org.bukkit.scheduler.BukkitTask import org.bukkit.scheduler.BukkitTask
import java.util.UUID import java.util.*
@Suppress("unused") @Suppress("unused")
class Main:JavaPlugin() { class Main:JavaPlugin() {
// 첫번째 전투 여부, 두번째 전투자 UUID, 남은 시간? // 첫번째 전투 여부, 두번째 전투자 UUID, 남은 시간?
var list:HashMap<UUID,Triple<Boolean,UUID?,Long?>> = HashMap() var list:HashMap<UUID,Triple<Boolean,UUID?,Long?>> = HashMap()
lateinit var schedule:BukkitTask private lateinit var schedule:BukkitTask
lateinit var instance: Main lateinit var instance: Main
val combatData by lazy { CombatData(this) } private val combatData by lazy { CombatData(this) }
override fun onLoad() { override fun onLoad() {
instance = this instance = this
@ -38,8 +39,7 @@ class Main:JavaPlugin() {
Bukkit.getOnlinePlayers().forEach{ Bukkit.getOnlinePlayers().forEach{
if(list[it.uniqueId] == null) return@forEach if(list[it.uniqueId] == null) return@forEach
if(!list[it.uniqueId]!!.first) return@forEach if(!list[it.uniqueId]!!.first) return@forEach
it.sendActionBar(Component.text("${ChatColor.WHITE}${Bukkit.getPlayer(list[it.uniqueId]!!.second!!)!!.name}${ChatColor.RED}님과 전투중입니다! ${ChatColor.WHITE}${list[it.uniqueId]!!.third!! /1000 + combatData.instance.getTime() - System.currentTimeMillis()/1000}${ChatColor.RED}초 뒤 전투모드가 끝납니다!"))
it.sendActionBar("${ChatColor.WHITE}${Bukkit.getPlayer(list[it.uniqueId]!!.second!!)!!.name}${ChatColor.RED}님과 전투중입니다! ${ChatColor.WHITE}${list[it.uniqueId]!!.third!! /1000 + combatData.instance.getTime() - System.currentTimeMillis()/1000}${ChatColor.RED}초 뒤 전투모드가 끝납니다!")
} }
},1L,1L) },1L,1L)
} }

View File

@ -19,7 +19,7 @@ class CombatCmd(plugin:Plugin, val cd:CombatData) {
val world: World by it val world: World by it
val bool = cd.instance.getUseWorld(world.name) val bool = cd.instance.getUseWorld(world.name)
cd.instance.setUseWorld(world.name,!bool) cd.instance.setUseWorld(world.name,!bool)
sender.sendMessage("${ChatColor.BOLD}${ChatColor.GOLD}[${ChatColor.GREEN}${ChatColor.GOLD}] ${ChatColor.WHITE}${world.name}의 컴뱃 모드 사용이 ${if(bool)"활성화 되었습니다!" else "비활성화 되었습니다!"}") sender.sendMessage("${ChatColor.BOLD}${ChatColor.GOLD}[${ChatColor.GREEN}${ChatColor.GOLD}] ${ChatColor.WHITE}${world.name}의 컴뱃 모드 사용이 ${if(!bool)"활성화 되었습니다!" else "비활성화 되었습니다!"}")
} }
} }
} }
@ -29,7 +29,7 @@ class CombatCmd(plugin:Plugin, val cd:CombatData) {
val world:World by it val world:World by it
val bool = cd.instance.getCanSeeWorld(world.name) val bool = cd.instance.getCanSeeWorld(world.name)
cd.instance.setCanSeeWorld(world.name,!bool) cd.instance.setCanSeeWorld(world.name,!bool)
sender.sendMessage("${ChatColor.BOLD}${ChatColor.GOLD}[${ChatColor.GREEN}${ChatColor.GOLD}] ${ChatColor.WHITE}${world.name}의 컴뱃중 다른 사람 볼수있음이 ${if(bool)"활성화 되었습니다!" else "비활성화 되었습니다!"}") sender.sendMessage("${ChatColor.BOLD}${ChatColor.GOLD}[${ChatColor.GREEN}${ChatColor.GOLD}] ${ChatColor.WHITE}${world.name}의 컴뱃중 다른 사람 볼수있음이 ${if(!bool)"활성화 되었습니다!" else "비활성화 되었습니다!"}")
} }
} }
} }
@ -40,7 +40,7 @@ class CombatCmd(plugin:Plugin, val cd:CombatData) {
val otime = cd.instance.getTime() val otime = cd.instance.getTime()
val ctime = int val ctime = int
cd.instance.setTime(ctime) cd.instance.setTime(ctime)
sender.sendMessage("${ChatColor.BOLD}${ChatColor.GOLD}[${ChatColor.GREEN}${ChatColor.GOLD}] ${ChatColor.WHITE}컴뱃타임이 ${otime}에서 ${ctime}으로 변경되었습니다!") sender.sendMessage("${ChatColor.BOLD}${ChatColor.GOLD}[${ChatColor.GREEN}${ChatColor.GOLD}] ${ChatColor.WHITE}컴뱃타임이 ${otime}에서 ${ctime}으로 변경되었습니다!")
} }
} }
} }

View File

@ -11,10 +11,19 @@ class CombatData(val plugin:Plugin) {
private val file get() = File(plugin.dataFolder, "data.yml") private val file get() = File(plugin.dataFolder, "data.yml")
private val yaml = YamlConfiguration.loadConfiguration(file) private val yaml = YamlConfiguration.loadConfiguration(file)
/** Return use that World CombatSystem.
* @return return use that World CombatSystem.
* @param world get world name
*/
fun getUseWorld(world:String):Boolean{ fun getUseWorld(world:String):Boolean{
return yaml.getBoolean("${world}.use") return yaml.getBoolean("${world}.use")
} }
/**
* Set use CombatSystem that World.
* @param world world name
* @param use use Boolean
*/
fun setUseWorld(world:String,use:Boolean){ fun setUseWorld(world:String,use:Boolean){
yaml.set("${world}.use",use) yaml.set("${world}.use",use)
} }
@ -35,4 +44,8 @@ class CombatData(val plugin:Plugin) {
return yaml.getInt("time") return yaml.getInt("time")
} }
fun save(){
yaml.save(file)
}
} }

View File

@ -2,18 +2,15 @@ package group.pvpconnect.combat_f.event
import group.pvpconnect.combat_f.Main import group.pvpconnect.combat_f.Main
import group.pvpconnect.combat_f.data.CombatData import group.pvpconnect.combat_f.data.CombatData
import net.kyori.adventure.text.Component
import org.bukkit.Bukkit import org.bukkit.Bukkit
import org.bukkit.entity.EntityType import org.bukkit.entity.EntityType
import org.bukkit.entity.Player
import org.bukkit.event.EventHandler import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority
import org.bukkit.event.Listener import org.bukkit.event.Listener
import org.bukkit.event.entity.EntityDamageByEntityEvent import org.bukkit.event.entity.EntityDamageByEntityEvent
import org.bukkit.event.entity.PlayerDeathEvent import org.bukkit.event.entity.PlayerDeathEvent
import org.bukkit.event.player.PlayerCommandPreprocessEvent
import org.bukkit.event.player.PlayerQuitEvent import org.bukkit.event.player.PlayerQuitEvent
@Suppress("unused")
class CombatEvent(private val plugin:Main, private val combatData: CombatData):Listener { class CombatEvent(private val plugin:Main, private val combatData: CombatData):Listener {
init { init {
@ -22,15 +19,16 @@ class CombatEvent(private val plugin:Main, private val combatData: CombatData):L
@EventHandler @EventHandler
fun onDamage(e:EntityDamageByEntityEvent){ fun onDamage(e:EntityDamageByEntityEvent){
if(!combatData.instance.getUseWorld(e.entity.world.name)) return
if(e.entityType != EntityType.PLAYER) return if(e.entityType != EntityType.PLAYER) return
if(e.damager.type != EntityType.PLAYER) return if(e.damager.type != EntityType.PLAYER) return
val list = plugin.instance.list[e.entity.uniqueId]
plugin.instance.list[e.entity.uniqueId] = Triple(true,e.damager.uniqueId,System.currentTimeMillis()) plugin.instance.list[e.entity.uniqueId] = Triple(true,e.damager.uniqueId,System.currentTimeMillis())
plugin.instance.list[e.damager.uniqueId] = Triple(true,e.entity.uniqueId,System.currentTimeMillis()) plugin.instance.list[e.damager.uniqueId] = Triple(true,e.entity.uniqueId,System.currentTimeMillis())
} }
@EventHandler @EventHandler
fun onOtherDamage(e:EntityDamageByEntityEvent){ fun onOtherDamage(e:EntityDamageByEntityEvent){
if(!combatData.instance.getUseWorld(e.entity.world.name)) return
if(e.entityType != EntityType.PLAYER) return if(e.entityType != EntityType.PLAYER) return
if(e.damager.type != EntityType.PLAYER) return if(e.damager.type != EntityType.PLAYER) return
val list = plugin.instance.list[e.entity.uniqueId] ?: return val list = plugin.instance.list[e.entity.uniqueId] ?: return