✨다시 집에서 만든, 이번엔 괜찮은
This commit is contained in:
parent
53f44071cc
commit
28799cadeb
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -3,12 +3,17 @@ package group.pvpconnect.combat_f
|
||||
import group.pvpconnect.combat_f.cmd.CombatCmd
|
||||
import group.pvpconnect.combat_f.data.CombatData
|
||||
import group.pvpconnect.combat_f.event.CombatEvent
|
||||
import org.bukkit.Bukkit
|
||||
import org.bukkit.ChatColor
|
||||
import org.bukkit.plugin.java.JavaPlugin
|
||||
import org.bukkit.scheduler.BukkitTask
|
||||
import java.util.UUID
|
||||
|
||||
@Suppress("unused")
|
||||
class Main:JavaPlugin() {
|
||||
var list:HashMap<UUID,Pair<UUID?,Long?>> = HashMap()
|
||||
// 첫번째 전투 여부, 두번째 전투자 UUID, 남은 시간?
|
||||
var list:HashMap<UUID,Triple<Boolean,UUID?,Long?>> = HashMap()
|
||||
lateinit var schedule:BukkitTask
|
||||
lateinit var instance: Main
|
||||
|
||||
val combatData by lazy { CombatData(this) }
|
||||
@ -17,9 +22,26 @@ class Main:JavaPlugin() {
|
||||
instance = this
|
||||
}
|
||||
|
||||
override fun onDisable() {
|
||||
schedule.cancel()
|
||||
}
|
||||
|
||||
override fun onEnable() {
|
||||
CombatCmd(this,combatData)
|
||||
CombatEvent(this,combatData)
|
||||
schedule = this.server.scheduler.runTaskTimerAsynchronously(this, Runnable {
|
||||
list.forEach{
|
||||
if(it.value.third!!/1000 + combatData.instance.getTime() <= System.currentTimeMillis()/1000){
|
||||
list[it.key] = Triple(false,null,null)
|
||||
}
|
||||
}
|
||||
Bukkit.getOnlinePlayers().forEach{
|
||||
if(list[it.uniqueId] == null) return@forEach
|
||||
if(!list[it.uniqueId]!!.first) return@forEach
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
}
|
@ -2,10 +2,12 @@ package group.pvpconnect.combat_f.event
|
||||
|
||||
import group.pvpconnect.combat_f.Main
|
||||
import group.pvpconnect.combat_f.data.CombatData
|
||||
import net.kyori.adventure.text.Component
|
||||
import org.bukkit.Bukkit
|
||||
import org.bukkit.entity.EntityType
|
||||
import org.bukkit.entity.Player
|
||||
import org.bukkit.event.EventHandler
|
||||
import org.bukkit.event.EventPriority
|
||||
import org.bukkit.event.Listener
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent
|
||||
import org.bukkit.event.entity.PlayerDeathEvent
|
||||
@ -22,86 +24,43 @@ class CombatEvent(private val plugin:Main, private val combatData: CombatData):L
|
||||
fun onDamage(e:EntityDamageByEntityEvent){
|
||||
if(e.entityType != EntityType.PLAYER) return
|
||||
if(e.damager.type != EntityType.PLAYER) return
|
||||
val player:Player = e.entity as Player
|
||||
val damager:Player = e.damager as Player
|
||||
plugin.instance.list[e.entity.uniqueId] = Pair(e.damager.uniqueId,System.currentTimeMillis()/1000)
|
||||
plugin.instance.list[e.damager.uniqueId] = Pair(e.entity.uniqueId,System.currentTimeMillis()/1000)
|
||||
if(combatData.instance.getCanSeeWorld(player.world.name)) {
|
||||
Bukkit.getOnlinePlayers().forEach {
|
||||
it.hidePlayer(plugin, player)
|
||||
it.hidePlayer(plugin, damager)
|
||||
if (it.uniqueId == player.uniqueId || it.uniqueId == damager.uniqueId) return
|
||||
player.hidePlayer(plugin, it)
|
||||
damager.hidePlayer(plugin, it)
|
||||
}
|
||||
}
|
||||
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.damager.uniqueId] = Triple(true,e.entity.uniqueId,System.currentTimeMillis())
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
fun onOtherDamage(e:EntityDamageByEntityEvent){
|
||||
val list = plugin.instance.list[e.entity.uniqueId] ?: return
|
||||
val time = list.second ?: return
|
||||
val ctime = combatData.instance.getTime()
|
||||
if(e.entityType != EntityType.PLAYER) return
|
||||
if(e.damager.type != EntityType.PLAYER) return
|
||||
if(time + ctime >= System.currentTimeMillis()/1000){
|
||||
val list = plugin.instance.list[e.entity.uniqueId] ?: return
|
||||
if(!list.first) return
|
||||
if(list.second == e.damager.uniqueId) {
|
||||
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())
|
||||
return
|
||||
}else{
|
||||
e.isCancelled = true
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
fun onCommand(e:PlayerCommandPreprocessEvent){
|
||||
val time = plugin.instance.list[e.player.uniqueId]?.second ?: return
|
||||
val ctime = combatData.instance.getTime()
|
||||
if(time + ctime >= System.currentTimeMillis() /1000){
|
||||
e.isCancelled = true
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
fun onLeave(e:PlayerQuitEvent){
|
||||
fun onQuit(e:PlayerQuitEvent){
|
||||
val list = plugin.instance.list[e.player.uniqueId] ?: return
|
||||
val time = list.second ?: return
|
||||
val killer = list.first ?: return
|
||||
val player = e.player
|
||||
val killerP = Bukkit.getPlayer(killer)
|
||||
val ctime = combatData.instance.getTime()
|
||||
if(time + ctime >= System.currentTimeMillis() /1000){
|
||||
e.player.killer = Bukkit.getPlayer(plugin.instance.list[e.player.uniqueId]!!.first!!)
|
||||
e.player.health = 0.0
|
||||
plugin.instance.list[e.player.uniqueId] = Pair(null,null)
|
||||
plugin.instance.list[killer] = Pair(null,null)
|
||||
}
|
||||
if(combatData.instance.getCanSeeWorld(player.world.name)) {
|
||||
Bukkit.getOnlinePlayers().forEach {
|
||||
it.showPlayer(plugin, player)
|
||||
it.showPlayer(plugin, killerP!!)
|
||||
if (it.uniqueId == player.uniqueId || it.uniqueId == killer) return
|
||||
player.showPlayer(plugin, it)
|
||||
killerP.showPlayer(plugin, it)
|
||||
}
|
||||
}
|
||||
if(!list.first) return
|
||||
e.player.killer = Bukkit.getPlayer(list.second!!)
|
||||
e.player.health = 0.0
|
||||
plugin.instance.list[e.player.uniqueId] = Triple(false,null,null)
|
||||
plugin.instance.list[list.second!!] = Triple(false,null,null)
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
fun onKill(e:PlayerDeathEvent){
|
||||
val ctime = combatData.instance.getTime()
|
||||
fun onDeath(e:PlayerDeathEvent){
|
||||
val list = plugin.instance.list[e.player.uniqueId] ?: return
|
||||
val time = list.second ?: return
|
||||
val killer = list.first ?: return
|
||||
if(time + ctime <= System.currentTimeMillis() /1000){
|
||||
plugin.instance.list[e.player.uniqueId] = Pair(null,null)
|
||||
plugin.instance.list[killer] = Pair(null,null)
|
||||
if(combatData.instance.getCanSeeWorld(e.player.world.name)) {
|
||||
Bukkit.getOnlinePlayers().forEach {
|
||||
it.showPlayer(plugin, e.player)
|
||||
it.showPlayer(plugin, e.player.killer!!)
|
||||
if (it.uniqueId == e.player.uniqueId || it.uniqueId == killer) return
|
||||
e.player.showPlayer(plugin, it)
|
||||
e.player.killer!!.showPlayer(plugin, it)
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!list.first) return
|
||||
plugin.instance.list[e.player.uniqueId] = Triple(false,null,null)
|
||||
plugin.instance.list[list.second!!] = Triple(false,null,null)
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user