Initial Commit

This commit is contained in:
faiz36 2024-05-13 23:47:28 +09:00
parent 1cea344643
commit a9788a7ec8
14 changed files with 599 additions and 221 deletions

10
.idea/.gitignore vendored
View File

@ -1,10 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
# GitHub Copilot persisted chat sessions
/copilot/chatSessions

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DiscordProjectSettings">
<option name="show" value="PROJECT_FILES" />
<option name="description" value="" />
</component>
</project>

View File

@ -2,14 +2,22 @@ package me.faiz.combat_f
import me.faiz.combat_f.cmd.MainCommand import me.faiz.combat_f.cmd.MainCommand
import me.faiz.combat_f.data.MainData import me.faiz.combat_f.data.MainData
import me.faiz.combat_f.listener.MainListener
import org.bukkit.plugin.java.JavaPlugin import org.bukkit.plugin.java.JavaPlugin
import java.util.*
import kotlin.collections.ArrayList
import kotlin.collections.HashMap
class Main : JavaPlugin() { class Main : JavaPlugin() {
var clist:HashMap<UUID,Pair<UUID,Long>> = HashMap()
init { init {
instance = this instance = this
} }
val list: MutableList<Pair<String, String>> = ArrayList()
private val maindata by lazy { MainData(this) } private val maindata by lazy { MainData(this) }
override fun onDisable() { override fun onDisable() {
@ -18,6 +26,7 @@ class Main:JavaPlugin() {
override fun onEnable() { override fun onEnable() {
MainCommand(this, maindata) MainCommand(this, maindata)
MainListener(this, maindata)
} }
companion object { companion object {

View File

@ -24,7 +24,21 @@ class MainData(private val plugin:Plugin) {
yaml.set("$uid.time", time) yaml.set("$uid.time", time)
} }
fun getHitOtherWorld(uid: String): Boolean {
return yaml.getBoolean("$uid.hitOther")
}
fun setHitOtherWorld(uid: String, bool: Boolean) {
yaml.set("$uid.hitOther", bool)
}
fun getVisibleWorld(uid:String): Boolean{
return yaml.getBoolean("$uid.visible")
}
fun setVisibleWorld(uid: String, bool: Boolean){
yaml.set("$uid.visible",bool)
}
fun save() { fun save() {
yaml.save(file) yaml.save(file)

View File

@ -4,6 +4,10 @@ import io.github.monun.invfx.InvFX
import io.github.monun.invfx.openFrame import io.github.monun.invfx.openFrame
import me.faiz.combat_f.Main import me.faiz.combat_f.Main
import me.faiz.combat_f.data.MainData import me.faiz.combat_f.data.MainData
import me.faiz.combat_f.handler.children.HitOtherHandler
import me.faiz.combat_f.handler.children.TimeHandler
import me.faiz.combat_f.handler.children.UseHandler
import me.faiz.combat_f.handler.children.VisibleHandler
import net.kyori.adventure.text.Component import net.kyori.adventure.text.Component
import net.kyori.adventure.text.format.TextColor import net.kyori.adventure.text.format.TextColor
import net.kyori.adventure.text.format.TextDecoration import net.kyori.adventure.text.format.TextDecoration
@ -23,40 +27,65 @@ class MainHandler(pl: Player, private val data: MainData, main: Main) {
// 기초 아이템 설정 // 기초 아이템 설정
val useCombat = makeItem(Material.GRASS_BLOCK, "맵 선택").apply { val useCombat = makeItem(Material.GRASS_BLOCK, "맵 선택").apply {
editMeta { editMeta {
it.lore(listOf(Component.text("월드마다 컴뱃 사용 여부를 선택할 수 있습니다.") it.lore(
listOf(
Component.text("월드마다 컴뱃 사용 여부를 선택할 수 있습니다.")
.decoration(TextDecoration.ITALIC, false) .decoration(TextDecoration.ITALIC, false)
.color(TextColor.color(150,150,150)))) .color(TextColor.color(150, 150, 150))
)
)
} }
} }
val setTime = makeItem(Material.CLOCK, "시간 지정").apply { val setTime = makeItem(Material.CLOCK, "시간 지정").apply {
editMeta { editMeta {
it.lore(listOf(Component.text("월드마다 컴뱃 시간을 지정할 수 있습니다.") it.lore(
listOf(
Component.text("월드마다 컴뱃 시간을 지정할 수 있습니다.")
.decoration(TextDecoration.ITALIC, false) .decoration(TextDecoration.ITALIC, false)
.color(TextColor.color(150,150,150)))) .color(TextColor.color(150, 150, 150))
)
)
} }
} }
val hitOther = makeItem(Material.DIAMOND_SWORD, "다중 공격").apply { val hitOther = makeItem(Material.DIAMOND_SWORD, "다중 공격").apply {
editMeta { editMeta {
it.lore(listOf(Component.text("컴뱃 중 다른사람의 개입을 허용/비허용을 지정할 수 있습니다.") it.lore(
listOf(
Component.text("컴뱃 중 다른사람의 개입을 허용/비허용을 지정할 수 있습니다.")
.decoration(TextDecoration.ITALIC, false) .decoration(TextDecoration.ITALIC, false)
.color(TextColor.color(150, 150, 150)), .color(TextColor.color(150, 150, 150)),
Component.text("월드 마다 지정 할 수 있습니다.") Component.text("월드 마다 지정 할 수 있습니다.")
.decoration(TextDecoration.ITALIC, false) .decoration(TextDecoration.ITALIC, false)
.color(TextColor.color(150,150,150)))) .color(TextColor.color(150, 150, 150))
)
)
} }
} }
val visible = makeItem(Material.POTION, "전투 투시성").apply { val visible = makeItem(Material.POTION, "전투 투시성").apply {
editMeta { editMeta {
it.lore(listOf(Component.text("컴뱃 중 다른 사람 숨김/표시를 지정할 수 있습니다.") it.lore(
listOf(
Component.text("컴뱃 중 다른 사람 숨김/표시를 지정할 수 있습니다.")
.decoration(TextDecoration.ITALIC, false) .decoration(TextDecoration.ITALIC, false)
.color(TextColor.color(150, 150, 150)), .color(TextColor.color(150, 150, 150)),
Component.text("월드 마다 지정 할 수 있습니다.") Component.text("월드 마다 지정 할 수 있습니다.")
.decoration(TextDecoration.ITALIC, false) .decoration(TextDecoration.ITALIC, false)
.color(TextColor.color(150,150,150)))) .color(TextColor.color(150, 150, 150))
(it as PotionMeta).addCustomEffect(PotionEffect(PotionEffectType.INVISIBILITY,-1,0,false,false,true),true) )
)
(it as PotionMeta).addCustomEffect(
PotionEffect(
PotionEffectType.INVISIBILITY,
-1,
0,
false,
false,
true
), true
)
} }
} }
// 아이템 설정 // 아이템 설정
@ -84,10 +113,31 @@ class MainHandler(pl: Player, private val data: MainData, main: Main) {
override fun run() { override fun run() {
TimeHandler(it.whoClicked as Player, data, main) TimeHandler(it.whoClicked as Player, data, main)
} }
} }.runTaskLater(main, 1)
} }
} }
slot(5, 1) {
onClick {
it.whoClicked.closeInventory()
object : BukkitRunnable() {
override fun run() {
HitOtherHandler(it.whoClicked as Player, data)
}
}.runTaskLater(main, 1)
}
}
slot(7, 1) {
onClick {
it.whoClicked.closeInventory()
object : BukkitRunnable() {
override fun run() {
VisibleHandler(it.whoClicked as Player, data)
}
}.runTaskLater(main,1)
}
}
} }
pl.openFrame(mFr) pl.openFrame(mFr)
} }
@ -98,7 +148,8 @@ class MainHandler(pl: Player, private val data: MainData, main: Main) {
private fun makeItem(material: Material, name: String, color: TextColor = TextColor.color(255, 255, 255)): ItemStack { private fun makeItem(material: Material, name: String, color: TextColor = TextColor.color(255, 255, 255)): ItemStack {
val item = ItemStack(material) val item = ItemStack(material)
val itemMeta = item.itemMeta val itemMeta = item.itemMeta
itemMeta.displayName(Component.text(name) itemMeta.displayName(
Component.text(name)
.decorate(TextDecoration.BOLD) .decorate(TextDecoration.BOLD)
.decoration(TextDecoration.ITALIC, false) .decoration(TextDecoration.ITALIC, false)
.color(color) .color(color)

View File

@ -1,32 +0,0 @@
package me.faiz.combat_f.handler
import io.github.monun.invfx.InvFX
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.Material
import org.bukkit.World
import org.bukkit.entity.Player
import org.bukkit.inventory.ItemStack
class TimeHandler(pl: Player, data: MainData, main: Main) {
init {
val tFr = InvFX.frame(6, Component.text("컴뱃 GUI - 시간 설정")){
var count = 0
Bukkit.getWorlds().forEach {
val worldTime = data.getTimeWorld(it.uid.toString())
val item = ItemStack(Material.AIR)
when(it.environment){
World.Environment.NORMAL -> item.type = Material.GRASS_BLOCK
World.Environment.NETHER -> item.type = Material.NETHERRACK
World.Environment.THE_END -> item.type = Material.END_STONE
World.Environment.CUSTOM -> item.type = Material.NETHER_PORTAL
}
}
}
}
}

View File

@ -1,105 +0,0 @@
package me.faiz.combat_f.handler
import io.github.monun.invfx.InvFX
import io.github.monun.invfx.openFrame
import me.faiz.combat_f.Main
import me.faiz.combat_f.data.MainData
import net.kyori.adventure.key.Key
import net.kyori.adventure.sound.Sound
import net.kyori.adventure.text.Component
import net.kyori.adventure.text.format.TextColor
import net.kyori.adventure.text.format.TextDecoration
import org.bukkit.Bukkit
import org.bukkit.Material
import org.bukkit.entity.Player
import org.bukkit.inventory.ItemStack
class UseHandler(pl: Player, data: MainData) {
init {
val uFr = InvFX.frame(6, Component.text("컴뱃 GUI - 맵 선택").decorate(TextDecoration.BOLD)){
var count = 0
Bukkit.getWorlds().forEach {
val useWorld = data.getUseWorld(it.uid.toString())
val item = ItemStack(Material.AIR)
when(it.environment.name){
"NORMAL" -> item.type = Material.GRASS_BLOCK
"NETHER" -> item.type = Material.NETHERRACK
"THE_END" -> item.type = Material.END_STONE
}
item.apply {
editMeta {item ->
item.displayName(Component.text(it.name).decoration(TextDecoration.ITALIC,false))
item.lore(listOf(Component.text("컴뱃 : ")
.decoration(TextDecoration.ITALIC,false)
.color(TextColor.color(150,150,150))
.append(if(useWorld) Component.text("사용중")
.decoration(TextDecoration.ITALIC,false)
.decorate(TextDecoration.BOLD)
.color(TextColor.color(0,255,0))
else Component.text("사용안함")
.decoration(TextDecoration.ITALIC,false)
.decorate(TextDecoration.BOLD)
.color(TextColor.color(255,0,0))
)
))
}
}
if(count == 0){
item(0,0,item)
slot(0,0){
onClick {e ->
e.whoClicked.playSound(Sound.sound(Key.key("entity.experience_orb.pickup"),Sound.Source.MASTER,1f,1f))
data.setUseWorld(it.uid.toString(),!data.getUseWorld(it.uid.toString()))
// main.logger.info(data.getUseWorld(it.uid.toString()).toString())
item.editMeta{item ->
item.lore(listOf(Component.text("컴뱃 : ")
.decoration(TextDecoration.ITALIC,false)
.color(TextColor.color(150,150,150))
.append(if(data.getUseWorld(it.uid.toString())) Component.text("사용중")
.decoration(TextDecoration.ITALIC,false)
.decorate(TextDecoration.BOLD)
.color(TextColor.color(0,255,0))
else Component.text("사용안함")
.decoration(TextDecoration.ITALIC,false)
.decorate(TextDecoration.BOLD)
.color(TextColor.color(255,0,0))
)
))
}
this.item = item
}
}
}else{
item(count%9, (count/9),item)
slot(count%9,count/9){
onClick { e ->
e.whoClicked.playSound(Sound.sound(Key.key("entity.experience_orb.pickup"),Sound.Source.MASTER,1f,1f))
data.setUseWorld(it.uid.toString(),!data.getUseWorld(it.uid.toString()))
// main.logger.info(data.getUseWorld(it.uid.toString()).toString())
item.editMeta{item ->
item.lore(listOf(Component.text("컴뱃 : ")
.decoration(TextDecoration.ITALIC,false)
.color(TextColor.color(150,150,150))
.append(if(data.getUseWorld(it.uid.toString())) Component.text("사용중")
.decoration(TextDecoration.ITALIC,false)
.decorate(TextDecoration.BOLD)
.color(TextColor.color(0,255,0))
else Component.text("사용안함")
.decoration(TextDecoration.ITALIC,false)
.decorate(TextDecoration.BOLD)
.color(TextColor.color(255,0,0))
)
))
}
this.item = item
}
}
}
count += 1
}
}
pl.openFrame(uFr)
}
}

View File

@ -0,0 +1,104 @@
package me.faiz.combat_f.handler.children
import io.github.monun.invfx.InvFX
import io.github.monun.invfx.openFrame
import me.faiz.combat_f.data.MainData
import net.kyori.adventure.key.Key
import net.kyori.adventure.sound.Sound
import net.kyori.adventure.text.Component
import net.kyori.adventure.text.format.TextColor
import net.kyori.adventure.text.format.TextDecoration
import org.bukkit.Bukkit
import org.bukkit.Material
import org.bukkit.World.Environment
import org.bukkit.entity.Player
import org.bukkit.inventory.ItemStack
class HitOtherHandler(pl: Player, data: MainData) {
init {
val hitOtherFr = InvFX.frame(6, Component.text("컴뱃 GUI - 다중 공격 설정")) {
var count = 0
Bukkit.getWorlds().forEach {
val worldVisible = data.getHitOtherWorld(it.uid.toString())
val witem = ItemStack(Material.AIR)
when (it.environment) {
Environment.NORMAL -> witem.type = Material.GRASS_BLOCK
Environment.NETHER -> witem.type = Material.NETHERRACK
Environment.THE_END -> witem.type = Material.END_STONE
Environment.CUSTOM -> witem.type = Material.NETHER_PORTAL
}
witem.apply {
editMeta { im ->
im.displayName(Component.text(it.name).decoration(TextDecoration.ITALIC, false))
im.lore(
listOf(
Component.text("다중 공격 : ")
.decoration(TextDecoration.ITALIC, false)
.color(TextColor.color(150, 150, 150))
.append(
if (worldVisible) {
Component.text("사용")
.decorate(TextDecoration.BOLD)
.decoration(TextDecoration.ITALIC, false)
.color(TextColor.color(0, 255, 0))
} else {
Component.text("사용 안함")
.decorate(TextDecoration.BOLD)
.decoration(TextDecoration.ITALIC, false)
.color(TextColor.color(255, 0, 0))
}
)
)
)
}
}
item(count % 9, count / 9, witem)
slot(count % 9, count / 9) {
onClick { e ->
e.whoClicked.playSound(
Sound.sound(
Key.key("entity.experience_orb.pickup"),
Sound.Source.MASTER,
1f,
1f
)
)
data.setHitOtherWorld(it.uid.toString(), !data.getHitOtherWorld(it.uid.toString()))
witem.editMeta { im ->
im.lore(
listOf(
Component.text("다중 공격 : ")
.decoration(TextDecoration.ITALIC, false)
.color(TextColor.color(150, 150, 150))
.append(
if (data.getHitOtherWorld(it.uid.toString())) {
Component.text("사용")
.decoration(TextDecoration.ITALIC, false)
.decorate(TextDecoration.BOLD)
.color(TextColor.color(0, 255, 0))
} else {
Component.text("사용 안함")
.decoration(TextDecoration.ITALIC, false)
.decorate(TextDecoration.BOLD)
.color(TextColor.color(255, 0, 0))
}
)
)
)
}
item = witem
}
}
count += 1
}
}
pl.openFrame(hitOtherFr)
}
}

View File

@ -0,0 +1,77 @@
package me.faiz.combat_f.handler.children
import io.github.monun.invfx.InvFX
import io.github.monun.invfx.openFrame
import me.faiz.combat_f.Main
import me.faiz.combat_f.data.MainData
import net.kyori.adventure.text.Component
import net.kyori.adventure.text.format.TextColor
import net.kyori.adventure.text.format.TextDecoration
import org.bukkit.Bukkit
import org.bukkit.Material
import org.bukkit.World
import org.bukkit.entity.Player
import org.bukkit.inventory.ItemStack
class TimeHandler(pl: Player, data: MainData, main: Main) {
init {
val bold = TextDecoration.BOLD
val gray = TextColor.color(150, 150, 150)
val tFr = InvFX.frame(6, Component.text("컴뱃 GUI - 시간 설정").decorate(bold)) {
var count = 0
Bukkit.getWorlds().forEach {
val worldTime = data.getTimeWorld(it.uid.toString())
val item = ItemStack(Material.AIR)
when (it.environment) {
World.Environment.NORMAL -> item.type = Material.GRASS_BLOCK
World.Environment.NETHER -> item.type = Material.NETHERRACK
World.Environment.THE_END -> item.type = Material.END_STONE
World.Environment.CUSTOM -> item.type = Material.NETHER_PORTAL
}
item.apply {
editMeta { im ->
val italic = TextDecoration.ITALIC
im.displayName(Component.text(it.name).decoration(italic, false))
im.lore(
listOf(
Component.text("컴뱃 시간 : ")
.decoration(italic, false)
.decorate(bold)
.color(gray)
.append(
if (worldTime == -1) Component.text("지정되지 않음")
.decoration(italic, false)
.decorate(bold)
.color(TextColor.color(255, 0, 0))
else Component.text(worldTime)
.decoration(italic, false)
.decorate(bold)
.color(TextColor.color(255, 255, 255))
.append(
Component.text("")
.decorate(bold)
.decoration(italic, false)
.color(TextColor.color(255, 255, 255))
)
)
)
)
}
}
item(count % 9, count / 9, item)
slot(count % 9, count / 9) {
onClick { e ->
e.whoClicked.closeInventory()
e.whoClicked.sendMessage("채팅에 양수를 넣어주세요! (다른걸 넣을시 취소됩니다.)")
main.list.add(Pair(e.whoClicked.uniqueId.toString(), it.uid.toString()))
// main.list.add(e.whoClicked.uniqueId.toString())
}
}
count += 1
}
}
pl.openFrame(tFr)
}
}

View File

@ -0,0 +1,99 @@
package me.faiz.combat_f.handler.children
import io.github.monun.invfx.InvFX
import io.github.monun.invfx.openFrame
import me.faiz.combat_f.data.MainData
import net.kyori.adventure.key.Key
import net.kyori.adventure.sound.Sound
import net.kyori.adventure.text.Component
import net.kyori.adventure.text.format.TextColor
import net.kyori.adventure.text.format.TextDecoration
import org.bukkit.Bukkit
import org.bukkit.Material
import org.bukkit.World
import org.bukkit.entity.Player
import org.bukkit.inventory.ItemStack
class UseHandler(pl: Player, data: MainData) {
init {
val italic = TextDecoration.ITALIC
val bold = TextDecoration.BOLD
val gray = TextColor.color(150, 150, 150)
val uFr = InvFX.frame(6, Component.text("컴뱃 GUI - 맵 선택").decorate(bold)) {
var count = 0
Bukkit.getWorlds().forEach {
val useWorld = data.getUseWorld(it.uid.toString())
val item = ItemStack(Material.AIR)
when (it.environment) {
World.Environment.NORMAL -> item.type = Material.GRASS_BLOCK
World.Environment.NETHER -> item.type = Material.NETHERRACK
World.Environment.THE_END -> item.type = Material.END_STONE
World.Environment.CUSTOM -> item.type = Material.NETHER_PORTAL
}
val green = TextColor.color(0, 255, 0)
val red = TextColor.color(255, 0, 0)
item.apply {
editMeta { item ->
item.displayName(Component.text(it.name).decoration(italic, false))
item.lore(
listOf(
Component.text("컴뱃 : ")
.decoration(italic, false)
.color(gray)
.append(
if (useWorld) Component.text("사용")
.decoration(italic, false)
.decorate(bold)
.color(green)
else Component.text("사용 안함")
.decoration(italic, false)
.decorate(bold)
.color(red)
)
)
)
}
}
item(count % 9, (count / 9), item)
slot(count % 9, count / 9) {
onClick { e ->
e.whoClicked.playSound(
Sound.sound(
Key.key("entity.experience_orb.pickup"),
Sound.Source.MASTER,
1f,
1f
)
)
data.setUseWorld(it.uid.toString(), !data.getUseWorld(it.uid.toString()))
// main.logger.info(data.getUseWorld(it.uid.toString()).toString())
item.editMeta { item ->
item.lore(
listOf(
Component.text("컴뱃 : ")
.decoration(italic, false)
.color(gray)
.append(
if (data.getUseWorld(it.uid.toString())) Component.text("사용중")
.decoration(italic, false)
.decorate(bold)
.color(green)
else Component.text("사용 안함")
.decoration(italic, false)
.decorate(bold)
.color(red)
)
)
)
}
this.item = item
}
}
count += 1
}
}
pl.openFrame(uFr)
}
}

View File

@ -0,0 +1,102 @@
package me.faiz.combat_f.handler.children
import io.github.monun.invfx.InvFX
import io.github.monun.invfx.openFrame
import me.faiz.combat_f.data.MainData
import net.kyori.adventure.key.Key
import net.kyori.adventure.sound.Sound
import net.kyori.adventure.text.Component
import net.kyori.adventure.text.format.TextColor
import net.kyori.adventure.text.format.TextDecoration
import org.bukkit.Bukkit
import org.bukkit.Material
import org.bukkit.World.Environment
import org.bukkit.entity.Player
import org.bukkit.inventory.ItemStack
class VisibleHandler(pl: Player, data: MainData) {
init {
val italic = TextDecoration.ITALIC
val vFr = InvFX.frame(6, Component.text("컴뱃 GUI - 전투 투시성").decorate(TextDecoration.BOLD)) {
var count = 0
Bukkit.getWorlds().forEach {
val vWorld = data.getVisibleWorld(it.uid.toString())
val item = ItemStack(Material.AIR)
when (it.environment) {
Environment.NORMAL -> item.type = Material.GRASS_BLOCK
Environment.NETHER -> item.type = Material.NETHERRACK
Environment.THE_END -> item.type = Material.END_STONE
Environment.CUSTOM -> item.type = Material.NETHER_PORTAL
}
item.apply {
editMeta { item ->
item.displayName(Component.text(it.name).decoration(italic, false))
item.lore(
listOf(
Component.text("전투 투시성 : ")
.decoration(italic, false)
.color(
TextColor.color(150, 150, 150)
).append(
if (vWorld) {
Component.text("사용")
.decoration(italic, false)
.decorate(TextDecoration.BOLD)
.color(TextColor.color(0, 255, 0))
} else {
Component.text("사용 안함")
.decoration(italic, false)
.decorate(TextDecoration.BOLD)
.color(TextColor.color(255, 0, 0))
}
)
)
)
}
item(count % 9, count / 9, item)
slot(count % 9, count / 9) {
onClick { e ->
e.whoClicked.playSound(
Sound.sound(
Key.key("entity.experience_orb.pickup"),
Sound.Source.MASTER,
1f,
1f
)
)
data.setVisibleWorld(it.uid.toString(), !data.getVisibleWorld(it.uid.toString()))
item.editMeta { item ->
item.lore(
listOf(
Component.text("전투 투시성 : ")
.decoration(italic, false)
.color(
TextColor.color(150, 150, 150)
).append(
if (data.getVisibleWorld(it.uid.toString())) {
Component.text("사용")
.decoration(italic, false)
.decorate(TextDecoration.BOLD)
.color(TextColor.color(0, 255, 0))
} else {
Component.text("사용 안함")
.decoration(italic, false)
.decorate(TextDecoration.BOLD)
.color(TextColor.color(255, 0, 0))
}
)
)
)
}
}
this.item = item
}
count += 1
}
}
}
pl.openFrame(vFr)
}
}

View File

@ -0,0 +1,41 @@
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 org.bukkit.Bukkit
import org.bukkit.entity.EntityType
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.entity.EntityDamageByEntityEvent
@Suppress("unused")
class MainListener(private val main: Main, private val data: MainData) : Listener {
init {
Bukkit.getPluginManager().registerEvents(this, main)
}
@EventHandler
fun onChat(e: AsyncChatEvent) {
OnAsyncChat(e, main, data)
}
@EventHandler
fun onDamage(e: EntityDamageByEntityEvent){
if(e.entityType != EntityType.PLAYER) return
if(e.damager.type != EntityType.PLAYER) return
if(!data.getUseWorld(e.entity.world.uid.toString())) return
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())){
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
}
}
}
}

View File

@ -0,0 +1,35 @@
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 me.faiz.combat_f.handler.children.TimeHandler
import net.kyori.adventure.key.Key
import net.kyori.adventure.sound.Sound
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer
import org.bukkit.scheduler.BukkitRunnable
class OnAsyncChat(e: AsyncChatEvent, main: Main, data: MainData) {
init {
var player = false
var index = -1
main.list.forEach {
if (it.first == e.player.uniqueId.toString()) player = true;index = main.list.lastIndexOf(it)
}
if (player) {
val message = PlainTextComponentSerializer.plainText().serialize(e.message()).toIntOrNull()
if (message != null) {
val time = message.toInt()
if (0 < time) data.setTimeWorld(main.list[index].second, time)
e.player.playSound(Sound.sound(Key.key("entity.experience_orb.pickup"), Sound.Source.MASTER, 1f, 1f))
}
e.isCancelled = true
main.list.removeAt(index)
object : BukkitRunnable() {
override fun run() {
TimeHandler(e.player, data, main)
}
}.runTaskLater(main, 1)
}
}
}