✨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.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() {
|
||||||
|
|
||||||
init{
|
var clist:HashMap<UUID,Pair<UUID,Long>> = HashMap()
|
||||||
|
|
||||||
|
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() {
|
||||||
@ -17,7 +25,8 @@ class Main:JavaPlugin() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onEnable() {
|
override fun onEnable() {
|
||||||
MainCommand(this,maindata)
|
MainCommand(this, maindata)
|
||||||
|
MainListener(this, maindata)
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
@ -6,7 +6,7 @@ import me.faiz.combat_f.data.MainData
|
|||||||
import me.faiz.combat_f.handler.MainHandler
|
import me.faiz.combat_f.handler.MainHandler
|
||||||
import org.bukkit.entity.Player
|
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 {
|
init {
|
||||||
main.apply {
|
main.apply {
|
||||||
@ -14,10 +14,10 @@ class MainCommand(private val main: Main,private val data: MainData) {
|
|||||||
register("combat") {
|
register("combat") {
|
||||||
requires { isOp }
|
requires { isOp }
|
||||||
executes {
|
executes {
|
||||||
if(sender !is Player) {
|
if (sender !is Player) {
|
||||||
sender.sendMessage("This command can use Player! \n Please use another command!")
|
sender.sendMessage("This command can use Player! \n Please use another command!")
|
||||||
return@executes
|
return@executes
|
||||||
}else MainHandler(sender as Player,data,main)
|
} else MainHandler(sender as Player, data, main)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,29 +4,43 @@ import org.bukkit.configuration.file.YamlConfiguration
|
|||||||
import org.bukkit.plugin.Plugin
|
import org.bukkit.plugin.Plugin
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
class MainData(private val plugin:Plugin) {
|
class MainData(private val plugin: Plugin) {
|
||||||
private val file get() = File(plugin.dataFolder,"data.yml")
|
private val file get() = File(plugin.dataFolder, "data.yml")
|
||||||
private val yaml = YamlConfiguration.loadConfiguration(file)
|
private val yaml = YamlConfiguration.loadConfiguration(file)
|
||||||
|
|
||||||
fun getUseWorld(uid:String):Boolean{
|
fun getUseWorld(uid: String): Boolean {
|
||||||
return yaml.getBoolean("$uid.use")
|
return yaml.getBoolean("$uid.use")
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setUseWorld(uid:String,boolean: Boolean){
|
fun setUseWorld(uid: String, boolean: Boolean) {
|
||||||
yaml.set("$uid.use",boolean)
|
yaml.set("$uid.use", boolean)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getTimeWorld(uid:String):Int{
|
fun getTimeWorld(uid: String): Int {
|
||||||
return if(yaml.getInt("$uid.time") == 0) -1 else yaml.getInt("$uid.time")
|
return if (yaml.getInt("$uid.time") == 0) -1 else yaml.getInt("$uid.time")
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setTimeWorld(uid:String,time:Int){
|
fun setTimeWorld(uid: String, time: Int) {
|
||||||
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 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)
|
yaml.save(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
|
||||||
@ -19,75 +23,121 @@ class MainHandler(pl: Player, private val data: MainData, main: Main) {
|
|||||||
|
|
||||||
init {
|
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 {
|
editMeta {
|
||||||
it.lore(listOf(Component.text("월드마다 컴뱃 사용 여부를 선택할 수 있습니다.")
|
it.lore(
|
||||||
.decoration(TextDecoration.ITALIC,false)
|
listOf(
|
||||||
.color(TextColor.color(150,150,150))))
|
Component.text("월드마다 컴뱃 사용 여부를 선택할 수 있습니다.")
|
||||||
|
.decoration(TextDecoration.ITALIC, false)
|
||||||
|
.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(
|
||||||
.decoration(TextDecoration.ITALIC,false)
|
listOf(
|
||||||
.color(TextColor.color(150,150,150))))
|
Component.text("월드마다 컴뱃 시간을 지정할 수 있습니다.")
|
||||||
|
.decoration(TextDecoration.ITALIC, false)
|
||||||
|
.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(
|
||||||
.decoration(TextDecoration.ITALIC,false)
|
listOf(
|
||||||
.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))))
|
Component.text("월드 마다 지정 할 수 있습니다.")
|
||||||
|
.decoration(TextDecoration.ITALIC, false)
|
||||||
|
.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(
|
||||||
.decoration(TextDecoration.ITALIC,false)
|
listOf(
|
||||||
.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))))
|
Component.text("월드 마다 지정 할 수 있습니다.")
|
||||||
(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(1, 1, useCombat)
|
||||||
item(3,1,setTime)
|
item(3, 1, setTime)
|
||||||
item(5,1,hitOther)
|
item(5, 1, hitOther)
|
||||||
item(7,1,visible)
|
item(7, 1, visible)
|
||||||
|
|
||||||
// 이벤트 설정
|
// 이벤트 설정
|
||||||
slot(1,1){
|
slot(1, 1) {
|
||||||
onClick {
|
onClick {
|
||||||
it.whoClicked.closeInventory()
|
it.whoClicked.closeInventory()
|
||||||
object: BukkitRunnable() {
|
object : BukkitRunnable() {
|
||||||
override fun run() {
|
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)
|
}.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)
|
pl.openFrame(mFr)
|
||||||
}
|
}
|
||||||
@ -95,13 +145,14 @@ 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(
|
||||||
.decorate(TextDecoration.BOLD)
|
Component.text(name)
|
||||||
.decoration(TextDecoration.ITALIC,false)
|
.decorate(TextDecoration.BOLD)
|
||||||
.color(color)
|
.decoration(TextDecoration.ITALIC, false)
|
||||||
|
.color(color)
|
||||||
)
|
)
|
||||||
item.itemMeta = itemMeta
|
item.itemMeta = itemMeta
|
||||||
return item
|
return item
|
||||||
|
@ -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