From 087da44dffbf2278a58fb7eeaeb8f1ec749cd900 Mon Sep 17 00:00:00 2001 From: thetrouper Date: Tue, 25 Mar 2025 10:57:28 -0500 Subject: [PATCH] Shell --- .gradle/8.8/checksums/checksums.lock | Bin 0 -> 17 bytes .../8.8/dependencies-accessors/gc.properties | 0 .../8.8/executionHistory/executionHistory.bin | Bin 0 -> 46093 bytes .../executionHistory/executionHistory.lock | Bin 0 -> 17 bytes .gradle/8.8/expanded/expanded.lock | Bin 0 -> 17 bytes .gradle/8.8/fileChanges/last-build.bin | Bin 0 -> 1 bytes .gradle/8.8/fileHashes/fileHashes.bin | Bin 0 -> 20247 bytes .gradle/8.8/fileHashes/fileHashes.lock | Bin 0 -> 17 bytes .../8.8/fileHashes/resourceHashesCache.bin | Bin 0 -> 18769 bytes .gradle/8.8/gc.properties | 0 .../buildOutputCleanup.lock | Bin 0 -> 17 bytes .gradle/buildOutputCleanup/cache.properties | 2 + .gradle/buildOutputCleanup/outputFiles.bin | Bin 0 -> 19091 bytes .gradle/vcs-1/gc.properties | 0 .idea/.gitignore | 3 + .idea/compiler.xml | 6 + .idea/discord.xml | 7 + .idea/gradle.xml | 16 ++ .idea/misc.xml | 11 + .idea/modules.xml | 8 + .idea/modules/ArmorSMP.main.iml | 14 + .idea/vcs.xml | 6 + build.gradle | 59 +++++ build/resources/main/plugin.yml | 8 + .../compileJava/previous-compilation-data.bin | Bin 0 -> 57969 bytes build/tmp/jar/MANIFEST.MF | 2 + gradle.properties | 0 gradle/wrapper/gradle-wrapper.properties | 7 + gradlew | 249 ++++++++++++++++++ gradlew.bat | 92 +++++++ settings.gradle | 1 + .../java/me/trouper/armorsmp/ArmorSMP.java | 30 +++ .../java/me/trouper/armorsmp/data/Config.java | 34 +++ .../java/me/trouper/armorsmp/data/IO.java | 36 +++ .../me/trouper/armorsmp/data/Storage.java | 22 ++ .../me/trouper/armorsmp/server/Manager.java | 33 +++ .../me/trouper/armorsmp/utils/Display.java | 144 ++++++++++ .../java/me/trouper/armorsmp/utils/Text.java | 144 ++++++++++ src/main/resources/plugin.yml | 8 + 39 files changed, 942 insertions(+) create mode 100644 .gradle/8.8/checksums/checksums.lock create mode 100644 .gradle/8.8/dependencies-accessors/gc.properties create mode 100644 .gradle/8.8/executionHistory/executionHistory.bin create mode 100644 .gradle/8.8/executionHistory/executionHistory.lock create mode 100644 .gradle/8.8/expanded/expanded.lock create mode 100644 .gradle/8.8/fileChanges/last-build.bin create mode 100644 .gradle/8.8/fileHashes/fileHashes.bin create mode 100644 .gradle/8.8/fileHashes/fileHashes.lock create mode 100644 .gradle/8.8/fileHashes/resourceHashesCache.bin create mode 100644 .gradle/8.8/gc.properties create mode 100644 .gradle/buildOutputCleanup/buildOutputCleanup.lock create mode 100644 .gradle/buildOutputCleanup/cache.properties create mode 100644 .gradle/buildOutputCleanup/outputFiles.bin create mode 100644 .gradle/vcs-1/gc.properties create mode 100644 .idea/.gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/discord.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/modules/ArmorSMP.main.iml create mode 100644 .idea/vcs.xml create mode 100644 build.gradle create mode 100644 build/resources/main/plugin.yml create mode 100644 build/tmp/compileJava/previous-compilation-data.bin create mode 100644 build/tmp/jar/MANIFEST.MF create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle create mode 100644 src/main/java/me/trouper/armorsmp/ArmorSMP.java create mode 100644 src/main/java/me/trouper/armorsmp/data/Config.java create mode 100644 src/main/java/me/trouper/armorsmp/data/IO.java create mode 100644 src/main/java/me/trouper/armorsmp/data/Storage.java create mode 100644 src/main/java/me/trouper/armorsmp/server/Manager.java create mode 100644 src/main/java/me/trouper/armorsmp/utils/Display.java create mode 100644 src/main/java/me/trouper/armorsmp/utils/Text.java create mode 100644 src/main/resources/plugin.yml diff --git a/.gradle/8.8/checksums/checksums.lock b/.gradle/8.8/checksums/checksums.lock new file mode 100644 index 0000000000000000000000000000000000000000..c1fc5c1dcf55e82640b378c3be8c2dad4c3975d6 GIT binary patch literal 17 ScmZRMD3>v^U4J5)0SW*nGXpRH literal 0 HcmV?d00001 diff --git a/.gradle/8.8/dependencies-accessors/gc.properties b/.gradle/8.8/dependencies-accessors/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.gradle/8.8/executionHistory/executionHistory.bin b/.gradle/8.8/executionHistory/executionHistory.bin new file mode 100644 index 0000000000000000000000000000000000000000..6036544b765711dd2bba946018dcbd8966675472 GIT binary patch literal 46093 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 NX1`q(g>&LJ{~uL70fqno literal 0 HcmV?d00001 diff --git a/.gradle/8.8/executionHistory/executionHistory.lock b/.gradle/8.8/executionHistory/executionHistory.lock new file mode 100644 index 0000000000000000000000000000000000000000..2207ec9e86565d923f6f0a7c30420b154c955195 GIT binary patch literal 17 TcmZSP%UL8YayH460Rp%IA+7?> literal 0 HcmV?d00001 diff --git a/.gradle/8.8/expanded/expanded.lock b/.gradle/8.8/expanded/expanded.lock new file mode 100644 index 0000000000000000000000000000000000000000..a2cb6a43609865478cb6dde5469932f2ed931721 GIT binary patch literal 17 TcmZRcp|E1ckEIDA3{U_7HTMKf literal 0 HcmV?d00001 diff --git a/.gradle/8.8/fileChanges/last-build.bin b/.gradle/8.8/fileChanges/last-build.bin new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git a/.gradle/8.8/fileHashes/fileHashes.bin b/.gradle/8.8/fileHashes/fileHashes.bin new file mode 100644 index 0000000000000000000000000000000000000000..e47e479f9f2849cf48bd049d058922a15b58627c GIT binary patch literal 20247 zcmeI4do)ye9Kf&f3We%m+O3qVU2ofpwy=>r8{b&E#^ZlJOckcPj{oLQZpKInHbH|#Z zxXK@xL46u3pH^WF3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2y3zZ7so zCnAqehO5V+SCqmj%4jNDS+Ga4Yj;4@mM!>YyF29n2ZG%JCCm37^1$3dlJMjigO~NQ zhgV?kxPkC=)9v3DM<~lM+b<$K=XP7SpHazC%$;Hg&s8_i4bi)ygZat%Y& zm^%azUcOd&mnw(a&htwo;w@!m7au;X618-HMSOG&T}JNN;XrkVVoPwY+pmT zLdfV>e4C;u%pGzFpP@2ton=;V6LY&z!d1@KIF`#7n=t!NBwQ_YZiJ%M6b;Oso_*v^ zLAG%^3p<(pHxNFjxUnYe;y^dEe@nu3LxwV14FnmOJB|{*C_G1TRN;6K!wm`NXX(_1 z+Z;5)+=)-PM^|ChYSm~i=Jrbo_uu6$SCmz~li`O5-*m38V*NF*Z!lk}P59=Ny9Lb+ zaRr$3DhUsjU9V@H5S+y9NA4qkHa zgaS|i3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7KmjNK1)u;F zfC5ke3P1rU00p1`6o3Ly01Etf1%5!g)<%!{^h4SB``Dk<QZ&&sHJ$i+Yes@SBvytCp-)eh4QE+x|vU6u>GqO8&P&P8)5VWW`#UccB;wIwKC4fS?U zFG)9RbWNx)W#$mw2SHI9^s|_8+ow}&T=+-jz?s9x)-|7Np$&58azmcFY-46Z{NCi3 zN~@}Ump)ZG5U%#QL1||R*+zWIyi*RG@etcr8{`Fx-){Zfkebp_&o(IQz-=iePBWT( zR=2;l_OwGrdR*mMJ+vhn{q(OqiJeEZ>$>a^$-K)C1qugVS_S<0`5cs*AcbwL={sd; zSlntVD9nt#bnjIABtu%;kZq`pYZGg*SzrPACHaN((5*D?l{P%LbDM?XXvgp@3&!9v#vAq=N^g>@i};U@X4tvu zM)bv^H;(A2m^)@T^c@{yMeLEkWTd_r?7&B*`haa@ZHeK3y(hXjoj)XV(e%a*W)AvVqcPJNEyRwhNij|6 zIx*i|IDKAry;}YVGExufXwDG{5|8LRXv7RHciGc358J#y*;1obm$llcF2rw(l-&{qx(X+N|OI}f4EG46?!BiCfxO#%liB+{5UWy-zd`)mv=v>#eJfzHnD`6gFYHGW;daQn4vAlo8qex896(R*YU1bYae3- ziUdlRJ|8i|!PtCO*MRp)?r&DZ?Uid2v9X8#ght~@Fj|Ni5!E3*`^W9uRh>0eV(KE7 zVPpFldV4f3qQ}27l710w|3%|i?&&3#DtWe55627(hs?Nmj-)8Yn8lvMJUP@cGpMv9 bvN2}R;Vuuo=jdymg#IGY;HaTbBg)_(Rt1^K literal 0 HcmV?d00001 diff --git a/.gradle/8.8/fileHashes/fileHashes.lock b/.gradle/8.8/fileHashes/fileHashes.lock new file mode 100644 index 0000000000000000000000000000000000000000..affe9a594f044755e3d4ea8e0f34cd6d9c60c826 GIT binary patch literal 17 UcmZSHRrQ78AlK>b3=m)f061*~tpET3 literal 0 HcmV?d00001 diff --git a/.gradle/8.8/fileHashes/resourceHashesCache.bin b/.gradle/8.8/fileHashes/resourceHashesCache.bin new file mode 100644 index 0000000000000000000000000000000000000000..dad9b3d986bcac2ba5e04b24b454e2e9da35c610 GIT binary patch literal 18769 zcmeI&;Y$-?9Ki8ope!-ms)0fX1qzx?Lwyk%F-UE`Xif7)N-*e!Y+zC^oHPXm!xxi6 zN$t%*a3I(_hi@ujzVJm^(NyM}-iTY`h8xO6PMCJ%?m_ha1Nk1@-NW~Oa6F&4caJ2g z*mSBL(%E4-Te3m`0R#|0009ILKmY**5I_I{1Q0*~0R#|00D;RQ(4lOkK;2Anl_9q% z@=8)op|UWJ_!d5eYyW&uAKR?AryHif1e)~(lK&*yDo{mJJkd{Bw(AP|I`dBA-&%K~TOS?ziKzugXEy2z-f}rZN1yX^|NUQh%aVIF zdv~tvjo)JQPc3hj=_i^zmdKTWGxaxgvpMqPby`0$X$}5dv8JNa#{BZGMBAi(!fej? S_T+SZYq#gOJRWYzP5cM?J;KcZ literal 0 HcmV?d00001 diff --git a/.gradle/8.8/gc.properties b/.gradle/8.8/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock new file mode 100644 index 0000000000000000000000000000000000000000..d2268d4e8701f21df8adb9df7b6f8eb3272f261f GIT binary patch literal 17 UcmZR+e^jIHbcJ9j0|cl605r}79RL6T literal 0 HcmV?d00001 diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 0000000..7c70ec5 --- /dev/null +++ b/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Tue Mar 25 06:14:27 CDT 2025 +gradle.version=8.8 diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin new file mode 100644 index 0000000000000000000000000000000000000000..a008bd82097dc7cd44c32ab8e7b266fce65ce9ee GIT binary patch literal 19091 zcmeI%T}V@L7{~ErbFETLi{ZlFT!hwUtQ?YHVX|~DFfX*LN-&UtENW~pX_`q>r&7>G zSS$-y^g@LQLdl8pYEUs{vK)w6?i0j_O#~Rj+rPR-P z2lje;qzCxCNWHJtlNVI^>Ug(PzZN@HF}*wRo^|~m>eowNq+KfVP4ame^_x51T+wXS z=JWo6`mNDeNHj^CdEZ5SU}$c`+1!y9-Y2LJsx*g1tG}Lg{b%Zv>c@T2wwVsrjdJSK zouQD^ZI<$RFZJ1`h_>ICbdsyO<5JolzjgY>WZ24J7-RI4)I<^Hu%^Ik)J=jgcVd3w%E)(tnPmv1WWmv$W+=kpJ!SGrqmMOEcC){O_LSA{Ld zGsEI1KHo*%^441WJyJ-&Z#{LZ^@-c(&s)m(v{AQBiNU+CFJ|yPLF#r{om$&r>t@}c z`qfvP9UJF$Yx#Twb(g!kz2tPMpYJzOZ#6x2otQfm<@2|x)2kpzwy^i`3;_s000Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG`~ x@dy;hzsmCXk(M|TPg%c}cvw^=wQrbw)!&rV?mc;PYI~BeN^SGMyXp^{e*#)Hzit2k literal 0 HcmV?d00001 diff --git a/.gradle/vcs-1/gc.properties b/.gradle/vcs-1/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..b86273d --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/discord.xml b/.idea/discord.xml new file mode 100644 index 0000000..30bab2a --- /dev/null +++ b/.idea/discord.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..ce1c62c --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,16 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..9f09339 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..c76471f --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/modules/ArmorSMP.main.iml b/.idea/modules/ArmorSMP.main.iml new file mode 100644 index 0000000..bbeeb3e --- /dev/null +++ b/.idea/modules/ArmorSMP.main.iml @@ -0,0 +1,14 @@ + + + + + + + PAPER + ADVENTURE + + 1 + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..4721bc0 --- /dev/null +++ b/build.gradle @@ -0,0 +1,59 @@ +plugins { + id 'java' +} + +group = 'me.trouper' +version = '1.0-SNAPSHOT' + +jar { + from { + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + configurations.runtimeClasspath.collect { + it.isDirectory() ? it : zipTree(it) + } + } +} + +repositories { + mavenCentral() + maven { + name = "papermc-repo" + url = "https://repo.papermc.io/repository/maven-public/" + } + maven { + name = "sonatype" + url = "https://oss.sonatype.org/content/groups/public/" + } +} + +dependencies { + compileOnly("io.papermc.paper:paper-api:1.21.4-R0.1-SNAPSHOT") + implementation files("libs/PDK-1.4.0.jar") +} + +def targetJavaVersion = 21 +java { + def javaVersion = JavaVersion.toVersion(targetJavaVersion) + sourceCompatibility = javaVersion + targetCompatibility = javaVersion + if (JavaVersion.current() < javaVersion) { + toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion) + } +} + +tasks.withType(JavaCompile).configureEach { + options.encoding = 'UTF-8' + + if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) { + options.release.set(targetJavaVersion) + } +} + +processResources { + def props = [version: version] + inputs.properties props + filteringCharset 'UTF-8' + filesMatching('plugin.yml') { + expand props + } +} diff --git a/build/resources/main/plugin.yml b/build/resources/main/plugin.yml new file mode 100644 index 0000000..d2f0d5c --- /dev/null +++ b/build/resources/main/plugin.yml @@ -0,0 +1,8 @@ +name: ArmorSMP +version: '1.0-SNAPSHOT' +main: me.trouper.armorsmp.ArmorSMP +api-version: '1.21' +prefix: ArmorSMP +load: STARTUP +authors: [ obvWolf ] +description: Kill Based Armor Upgrading diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin new file mode 100644 index 0000000000000000000000000000000000000000..d2a74a9c0f656cf1b2a51aae07fcd4948f0a18ac GIT binary patch literal 57969 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 ecrAx|1#G%O_T@%w%8U5cz6i '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# 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 + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + 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. +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=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# 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" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..25da30d --- /dev/null +++ b/gradlew.bat @@ -0,0 +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. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +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 diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..58ba353 --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'ArmorSMP' diff --git a/src/main/java/me/trouper/armorsmp/ArmorSMP.java b/src/main/java/me/trouper/armorsmp/ArmorSMP.java new file mode 100644 index 0000000..81945af --- /dev/null +++ b/src/main/java/me/trouper/armorsmp/ArmorSMP.java @@ -0,0 +1,30 @@ +package me.trouper.armorsmp; + +import io.github.itzispyder.pdk.PDK; +import me.trouper.armorsmp.server.Manager; +import org.bukkit.plugin.java.JavaPlugin; + +public final class ArmorSMP extends JavaPlugin { + + private static ArmorSMP instance; + private Manager manager; + + @Override + public void onEnable() { + PDK.init(this); + instance = this; + manager = new Manager().init(); + } + + @Override + public void onDisable() { + + } + + public static ArmorSMP getInstance() { + return instance; + } + public Manager getManager() { + return manager; + } +} diff --git a/src/main/java/me/trouper/armorsmp/data/Config.java b/src/main/java/me/trouper/armorsmp/data/Config.java new file mode 100644 index 0000000..3b42c10 --- /dev/null +++ b/src/main/java/me/trouper/armorsmp/data/Config.java @@ -0,0 +1,34 @@ +package me.trouper.armorsmp.data; + +import io.github.itzispyder.pdk.utils.misc.config.JsonSerializable; +import me.trouper.armorsmp.ArmorSMP; + +import java.io.File; +import java.util.Arrays; +import java.util.List; + +public class Config implements JsonSerializable { + + public String mainColor = "�ff00"; + public String prefix = "&9ArmorSMP> &7"; + public String pluginName = "ArmorSMP"; + + @Override + public File getFile() { + return ArmorSMP.getInstance().getManager().io.CONFIG_FILE; + } + + public boolean fancyAlerts = true; + + + public Tips tips = new Tips(); + public class Tips { + public boolean tipsEnabled = true; + public List tipList = Arrays.asList( + "Tips1", + "Tips2", + "Tips3" + ); + } + +} diff --git a/src/main/java/me/trouper/armorsmp/data/IO.java b/src/main/java/me/trouper/armorsmp/data/IO.java new file mode 100644 index 0000000..b0c3370 --- /dev/null +++ b/src/main/java/me/trouper/armorsmp/data/IO.java @@ -0,0 +1,36 @@ +package me.trouper.armorsmp.data; + +import io.github.itzispyder.pdk.utils.misc.config.JsonSerializable; + +import java.io.File; + +public class IO { + + public final File DATA_FOLDER; + public final File CONFIG_FILE; + public final File STORAGE_FILE; + + public Config config; + public Storage storage; + + public IO() { + DATA_FOLDER = new File("plugins/ArmorSMP"); + CONFIG_FILE = new File(DATA_FOLDER,"/config.json"); + STORAGE_FILE = new File(DATA_FOLDER,"/storage.json"); + config = JsonSerializable.load(CONFIG_FILE,Config.class,new Config()); + storage = JsonSerializable.load(STORAGE_FILE,Storage.class,new Storage()); + } + + public void loadAll() { + config = JsonSerializable.load(CONFIG_FILE,Config.class,new Config()); + storage = JsonSerializable.load(STORAGE_FILE,Storage.class,new Storage()); + + config.save(); + storage.save(); + } + + public void saveAll() { + config.save(); + storage.save(); + } +} diff --git a/src/main/java/me/trouper/armorsmp/data/Storage.java b/src/main/java/me/trouper/armorsmp/data/Storage.java new file mode 100644 index 0000000..0ac1f2e --- /dev/null +++ b/src/main/java/me/trouper/armorsmp/data/Storage.java @@ -0,0 +1,22 @@ +package me.trouper.armorsmp.data; + +import io.github.itzispyder.pdk.utils.misc.config.JsonSerializable; +import me.trouper.armorsmp.ArmorSMP; + +import java.io.File; +import java.util.HashSet; +import java.util.Set; + +public class Storage implements JsonSerializable { + + @Override + public File getFile() { + return ArmorSMP.getInstance().getManager().io.STORAGE_FILE; + } + + public UserData userData = new UserData(); + + public class UserData { + public Set tipsDisabled = new HashSet<>(); + } +} diff --git a/src/main/java/me/trouper/armorsmp/server/Manager.java b/src/main/java/me/trouper/armorsmp/server/Manager.java new file mode 100644 index 0000000..31b3a3d --- /dev/null +++ b/src/main/java/me/trouper/armorsmp/server/Manager.java @@ -0,0 +1,33 @@ +package me.trouper.armorsmp.server; + +import me.trouper.armorsmp.data.IO; + +public class Manager { + public IO io; + + public Manager() { + io = new IO(); + } + + public Manager init() { + io.loadAll(); + registerCommands(); + registerEvents(); + registerCrafting(); + + return this; + } + + private void registerEvents() { + + } + + private void registerCommands() { + + } + + private void registerCrafting() { + + } + +} diff --git a/src/main/java/me/trouper/armorsmp/utils/Display.java b/src/main/java/me/trouper/armorsmp/utils/Display.java new file mode 100644 index 0000000..86dfe9c --- /dev/null +++ b/src/main/java/me/trouper/armorsmp/utils/Display.java @@ -0,0 +1,144 @@ +package me.trouper.armorsmp.utils; + +import io.github.itzispyder.pdk.Global; +import io.github.itzispyder.pdk.utils.misc.Randomizer; +import org.bukkit.Bukkit; +import org.bukkit.Color; +import org.bukkit.Location; +import org.bukkit.Particle; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.BiFunction; +import java.util.function.Consumer; +import java.util.function.Function; + +public class Display implements Global { + + public static final Function> PARTICLE_FACTORY = particle -> l -> l.getWorld().spawnParticle(particle, l, 1, 0, 0, 0, 0); + public static final BiFunction> DUST_PARTICLE_FACTORY = (color, thickness) -> { + Particle.DustOptions dust = new Particle.DustOptions(color, thickness); + return l -> l.getWorld().spawnParticle(Particle.DUST, l, 1, 0, 0, 0, 0, dust); + }; + public static final Function> FLAME_PARTICLE_FACTORY = soul -> { + Particle flame = soul ? Particle.SOUL_FIRE_FLAME : Particle.FLAME; + return l -> l.getWorld().spawnParticle(flame, l, 1, 0, 0, 0, 0); + }; + + public static void ring(Location loc, double radius, Color color, float thickness) { + ring(loc, radius, DUST_PARTICLE_FACTORY.apply(color, thickness)); + } + + public static void wave(Location loc, double radius, Color color, float thickness, double gap) { + wave(loc, radius, DUST_PARTICLE_FACTORY.apply(color, thickness), gap); + } + + public static void ring(Location loc, double radius, Consumer action) { + for (int theta = 0; theta < 360; theta += 10) { + double x = Math.cos(Math.toRadians(theta)) * radius; + double z = Math.sin(Math.toRadians(theta)) * radius; + Location newLoc = loc.clone().add(x, 0, z); + action.accept(newLoc); + } + } + + public static void wave(Location loc, double radius, Consumer action, double gap) { + AtomicReference i = new AtomicReference<>(gap); + Bukkit.getScheduler().scheduleSyncRepeatingTask(instance.getPlugin(), () -> { + if (i.get() >= radius) { + return; + } + ring(loc, i.get(), action); + i.set(i.get() + gap); + }, 0, 1); + } + + public static void disc(Location loc, double radius, Consumer action, double gap) { + for (double i = gap; i < radius; i += gap) { + ring(loc, i, action); + } + } + + public static void helix(Location loc, double radius, Consumer action, double gap, int height) { + int theta = 0; + for (double y = 0; y <= height; y += gap) { + double x = Math.cos(Math.toRadians(theta)) * radius; + double z = Math.sin(Math.toRadians(theta)) * radius; + + Location newLoc = loc.clone().add(x, y, z); + action.accept(newLoc); + theta += 10; + } + } + + public static void vortex(Location loc, double radius, Consumer action, double gapH, double gapV, int height) { + double r = radius; + int theta = 0; + for (double y = 0; y <= height; y += gapV) { + double x = Math.cos(Math.toRadians(theta)) * r; + double z = Math.sin(Math.toRadians(theta)) * r; + + Location newLoc = loc.clone().add(x, y, z); + action.accept(newLoc); + r += gapH; + theta += 10; + } + } + + public static void beam(Location loc, Consumer action, double gap, int height) { + for (double y = 0; y <= height; y += gap) { + Location newLoc = loc.clone().add(0, y, 0); + action.accept(newLoc); + } + } + + public static void arc(Location loc, double radius, int angleFrom, int angleTo, Consumer action) { + for (int theta = angleFrom; theta < angleTo; theta += 10) { + double x = Math.cos(Math.toRadians(theta)) * radius; + double z = Math.sin(Math.toRadians(theta)) * radius; + Location newLoc = loc.clone().add(x, 0, z); + action.accept(newLoc); + } + } + + public static void fan(Location loc, double radius, int angleFrom, int angleTo, Consumer action, double gap) { + for (double i = gap; i < radius; i += gap) { + arc(loc, i, angleFrom, angleTo, action); + } + } + + public static void fanWave(Location loc, double radius, int sections, Consumer action, double gap) { + double arcLength = 360.0 / sections; + AtomicReference i = new AtomicReference<>(0.0); + Bukkit.getScheduler().scheduleSyncRepeatingTask(instance.getPlugin(), () -> { + if (i.get() >= 360) { + return; + } + double start = i.get(); + fan(loc, radius, (int)start, (int)(start + arcLength), action, gap); + i.set(i.get() + arcLength); + }, 0, 5); + } + + public static void fanWaveRandom(Location loc, double radius, int sections, Consumer action, double gap) { + double arcLength = 360.0 / sections; + List ints = new ArrayList<>(); + for (double start = 0; start < 360; start += arcLength) { + ints.add(start); + } + + AtomicInteger i = new AtomicInteger(0); + Randomizer random = new Randomizer(); + Bukkit.getScheduler().scheduleSyncRepeatingTask(instance.getPlugin(), () -> { + if (i.get() >= sections) { + return; + } + double start = random.getRandomElement(ints); + ints.remove(start); + fan(loc, radius, (int)start, (int)(start + arcLength), action, gap); + i.getAndIncrement(); + }, 0, 5); + } +} \ No newline at end of file diff --git a/src/main/java/me/trouper/armorsmp/utils/Text.java b/src/main/java/me/trouper/armorsmp/utils/Text.java new file mode 100644 index 0000000..7c032ce --- /dev/null +++ b/src/main/java/me/trouper/armorsmp/utils/Text.java @@ -0,0 +1,144 @@ +package me.trouper.armorsmp.utils; + +import io.github.itzispyder.pdk.utils.misc.Randomizer; +import me.trouper.armorsmp.ArmorSMP; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.format.TextDecoration; +import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class Text { + + public static String legacyColor(String msg) { + return msg.replaceAll("&","§"); + } + + public static Component color(String msg) { + return LegacyComponentSerializer.legacyAmpersand().deserialize(msg); + } + + public static String getActiveFormatting(String text) { + final Pattern pattern = Pattern.compile("&[0-9a-fk-or]"); + final Matcher matcher = pattern.matcher(text); + + String lastColor = ""; + Set activeFormats = new HashSet<>(); + + while (matcher.find()) { + String code = matcher.group(); + char identifier = code.charAt(1); + + if (identifier >= '0' && identifier <= '9' || identifier >= 'a' && identifier <= 'f') { + lastColor = code; + activeFormats.clear(); + } else if (identifier >= 'k' && identifier <= 'o') { + activeFormats.add(identifier); + } else if (identifier == 'r') { + lastColor = ""; + activeFormats.clear(); + } + } + + StringBuilder result = new StringBuilder(lastColor); + for (char format : activeFormats) { + result.append("&").append(format); + } + + return result.toString(); + } + + + + public static void sendMessage(Player player, String text, boolean allowTip) { + Component message = getMessage(text,allowTip && ArmorSMP.getInstance().getManager().io.config.tips.tipsEnabled && !ArmorSMP.getInstance().getManager().io.storage.userData.tipsDisabled.contains(player.getUniqueId().toString())); + player.sendMessage(message); + } + + public static Component getMessage(String text, boolean addFancyTip) { + if (ArmorSMP.getInstance().getManager().io.config.fancyAlerts) { + return formatFancyMessage(text,addFancyTip); + } else { + return color(ArmorSMP.getInstance().getManager().io.config.prefix + text); + } + } + + + + public static Component formatFancyMessage(String text,boolean addTip) { + Component message = Component.empty().appendNewline(); + + if (addTip) { + String tip = new Randomizer().getRandomElement(ArmorSMP.getInstance().getManager().io.config.tips.tipList); + text = text + " &r&7&o" + tip; + } + + List wrappedLines = wrapText(text, 50, (int) Math.round((ArmorSMP.getInstance().getManager().io.config.pluginName.length() + 3) * 1.3)); + + message = message + .append(color(ArmorSMP.getInstance().getManager().io.config.mainColor + "| ").decorate(TextDecoration.BOLD)) + .append(Component.text(ArmorSMP.getInstance().getManager().io.config.pluginName + " ", NamedTextColor.WHITE, TextDecoration.BOLD)) + .append(color(wrappedLines.getFirst())); + + + String active = getActiveFormatting(wrappedLines.getFirst()); + + wrappedLines.removeFirst(); + + for (String wrappedLine : wrappedLines) { + wrappedLine = active + wrappedLine; + + active = getActiveFormatting(wrappedLine); + message = message + .appendNewline() + .append(color(ArmorSMP.getInstance().getManager().io.config.mainColor + "| ").decorate(TextDecoration.BOLD)) + .append(color(wrappedLine)); + } + + return message.appendNewline(); + } + + public static List wrapText(String text, int maxLineLength, int offset) { + List lines = new ArrayList<>(); + + if (text == null || text.isEmpty() || maxLineLength <= 0) { + return lines; + } + + String[] words = text.split("\\s+"); + StringBuilder currentLine = new StringBuilder(); + int currentLineLength = offset; + + for (String word : words) { + if (currentLineLength + word.length() + 1 > maxLineLength) { + lines.add(currentLine.toString()); + currentLine = new StringBuilder(); + currentLineLength = 0; + } + + if (!currentLine.isEmpty()) { + currentLine.append(" "); + currentLineLength++; + } + + currentLine.append(word); + currentLineLength += word.length(); + } + + if (!currentLine.isEmpty()) { + lines.add(currentLine.toString()); + } + + return lines; + } + + +} + diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..d2f0d5c --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,8 @@ +name: ArmorSMP +version: '1.0-SNAPSHOT' +main: me.trouper.armorsmp.ArmorSMP +api-version: '1.21' +prefix: ArmorSMP +load: STARTUP +authors: [ obvWolf ] +description: Kill Based Armor Upgrading