From 8612e6a9e38f78d9b494cd02541c87d893ecaa6a Mon Sep 17 00:00:00 2001 From: faiz36 Date: Wed, 29 May 2024 00:38:02 +0900 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8Commit=20for=20Offline?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/me/faiz/combat_f/Main.kt | 10 +++++++ .../me/faiz/combat_f/listener/MainListener.kt | 30 +++++++++++++++++-- 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/me/faiz/combat_f/Main.kt b/src/main/kotlin/me/faiz/combat_f/Main.kt index c357d1f..bbb6b27 100644 --- a/src/main/kotlin/me/faiz/combat_f/Main.kt +++ b/src/main/kotlin/me/faiz/combat_f/Main.kt @@ -3,6 +3,7 @@ package me.faiz.combat_f import me.faiz.combat_f.cmd.MainCommand import me.faiz.combat_f.data.MainData import me.faiz.combat_f.listener.MainListener +import org.bukkit.Bukkit import org.bukkit.plugin.java.JavaPlugin import java.util.* import kotlin.collections.ArrayList @@ -10,6 +11,7 @@ import kotlin.collections.HashMap class Main : JavaPlugin() { + // Player UUID, A Pair of Attacker UUID and Current time var clist:HashMap> = HashMap() init { @@ -20,6 +22,14 @@ class Main : JavaPlugin() { private val maindata by lazy { MainData(this) } + private val scheduler = this.server.scheduler.runTaskTimerAsynchronously(this,Runnable{ + clist.forEach { + val wuid = Bukkit.getPlayer(it.key)!!.world.uid + if(it.value.second/1000 + maindata.getTimeWorld(wuid.toString()) <= System.currentTimeMillis()/1000){ + clist.remove(it.key) + } + } + },1L,1L) override fun onDisable() { maindata.save() } diff --git a/src/main/kotlin/me/faiz/combat_f/listener/MainListener.kt b/src/main/kotlin/me/faiz/combat_f/listener/MainListener.kt index a2f986c..bc6b92e 100644 --- a/src/main/kotlin/me/faiz/combat_f/listener/MainListener.kt +++ b/src/main/kotlin/me/faiz/combat_f/listener/MainListener.kt @@ -3,6 +3,7 @@ package me.faiz.combat_f.listener import io.papermc.paper.event.player.AsyncChatEvent import me.faiz.combat_f.Main import me.faiz.combat_f.data.MainData +import net.kyori.adventure.text.Component import org.bukkit.Bukkit import org.bukkit.entity.EntityType import org.bukkit.event.EventHandler @@ -29,11 +30,34 @@ class MainListener(private val main: Main, private val data: MainData) : Listene val entityD = main.clist[e.entity.uniqueId] val damagerD = main.clist[e.damager.uniqueId] if(main.clist.contains(e.entity.uniqueId)){ - if(data.getHitOtherWorld(e.entity.world.uid.toString())){ + if (data.getHitOtherWorld(e.entity.world.uid.toString())){ main.clist[e.entity.uniqueId] = Pair(e.damager.uniqueId,System.currentTimeMillis()) main.clist[e.damager.uniqueId] = Pair(e.entity.uniqueId,System.currentTimeMillis()) - }else if (entityD != damagerD){ - //TODO: IMPLEMENTS + return + } + if (entityD!!.first == e.damager.uniqueId){ + main.clist[e.entity.uniqueId] = Pair(e.damager.uniqueId,System.currentTimeMillis()) + main.clist[e.damager.uniqueId] = Pair(e.entity.uniqueId,System.currentTimeMillis()) + return + }else{ + e.isCancelled = true + e.damager.sendMessage(Component.text("해당 플레이어는 전투중입니다.")) + return + } + }else if(main.clist.contains(e.damager.uniqueId)){ + if (data.getHitOtherWorld(e.entity.world.uid.toString())){ + main.clist[e.entity.uniqueId] = Pair(e.damager.uniqueId,System.currentTimeMillis()) + main.clist[e.damager.uniqueId] = Pair(e.entity.uniqueId,System.currentTimeMillis()) + return + } + if(damagerD!!.first == e.entity.uniqueId){ + main.clist[e.entity.uniqueId] = Pair(e.damager.uniqueId,System.currentTimeMillis()) + main.clist[e.damager.uniqueId] = Pair(e.entity.uniqueId,System.currentTimeMillis()) + return + }else{ + e.isCancelled = true + e.damager.sendMessage(Component.text("이미 ${Bukkit.getPlayer(damagerD.first)!!.name}과 전투중입니다!")) + return } } }