✨Initial Commit
This commit is contained in:
parent
1cea344643
commit
a9788a7ec8
10
.idea/.gitignore
vendored
10
.idea/.gitignore
vendored
@ -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
|
@ -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>
|
@ -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() {
|
||||
|
||||
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() {
|
||||
@ -18,6 +26,7 @@ class Main:JavaPlugin() {
|
||||
|
||||
override fun onEnable() {
|
||||
MainCommand(this, maindata)
|
||||
MainListener(this, maindata)
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
@ -24,7 +24,21 @@ class MainData(private val plugin:Plugin) {
|
||||
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() {
|
||||
yaml.save(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
|
||||
@ -23,40 +27,65 @@ class MainHandler(pl: Player, private val data: MainData, main: Main) {
|
||||
// 기초 아이템 설정
|
||||
val useCombat = makeItem(Material.GRASS_BLOCK, "맵 선택").apply {
|
||||
editMeta {
|
||||
it.lore(listOf(Component.text("월드마다 컴뱃 사용 여부를 선택할 수 있습니다.")
|
||||
it.lore(
|
||||
listOf(
|
||||
Component.text("월드마다 컴뱃 사용 여부를 선택할 수 있습니다.")
|
||||
.decoration(TextDecoration.ITALIC, false)
|
||||
.color(TextColor.color(150,150,150))))
|
||||
.color(TextColor.color(150, 150, 150))
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
val setTime = makeItem(Material.CLOCK, "시간 지정").apply {
|
||||
editMeta {
|
||||
it.lore(listOf(Component.text("월드마다 컴뱃 시간을 지정할 수 있습니다.")
|
||||
it.lore(
|
||||
listOf(
|
||||
Component.text("월드마다 컴뱃 시간을 지정할 수 있습니다.")
|
||||
.decoration(TextDecoration.ITALIC, false)
|
||||
.color(TextColor.color(150,150,150))))
|
||||
.color(TextColor.color(150, 150, 150))
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
val hitOther = makeItem(Material.DIAMOND_SWORD, "다중 공격").apply {
|
||||
editMeta {
|
||||
it.lore(listOf(Component.text("컴뱃 중 다른사람의 개입을 허용/비허용을 지정할 수 있습니다.")
|
||||
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))))
|
||||
.color(TextColor.color(150, 150, 150))
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
val visible = makeItem(Material.POTION, "전투 투시성").apply {
|
||||
editMeta {
|
||||
it.lore(listOf(Component.text("컴뱃 중 다른 사람 숨김/표시를 지정할 수 있습니다.")
|
||||
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)
|
||||
.color(TextColor.color(150, 150, 150))
|
||||
)
|
||||
)
|
||||
(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() {
|
||||
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)
|
||||
}
|
||||
@ -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 {
|
||||
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)
|
||||
.color(color)
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -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)
|
||||
}
|
||||
|
||||
}
|
@ -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)
|
||||
}
|
||||
|
||||
}
|
@ -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)
|
||||
}
|
||||
|
||||
}
|
@ -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)
|
||||
}
|
||||
|
||||
}
|
@ -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)
|
||||
}
|
||||
|
||||
}
|
41
src/main/kotlin/me/faiz/combat_f/listener/MainListener.kt
Normal file
41
src/main/kotlin/me/faiz/combat_f/listener/MainListener.kt
Normal 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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
35
src/main/kotlin/me/faiz/combat_f/listener/OnAsyncChat.kt
Normal file
35
src/main/kotlin/me/faiz/combat_f/listener/OnAsyncChat.kt
Normal 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)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user