✨학교에서 급조한, 대가리가 좀 이상할때 만든
This commit is contained in:
parent
2b20f2f437
commit
53f44071cc
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="DiscordProjectSettings">
|
<component name="DiscordProjectSettings">
|
||||||
<option name="show" value="ASK" />
|
<option name="show" value="PROJECT_FILES" />
|
||||||
<option name="description" value="" />
|
<option name="description" value="" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
@ -1,5 +1,6 @@
|
|||||||
plugins {
|
plugins {
|
||||||
kotlin("jvm") version "1.8.0"
|
kotlin("jvm") version "1.8.0"
|
||||||
|
id("io.papermc.paperweight.userdev") version "1.5.3"
|
||||||
}
|
}
|
||||||
|
|
||||||
group = "group.pvpconnect"
|
group = "group.pvpconnect"
|
||||||
@ -7,7 +8,6 @@ version = "1.0-SNAPSHOT"
|
|||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
maven("https://repo.papermc.io/repository/maven-public/")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
java {
|
java {
|
||||||
@ -16,7 +16,8 @@ java {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
testImplementation(kotlin("test"))
|
testImplementation(kotlin("test"))
|
||||||
compileOnly("io.papermc.paper:paper-api:1.19.2-R0.1-SNAPSHOT")
|
paperweight.paperDevBundle("1.19.2-R0.1-SNAPSHOT")
|
||||||
|
implementation("io.github.monun:kommand-api:3.1.3")
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.test {
|
tasks.test {
|
||||||
|
@ -1,11 +1,25 @@
|
|||||||
package group.pvpconnect.combat_f
|
package group.pvpconnect.combat_f
|
||||||
|
|
||||||
|
import group.pvpconnect.combat_f.cmd.CombatCmd
|
||||||
|
import group.pvpconnect.combat_f.data.CombatData
|
||||||
|
import group.pvpconnect.combat_f.event.CombatEvent
|
||||||
import org.bukkit.plugin.java.JavaPlugin
|
import org.bukkit.plugin.java.JavaPlugin
|
||||||
|
import java.util.UUID
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
class Main:JavaPlugin() {
|
class Main:JavaPlugin() {
|
||||||
|
var list:HashMap<UUID,Pair<UUID?,Long?>> = HashMap()
|
||||||
|
lateinit var instance: Main
|
||||||
|
|
||||||
|
val combatData by lazy { CombatData(this) }
|
||||||
|
|
||||||
|
override fun onLoad() {
|
||||||
|
instance = this
|
||||||
|
}
|
||||||
|
|
||||||
override fun onEnable() {
|
override fun onEnable() {
|
||||||
|
CombatCmd(this,combatData)
|
||||||
|
CombatEvent(this,combatData)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
51
src/main/kotlin/group/pvpconnect/combat_f/cmd/CombatCmd.kt
Normal file
51
src/main/kotlin/group/pvpconnect/combat_f/cmd/CombatCmd.kt
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
package group.pvpconnect.combat_f.cmd
|
||||||
|
|
||||||
|
import group.pvpconnect.combat_f.data.CombatData
|
||||||
|
import io.github.monun.kommand.getValue
|
||||||
|
import io.github.monun.kommand.kommand
|
||||||
|
import org.bukkit.ChatColor
|
||||||
|
import org.bukkit.World
|
||||||
|
import org.bukkit.plugin.Plugin
|
||||||
|
|
||||||
|
class CombatCmd(plugin:Plugin, val cd:CombatData) {
|
||||||
|
init {
|
||||||
|
plugin.apply {
|
||||||
|
kommand {
|
||||||
|
register("combat"){
|
||||||
|
requires { isPlayer && isOp }
|
||||||
|
then("toggle"){
|
||||||
|
then("world" to dimension()){
|
||||||
|
executes {
|
||||||
|
val world: World by it
|
||||||
|
val bool = cd.instance.getUseWorld(world.name)
|
||||||
|
cd.instance.setUseWorld(world.name,!bool)
|
||||||
|
sender.sendMessage("${ChatColor.BOLD}${ChatColor.GOLD}[${ChatColor.GREEN}✓${ChatColor.GOLD}] ${ChatColor.WHITE}${world.name}의 컴뱃 모드 사용이 ${if(bool)"활성화 되었습니다!" else "비활성화 되었습니다!"}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
then("visiable"){
|
||||||
|
then("world" to dimension()){
|
||||||
|
executes {
|
||||||
|
val world:World by it
|
||||||
|
val bool = cd.instance.getCanSeeWorld(world.name)
|
||||||
|
cd.instance.setCanSeeWorld(world.name,!bool)
|
||||||
|
sender.sendMessage("${ChatColor.BOLD}${ChatColor.GOLD}[${ChatColor.GREEN}✓${ChatColor.GOLD}] ${ChatColor.WHITE}${world.name}의 컴뱃중 다른 사람 볼수있음이 ${if(bool)"활성화 되었습니다!" else "비활성화 되었습니다!"}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
then("time"){
|
||||||
|
then("int" to int()){
|
||||||
|
executes {
|
||||||
|
val int:Int by it
|
||||||
|
val otime = cd.instance.getTime()
|
||||||
|
val ctime = int
|
||||||
|
cd.instance.setTime(ctime)
|
||||||
|
sender.sendMessage("${ChatColor.BOLD}${ChatColor.GOLD}[${ChatColor.GREEN}✓${ChatColor.GOLD}] ${ChatColor.WHITE}컴뱃타임이 ${otime}에서 ${ctime}으로 변경되었습니다!")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
38
src/main/kotlin/group/pvpconnect/combat_f/data/CombatData.kt
Normal file
38
src/main/kotlin/group/pvpconnect/combat_f/data/CombatData.kt
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
package group.pvpconnect.combat_f.data
|
||||||
|
|
||||||
|
import org.bukkit.configuration.file.YamlConfiguration
|
||||||
|
import org.bukkit.plugin.Plugin
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
class CombatData(val plugin:Plugin) {
|
||||||
|
var instance:CombatData = this
|
||||||
|
|
||||||
|
private val file get() = File(plugin.dataFolder, "data.yml")
|
||||||
|
private val yaml = YamlConfiguration.loadConfiguration(file)
|
||||||
|
|
||||||
|
fun getUseWorld(world:String):Boolean{
|
||||||
|
return yaml.getBoolean("${world}.use")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setUseWorld(world:String,use:Boolean){
|
||||||
|
yaml.set("${world}.use",use)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getCanSeeWorld(world:String):Boolean{
|
||||||
|
return yaml.getBoolean("${world}.see")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setCanSeeWorld(world:String,see:Boolean){
|
||||||
|
yaml.set("${world}.see",see)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setTime(time:Int){
|
||||||
|
yaml.set("time",time)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getTime():Int{
|
||||||
|
return yaml.getInt("time")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
107
src/main/kotlin/group/pvpconnect/combat_f/event/CombatEvent.kt
Normal file
107
src/main/kotlin/group/pvpconnect/combat_f/event/CombatEvent.kt
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
package group.pvpconnect.combat_f.event
|
||||||
|
|
||||||
|
import group.pvpconnect.combat_f.Main
|
||||||
|
import group.pvpconnect.combat_f.data.CombatData
|
||||||
|
import org.bukkit.Bukkit
|
||||||
|
import org.bukkit.entity.EntityType
|
||||||
|
import org.bukkit.entity.Player
|
||||||
|
import org.bukkit.event.EventHandler
|
||||||
|
import org.bukkit.event.Listener
|
||||||
|
import org.bukkit.event.entity.EntityDamageByEntityEvent
|
||||||
|
import org.bukkit.event.entity.PlayerDeathEvent
|
||||||
|
import org.bukkit.event.player.PlayerCommandPreprocessEvent
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent
|
||||||
|
|
||||||
|
class CombatEvent(private val plugin:Main, private val combatData: CombatData):Listener {
|
||||||
|
|
||||||
|
init {
|
||||||
|
Bukkit.getPluginManager().registerEvents(this,plugin)
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
fun onDamage(e:EntityDamageByEntityEvent){
|
||||||
|
if(e.entityType != EntityType.PLAYER) return
|
||||||
|
if(e.damager.type != EntityType.PLAYER) return
|
||||||
|
val player:Player = e.entity as Player
|
||||||
|
val damager:Player = e.damager as Player
|
||||||
|
plugin.instance.list[e.entity.uniqueId] = Pair(e.damager.uniqueId,System.currentTimeMillis()/1000)
|
||||||
|
plugin.instance.list[e.damager.uniqueId] = Pair(e.entity.uniqueId,System.currentTimeMillis()/1000)
|
||||||
|
if(combatData.instance.getCanSeeWorld(player.world.name)) {
|
||||||
|
Bukkit.getOnlinePlayers().forEach {
|
||||||
|
it.hidePlayer(plugin, player)
|
||||||
|
it.hidePlayer(plugin, damager)
|
||||||
|
if (it.uniqueId == player.uniqueId || it.uniqueId == damager.uniqueId) return
|
||||||
|
player.hidePlayer(plugin, it)
|
||||||
|
damager.hidePlayer(plugin, it)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
fun onOtherDamage(e:EntityDamageByEntityEvent){
|
||||||
|
val list = plugin.instance.list[e.entity.uniqueId] ?: return
|
||||||
|
val time = list.second ?: return
|
||||||
|
val ctime = combatData.instance.getTime()
|
||||||
|
if(e.entityType != EntityType.PLAYER) return
|
||||||
|
if(e.damager.type != EntityType.PLAYER) return
|
||||||
|
if(time + ctime >= System.currentTimeMillis()/1000){
|
||||||
|
e.isCancelled = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
fun onCommand(e:PlayerCommandPreprocessEvent){
|
||||||
|
val time = plugin.instance.list[e.player.uniqueId]?.second ?: return
|
||||||
|
val ctime = combatData.instance.getTime()
|
||||||
|
if(time + ctime >= System.currentTimeMillis() /1000){
|
||||||
|
e.isCancelled = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
fun onLeave(e:PlayerQuitEvent){
|
||||||
|
val list = plugin.instance.list[e.player.uniqueId] ?: return
|
||||||
|
val time = list.second ?: return
|
||||||
|
val killer = list.first ?: return
|
||||||
|
val player = e.player
|
||||||
|
val killerP = Bukkit.getPlayer(killer)
|
||||||
|
val ctime = combatData.instance.getTime()
|
||||||
|
if(time + ctime >= System.currentTimeMillis() /1000){
|
||||||
|
e.player.killer = Bukkit.getPlayer(plugin.instance.list[e.player.uniqueId]!!.first!!)
|
||||||
|
e.player.health = 0.0
|
||||||
|
plugin.instance.list[e.player.uniqueId] = Pair(null,null)
|
||||||
|
plugin.instance.list[killer] = Pair(null,null)
|
||||||
|
}
|
||||||
|
if(combatData.instance.getCanSeeWorld(player.world.name)) {
|
||||||
|
Bukkit.getOnlinePlayers().forEach {
|
||||||
|
it.showPlayer(plugin, player)
|
||||||
|
it.showPlayer(plugin, killerP!!)
|
||||||
|
if (it.uniqueId == player.uniqueId || it.uniqueId == killer) return
|
||||||
|
player.showPlayer(plugin, it)
|
||||||
|
killerP.showPlayer(plugin, it)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
fun onKill(e:PlayerDeathEvent){
|
||||||
|
val ctime = combatData.instance.getTime()
|
||||||
|
val list = plugin.instance.list[e.player.uniqueId] ?: return
|
||||||
|
val time = list.second ?: return
|
||||||
|
val killer = list.first ?: return
|
||||||
|
if(time + ctime <= System.currentTimeMillis() /1000){
|
||||||
|
plugin.instance.list[e.player.uniqueId] = Pair(null,null)
|
||||||
|
plugin.instance.list[killer] = Pair(null,null)
|
||||||
|
if(combatData.instance.getCanSeeWorld(e.player.world.name)) {
|
||||||
|
Bukkit.getOnlinePlayers().forEach {
|
||||||
|
it.showPlayer(plugin, e.player)
|
||||||
|
it.showPlayer(plugin, e.player.killer!!)
|
||||||
|
if (it.uniqueId == e.player.uniqueId || it.uniqueId == killer) return
|
||||||
|
e.player.showPlayer(plugin, it)
|
||||||
|
e.player.killer!!.showPlayer(plugin, it)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
7
src/main/resources/plugin.yml
Normal file
7
src/main/resources/plugin.yml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
name: Combat
|
||||||
|
version: 1.0-SNAPSHOT
|
||||||
|
main: group.pvpconnect.combat_f.Main
|
||||||
|
api-version: 1.19
|
||||||
|
author: faiz
|
||||||
|
libraries:
|
||||||
|
- io.github.monun:kommand-core:3.1.3
|
Loading…
Reference in New Issue
Block a user