️버그 수정

This commit is contained in:
root 2024-01-14 18:50:01 +09:00
parent 4a5072f31c
commit fb5883997e
9 changed files with 150 additions and 122 deletions

View File

@ -1,6 +1,6 @@
plugins {
kotlin("jvm") version "1.8.0"
id("io.papermc.paperweight.userdev") version "1.5.4"
// id("io.papermc.paperweight.userdev") version "1.5.4"
}
group = "group.pvpconnect"
@ -8,7 +8,7 @@ version = "1.0.1"
repositories {
mavenCentral()
// maven("https://repo.papermc.io/repository/maven-public/")
maven("https://repo.papermc.io/repository/maven-public/")
}
java {
@ -17,9 +17,9 @@ java {
dependencies {
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")
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.7")
}
tasks.test {

BIN
gradle/wrapper/gradle-wrapper.jar vendored Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

29
gradlew vendored Normal file → Executable file
View File

@ -83,10 +83,8 @@ done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
@ -133,10 +131,13 @@ location of your Java installation."
fi
else
JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.
@ -144,7 +145,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045
# shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
@ -152,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045
# shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
@ -197,11 +198,15 @@ if "$cygwin" || "$msys" ; then
done
fi
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded.
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \

184
gradlew.bat vendored
View File

@ -1,92 +1,92 @@
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega

View File

@ -39,7 +39,7 @@ class Main:JavaPlugin() {
if(list[it.key]!!.second == null) return@forEach
if(list[it.key]!!.third == null) return@forEach
if(it.value.third!!/1000 + combatData.instance.getTime() <= System.currentTimeMillis()/1000){
list[it.key] = Triple(false,null,null)
list.remove(it.key)
}
}
Bukkit.getOnlinePlayers().forEach{
@ -47,6 +47,7 @@ class Main:JavaPlugin() {
if(!list[it.uniqueId]!!.first) return@forEach
if(list[it.uniqueId]!!.second == null) return@forEach
if(list[it.uniqueId]!!.third == null) return@forEach
it.isGliding = false
if(combatData.getOtherHit(it.world.name)){
it.sendActionBar(Component.text("${ChatColor.RESET}${ChatColor.WHITE}${list[it.uniqueId]!!.third!! /1000 + combatData.instance.getTime() - System.currentTimeMillis()/1000}${ChatColor.RED}${ChatColor.BOLD}초 뒤 전투모드가 끝납니다!"))
}else {

View File

@ -4,6 +4,7 @@ import group.pvpconnect.combat_f.Main
import group.pvpconnect.combat_f.data.CombatData
import io.github.monun.kommand.getValue
import io.github.monun.kommand.kommand
import org.bukkit.Bukkit
import org.bukkit.ChatColor
import org.bukkit.World
@ -12,7 +13,7 @@ class CombatCmd(plugin:Main, private val cd:CombatData) {
plugin.apply {
kommand {
register("combat"){
requires { isPlayer && isOp }
requires { isOp }
then("toggle"){
then("world" to dimension()){
executes {

View File

@ -4,16 +4,19 @@ import group.pvpconnect.combat_f.Main
import group.pvpconnect.combat_f.data.CombatData
import org.bukkit.Bukkit
import org.bukkit.ChatColor
import org.bukkit.command.CommandSender
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.EntityDamageEvent
import org.bukkit.event.entity.PlayerDeathEvent
import org.bukkit.event.entity.ProjectileHitEvent
import org.bukkit.event.player.PlayerChangedWorldEvent
import org.bukkit.event.player.PlayerCommandPreprocessEvent
import org.bukkit.event.player.PlayerQuitEvent
import org.bukkit.scoreboard.Team
@Suppress("unused")
class CombatEvent(private val plugin:Main, private val combatData: CombatData):Listener {
@ -24,9 +27,15 @@ class CombatEvent(private val plugin:Main, private val combatData: CombatData):L
@EventHandler
fun onOtherDamage(e:EntityDamageByEntityEvent){
if(!combatData.instance.getUseWorld(e.entity.world.name)) return
if(e.entityType != EntityType.PLAYER) return
if(e.damager.type != EntityType.PLAYER) return
if(!combatData.instance.getUseWorld(e.entity.world.name)) return
val team = Bukkit.getServer().scoreboardManager.mainScoreboard.teams
lateinit var plteam: Team
team.forEach { if(it.hasPlayer(Bukkit.getOfflinePlayer(e.entity.name))) plteam = it }
if(plteam.hasPlayer(Bukkit.getOfflinePlayer(e.damager.name))){
return
}
val list = plugin.instance.list[e.entity.uniqueId]
val dlist = plugin.instance.list[e.damager.uniqueId]
if((dlist?.second != null) && (dlist.second != e.entity.uniqueId)&& !combatData.instance.getOtherHit(e.entity.world.name)){ e.isCancelled = true;return}
@ -41,6 +50,8 @@ class CombatEvent(private val plugin:Main, private val combatData: CombatData):L
e.isCancelled = true
return
}
plugin.instance.list[e.entity.uniqueId] = Triple(true,e.damager.uniqueId,System.currentTimeMillis())
plugin.instance.list[e.damager.uniqueId] = Triple(true,e.entity.uniqueId,System.currentTimeMillis())
if(combatData.instance.getCanSeeWorld(e.entity.world.name) && !plugin.instance.list[e.entity.uniqueId]!!.first){
Bukkit.getOnlinePlayers().forEach {
if(it.name != e.entity.name && it.name != e.damager.name){
@ -51,17 +62,20 @@ class CombatEvent(private val plugin:Main, private val combatData: CombatData):L
}
}
}
plugin.instance.list[e.entity.uniqueId] = Triple(true,e.damager.uniqueId,System.currentTimeMillis())
plugin.instance.list[e.damager.uniqueId] = Triple(true,e.entity.uniqueId,System.currentTimeMillis())
}
@EventHandler
fun onArrow(e:ProjectileHitEvent){
if(!combatData.instance.getUseWorld(e.entity.world.name)) return
if(e.hitEntity == null) return
if(e.hitEntity!!.type != EntityType.PLAYER) return
if(e.entity.shooter !is Player) return
if(!combatData.instance.getUseWorld(e.entity.world.name)) return
val team = Bukkit.getServer().scoreboardManager.mainScoreboard.teams
lateinit var plteam: Team
team.forEach { if(it.hasPlayer(Bukkit.getOfflinePlayer(e.entity.name))) plteam = it }
if(plteam.hasPlayer(Bukkit.getOfflinePlayer((e.entity.shooter as Player).name))){
return
}
val player = e.hitEntity as Player
val shooter = e.entity.shooter as Player
val list = plugin.instance.list[player.uniqueId]
@ -102,7 +116,7 @@ class CombatEvent(private val plugin:Main, private val combatData: CombatData):L
val list = plugin.instance.list[e.player.uniqueId] ?: return
if(!list.first) return
e.player.killer = Bukkit.getPlayer(list.second!!)
e.player.health = 0.0
Bukkit.dispatchCommand(,)
if(combatData.instance.getCanSeeWorld(e.player.world.name)){
Bukkit.getOnlinePlayers().forEach {
val player = e.player
@ -115,8 +129,8 @@ class CombatEvent(private val plugin:Main, private val combatData: CombatData):L
}
}
}
plugin.instance.list[e.player.uniqueId] = Triple(false,null,null)
plugin.instance.list[list.second!!] = Triple(false,null,null)
plugin.instance.list.remove(e.player.uniqueId)
plugin.instance.list.remove(list.second!!)
}
@EventHandler
@ -135,8 +149,8 @@ class CombatEvent(private val plugin:Main, private val combatData: CombatData):L
}
}
}
plugin.instance.list[e.player.uniqueId] = Triple(false,null,null)
plugin.instance.list[list.second!!] = Triple(false,null,null)
plugin.instance.list.remove(e.player.uniqueId)
plugin.instance.list.remove(list.second!!)
}
@EventHandler

View File

@ -4,4 +4,4 @@ main: group.pvpconnect.combat_f.Main
api-version: 1.19
author: faiz
libraries:
- io.github.monun:kommand-core:3.1.3
- io.github.monun:kommand-core:3.1.7