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.data.MainData
import me.faiz.combat_f.listener.MainListener
import org.bukkit.plugin.java.JavaPlugin
import java.util.*
import kotlin.collections.ArrayList
import kotlin.collections.HashMap
class Main:JavaPlugin() {
class Main : JavaPlugin() {
init{
var clist:HashMap<UUID,Pair<UUID,Long>> = HashMap()
init {
instance = this
}
val list: MutableList<Pair<String, String>> = ArrayList()
private val maindata by lazy { MainData(this) }
override fun onDisable() {
@ -17,7 +25,8 @@ class Main:JavaPlugin() {
}
override fun onEnable() {
MainCommand(this,maindata)
MainCommand(this, maindata)
MainListener(this, maindata)
}
companion object {

View File

@ -6,7 +6,7 @@ import me.faiz.combat_f.data.MainData
import me.faiz.combat_f.handler.MainHandler
import org.bukkit.entity.Player
class MainCommand(private val main: Main,private val data: MainData) {
class MainCommand(private val main: Main, private val data: MainData) {
init {
main.apply {
@ -14,10 +14,10 @@ class MainCommand(private val main: Main,private val data: MainData) {
register("combat") {
requires { isOp }
executes {
if(sender !is Player) {
if (sender !is Player) {
sender.sendMessage("This command can use Player! \n Please use another command!")
return@executes
}else MainHandler(sender as Player,data,main)
} else MainHandler(sender as Player, data, main)
}
}
}

View File

@ -4,29 +4,43 @@ import org.bukkit.configuration.file.YamlConfiguration
import org.bukkit.plugin.Plugin
import java.io.File
class MainData(private val plugin:Plugin) {
private val file get() = File(plugin.dataFolder,"data.yml")
class MainData(private val plugin: Plugin) {
private val file get() = File(plugin.dataFolder, "data.yml")
private val yaml = YamlConfiguration.loadConfiguration(file)
fun getUseWorld(uid:String):Boolean{
fun getUseWorld(uid: String): Boolean {
return yaml.getBoolean("$uid.use")
}
fun setUseWorld(uid:String,boolean: Boolean){
yaml.set("$uid.use",boolean)
fun setUseWorld(uid: String, boolean: Boolean) {
yaml.set("$uid.use", boolean)
}
fun getTimeWorld(uid:String):Int{
return if(yaml.getInt("$uid.time") == 0) -1 else yaml.getInt("$uid.time")
fun getTimeWorld(uid: String): Int {
return if (yaml.getInt("$uid.time") == 0) -1 else yaml.getInt("$uid.time")
}
fun setTimeWorld(uid:String,time:Int){
yaml.set("$uid.time",time)
fun setTimeWorld(uid: String, time: Int) {
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 save(){
fun getVisibleWorld(uid:String): Boolean{
return yaml.getBoolean("$uid.visible")
}
fun setVisibleWorld(uid: String, bool: Boolean){
yaml.set("$uid.visible",bool)
}
fun save() {
yaml.save(file)
}

View File

@ -4,6 +4,10 @@ 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 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.format.TextColor
import net.kyori.adventure.text.format.TextDecoration
@ -19,75 +23,121 @@ class MainHandler(pl: Player, private val data: MainData, main: Main) {
init {
// 메인 프레임 설정
val mFr = InvFX.frame(3, Component.text("컴뱃 GUI").decorate(TextDecoration.BOLD)){
val mFr = InvFX.frame(3, Component.text("컴뱃 GUI").decorate(TextDecoration.BOLD)) {
// 기초 아이템 설정
val useCombat = makeItem(Material.GRASS_BLOCK,"맵 선택").apply {
val useCombat = makeItem(Material.GRASS_BLOCK, "맵 선택").apply {
editMeta {
it.lore(listOf(Component.text("월드마다 컴뱃 사용 여부를 선택할 수 있습니다.")
.decoration(TextDecoration.ITALIC,false)
.color(TextColor.color(150,150,150))))
it.lore(
listOf(
Component.text("월드마다 컴뱃 사용 여부를 선택할 수 있습니다.")
.decoration(TextDecoration.ITALIC, false)
.color(TextColor.color(150, 150, 150))
)
)
}
}
val setTime = makeItem(Material.CLOCK,"시간 지정").apply {
editMeta{
it.lore(listOf(Component.text("월드마다 컴뱃 시간을 지정할 수 있습니다.")
.decoration(TextDecoration.ITALIC,false)
.color(TextColor.color(150,150,150))))
val setTime = makeItem(Material.CLOCK, "시간 지정").apply {
editMeta {
it.lore(
listOf(
Component.text("월드마다 컴뱃 시간을 지정할 수 있습니다.")
.decoration(TextDecoration.ITALIC, false)
.color(TextColor.color(150, 150, 150))
)
)
}
}
val hitOther = makeItem(Material.DIAMOND_SWORD,"다중 공격").apply {
editMeta{
it.lore(listOf(Component.text("컴뱃 중 다른사람의 개입을 허용/비허용을 지정할 수 있습니다.")
.decoration(TextDecoration.ITALIC,false)
.color(TextColor.color(150,150,150)),
val hitOther = makeItem(Material.DIAMOND_SWORD, "다중 공격").apply {
editMeta {
it.lore(
listOf(
Component.text("컴뱃 중 다른사람의 개입을 허용/비허용을 지정할 수 있습니다.")
.decoration(TextDecoration.ITALIC, false)
.color(TextColor.color(150, 150, 150)),
Component.text("월드 마다 지정 할 수 있습니다.")
.decoration(TextDecoration.ITALIC,false)
.color(TextColor.color(150,150,150))))
.decoration(TextDecoration.ITALIC, false)
.color(TextColor.color(150, 150, 150))
)
)
}
}
val visible = makeItem(Material.POTION,"전투 투시성").apply{
editMeta{
it.lore(listOf(Component.text("컴뱃 중 다른 사람 숨김/표시를 지정할 수 있습니다.")
.decoration(TextDecoration.ITALIC,false)
.color(TextColor.color(150,150,150)),
val visible = makeItem(Material.POTION, "전투 투시성").apply {
editMeta {
it.lore(
listOf(
Component.text("컴뱃 중 다른 사람 숨김/표시를 지정할 수 있습니다.")
.decoration(TextDecoration.ITALIC, false)
.color(TextColor.color(150, 150, 150)),
Component.text("월드 마다 지정 할 수 있습니다.")
.decoration(TextDecoration.ITALIC,false)
.color(TextColor.color(150,150,150))))
(it as PotionMeta).addCustomEffect(PotionEffect(PotionEffectType.INVISIBILITY,-1,0,false,false,true),true)
.decoration(TextDecoration.ITALIC, false)
.color(TextColor.color(150, 150, 150))
)
)
(it as PotionMeta).addCustomEffect(
PotionEffect(
PotionEffectType.INVISIBILITY,
-1,
0,
false,
false,
true
), true
)
}
}
// 아이템 설정
item(1,1,useCombat)
item(3,1,setTime)
item(5,1,hitOther)
item(7,1,visible)
item(1, 1, useCombat)
item(3, 1, setTime)
item(5, 1, hitOther)
item(7, 1, visible)
// 이벤트 설정
slot(1,1){
slot(1, 1) {
onClick {
it.whoClicked.closeInventory()
object: BukkitRunnable() {
object : BukkitRunnable() {
override fun run() {
UseHandler(it.whoClicked as Player,data)
UseHandler(it.whoClicked as Player, data)
}
}.runTaskLater(main, 1)
}
}
slot(3, 1) {
onClick {
it.whoClicked.closeInventory()
object : BukkitRunnable() {
override fun run() {
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)
}
}
slot(3,1){
onClick {
it.whoClicked.closeInventory()
object: BukkitRunnable(){
override fun run() {
TimeHandler(it.whoClicked as Player,data,main)
}
}
}
}
}
pl.openFrame(mFr)
}
@ -95,12 +145,13 @@ 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 itemMeta = item.itemMeta
itemMeta.displayName(Component.text(name)
itemMeta.displayName(
Component.text(name)
.decorate(TextDecoration.BOLD)
.decoration(TextDecoration.ITALIC,false)
.decoration(TextDecoration.ITALIC, false)
.color(color)
)
item.itemMeta = itemMeta

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)
}
}
}