├── .github └── ISSUE_TEMPLATE │ └── bug_report.md ├── .gitignore ├── LICENSE ├── README.md ├── README_zh-CN.md ├── build.gradle.kts ├── config └── checkstyle │ └── checkstyle.xml ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── release ├── Jstack Minecraft v1.zip ├── Jstack Minecraft v2.zip ├── Jstack Minecraft v3.zip ├── Jstack Minecraft v4.zip ├── Jstack Minecraft v5.zip ├── Jstack Minecraft v6.zip ├── Jstack Minecraft v7.zip └── Jstack Minecraft │ ├── Run_Mac.command │ ├── Run_Windows.bat │ └── jre_Windows │ ├── bin │ ├── api-ms-win-core-console-l1-1-0.dll │ ├── api-ms-win-core-console-l1-2-0.dll │ ├── api-ms-win-core-datetime-l1-1-0.dll │ ├── api-ms-win-core-debug-l1-1-0.dll │ ├── api-ms-win-core-errorhandling-l1-1-0.dll │ ├── api-ms-win-core-file-l1-1-0.dll │ ├── api-ms-win-core-file-l1-2-0.dll │ ├── api-ms-win-core-file-l2-1-0.dll │ ├── api-ms-win-core-handle-l1-1-0.dll │ ├── api-ms-win-core-heap-l1-1-0.dll │ ├── api-ms-win-core-interlocked-l1-1-0.dll │ ├── api-ms-win-core-libraryloader-l1-1-0.dll │ ├── api-ms-win-core-localization-l1-2-0.dll │ ├── api-ms-win-core-memory-l1-1-0.dll │ ├── api-ms-win-core-namedpipe-l1-1-0.dll │ ├── api-ms-win-core-processenvironment-l1-1-0.dll │ ├── api-ms-win-core-processthreads-l1-1-0.dll │ ├── api-ms-win-core-processthreads-l1-1-1.dll │ ├── api-ms-win-core-profile-l1-1-0.dll │ ├── api-ms-win-core-rtlsupport-l1-1-0.dll │ ├── api-ms-win-core-string-l1-1-0.dll │ ├── api-ms-win-core-synch-l1-1-0.dll │ ├── api-ms-win-core-synch-l1-2-0.dll │ ├── api-ms-win-core-sysinfo-l1-1-0.dll │ ├── api-ms-win-core-timezone-l1-1-0.dll │ ├── api-ms-win-core-util-l1-1-0.dll │ ├── api-ms-win-crt-conio-l1-1-0.dll │ ├── api-ms-win-crt-convert-l1-1-0.dll │ ├── api-ms-win-crt-environment-l1-1-0.dll │ ├── api-ms-win-crt-filesystem-l1-1-0.dll │ ├── api-ms-win-crt-heap-l1-1-0.dll │ ├── api-ms-win-crt-locale-l1-1-0.dll │ ├── api-ms-win-crt-math-l1-1-0.dll │ ├── api-ms-win-crt-multibyte-l1-1-0.dll │ ├── api-ms-win-crt-private-l1-1-0.dll │ ├── api-ms-win-crt-process-l1-1-0.dll │ ├── api-ms-win-crt-runtime-l1-1-0.dll │ ├── api-ms-win-crt-stdio-l1-1-0.dll │ ├── api-ms-win-crt-string-l1-1-0.dll │ ├── api-ms-win-crt-time-l1-1-0.dll │ ├── api-ms-win-crt-utility-l1-1-0.dll │ ├── attach.dll │ ├── java.dll │ ├── java.exe │ ├── javaw.exe │ ├── jimage.dll │ ├── jli.dll │ ├── keytool.exe │ ├── msvcp140.dll │ ├── net.dll │ ├── nio.dll │ ├── server │ │ └── jvm.dll │ ├── ucrtbase.dll │ ├── vcruntime140.dll │ ├── verify.dll │ └── zip.dll │ ├── conf │ ├── net.properties │ └── security │ │ ├── java.policy │ │ ├── java.security │ │ └── policy │ │ ├── README.txt │ │ ├── limited │ │ ├── default_US_export.policy │ │ ├── default_local.policy │ │ └── exempt_local.policy │ │ └── unlimited │ │ ├── default_US_export.policy │ │ └── default_local.policy │ ├── legal │ ├── java.base │ │ ├── LICENSE │ │ ├── aes.md │ │ ├── asm.md │ │ ├── c-libutl.md │ │ ├── cldr.md │ │ ├── icu.md │ │ ├── public_suffix.md │ │ ├── unicode.md │ │ ├── wepoll.md │ │ └── zlib.md │ ├── jdk.attach │ │ └── LICENSE │ └── jdk.internal.jvmstat │ │ └── LICENSE │ ├── lib │ ├── classlist │ ├── jrt-fs.jar │ ├── jvm.cfg │ ├── jvm.lib │ ├── modules │ ├── security │ │ ├── blocked.certs │ │ ├── cacerts │ │ ├── default.policy │ │ └── public_suffix_list.dat │ ├── tzdb.dat │ └── tzmappings │ └── release ├── settings.gradle.kts └── src └── main └── java └── net └── burningtnt ├── jstackmc ├── GameDumpCreator.java ├── JVMCommandExecutor.java ├── JVMDescriptorAnalyzer.java ├── Logging.java └── Main.java └── tdparser ├── ThreadDumpAnalyzer.java ├── infos ├── DumpInfo.java ├── JNIRefInfo.java ├── SMRInfo.java ├── ThreadInfo.java ├── ThreadStateInfo.java └── stacktrace │ ├── AbstractStackTraceElement.java │ ├── FunctionStackTraceElement.java │ ├── LockedStackTraceElement.java │ ├── ParkingStackTraceElement.java │ └── WaitingStackTraceElement.java └── results ├── IThreadDumpAnalyzedResult.java ├── InvalidThreadDumpException.java └── ThreadDumpReport.java /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Environment (please complete the following information):** 27 | - OS: [e.g. Windows 10] 28 | - Version [e.g. V3] 29 | 30 | **Additional context** 31 | Add any other context about the problem here. 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | build/ 2 | .idea/ 3 | .gradle/ 4 | 5 | release/ 6 | dumps/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Jstack Minecraft 2 | Copyright (C) 2020 Burning_TNT 3 | 4 | All rights reserved, except: 5 | 1. You can put the links of artifacts on your website. 6 | 2. You can use a proxy to download artifacts. Cache operation is permitted, which means you can upload the artifact on mavens/mirrors/any other websites. 7 | 3. You can use the entire repository under MIT license, if ANY situation(s) below is/are matched: 8 | (1) Your repo is FULLY under GPLv3 license (without additional terms, see GPLv3 Section 7). 9 | (2) Your project is HMCL itself (https://github.com/HMCL-dev/HMCL) or its valid forks. 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | JStack Minecraft: An analysis tool specifically developed for Minecraft: Java Edition 2 | ================= 3 | 4 | **Language**: [zh-CN](https://github.com/burningtnt/JStack-Minecraft/blob/main/README_zh-CN.md) **en-EN** 5 | 6 | ### Introduction 7 | **JStack Minecraft** is an analysis tool specifically developed for **Minecraft: Java Edition**. It can generate a snapshot of the game's running stack so that crash analysts can quickly find the cause of your game freeze. 8 | 9 | ### Usage 10 | 1. Download and unzip the [release](https://github.com/burningtnt/JStack-Minecraft/tree/main/release) file. 11 | 2. Run the **Run_Windows.bat** file (Windows Users) or **Run_Mac.command** file (Mac Users) in the unzipped folder. 12 | 3. Wait until a black window pops up displaying the word **Finish**, and then upload the selected file in the preview window that pops up later. 13 | 14 | ### Downloads 15 | *Github: [Jstack Minecraft v8.zip](https://github.com/burningtnt/JStack-Minecraft/releases/download/V8/Jstack.Minecraft.v8.zip) -------------------------------------------------------------------------------- /README_zh-CN.md: -------------------------------------------------------------------------------- 1 | JStack Minecraft: 一款专门为 Minecraft: Java Edition 开发的分析工具 2 | ================= 3 | 4 | **语言**:**zh-CN** [en-EN](https://github.com/burningtnt/JStack-Minecraft/blob/main/README.md) 5 | 6 | ### 简介 7 | **Jstack Minecraft** 是一款专门为 **Minecraft: Java Edition** 开发的分析工具。它可以生成游戏运行栈的快照以便崩溃分析人员更加快速的找到您游戏卡死的原因。 8 | 9 | ### 使用方法 10 | 1. 下载[Release](https://github.com/burningtnt/JStack-Minecraft/tree/main/release)中的文件并解压。 11 | 2. 运行解压后文件夹内的 **Run_Windows.bat** 文件(Windows用户)或 **Run_Mac.command** 文件(Mac用户)。 12 | 3. 等到弹出的黑色窗口中显示 **Finish** 字样,上传稍后弹出的文件预览窗口中选中的文件。 13 | 14 | ### 下载 15 | *Github: [Jstack Minecraft v8.zip](https://github.com/burningtnt/JStack-Minecraft/releases/download/V8/Jstack.Minecraft.v8.zip) 16 | -------------------------------------------------------------------------------- /build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("java-library") 3 | id("maven-publish") 4 | id("checkstyle") 5 | id("com.github.johnrengelman.shadow") version "7.1.2" 6 | } 7 | 8 | group = "com.github.burningtnt" 9 | version = "0.9.0" 10 | description = "An analysis tool specifically developed for Minecraft: Java Edition" 11 | 12 | java { 13 | withSourcesJar() 14 | } 15 | 16 | repositories { 17 | mavenCentral() 18 | } 19 | 20 | val javadocJar = tasks.create("javadocJar") { 21 | group = "build" 22 | archiveClassifier.set("javadoc") 23 | } 24 | 25 | tasks.compileJava { 26 | listOf( 27 | "jdk.attach/sun.tools.attach" 28 | ).forEach { string -> 29 | this.options.compilerArgs.add("--add-exports") 30 | this.options.compilerArgs.add("${string}=ALL-UNNAMED") 31 | } 32 | } 33 | 34 | checkstyle { 35 | sourceSets = mutableSetOf() 36 | } 37 | 38 | tasks.getByName("build") { 39 | dependsOn(tasks.getByName("checkstyleMain") { 40 | group = "build" 41 | }) 42 | 43 | dependsOn(tasks.getByName("checkstyleTest") { 44 | group = "build" 45 | }) 46 | 47 | dependsOn(tasks.getByName("shadowJar") { 48 | manifest { 49 | attributes( 50 | "Main-Class" to "net.burningtnt.jstackmc.Main", 51 | "Add-Opens" to listOf( 52 | "jdk.attach/sun.tools.attach" 53 | ).joinToString(" ") 54 | ) 55 | } 56 | }) 57 | } 58 | 59 | dependencies { 60 | compileOnly("org.jetbrains:annotations:24.0.1") 61 | 62 | testImplementation(project) 63 | } 64 | 65 | publishing { 66 | publications { 67 | create("maven") { 68 | groupId = project.group.toString() 69 | artifactId = project.name 70 | version = project.version.toString() 71 | 72 | from(components["java"]) 73 | } 74 | } 75 | } -------------------------------------------------------------------------------- /config/checkstyle/checkstyle.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # 4 | # Copyright © 2015-2021 the original authors. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # https://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | ############################################################################## 20 | # 21 | # Gradle start up script for POSIX generated by Gradle. 22 | # 23 | # Important for running: 24 | # 25 | # (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is 26 | # noncompliant, but you have some other compliant shell such as ksh or 27 | # bash, then to run this script, type that shell name before the whole 28 | # command line, like: 29 | # 30 | # ksh Gradle 31 | # 32 | # Busybox and similar reduced shells will NOT work, because this script 33 | # requires all of these POSIX shell features: 34 | # * functions; 35 | # * expansions «$var», «${var}», «${var:-default}», «${var+SET}», 36 | # «${var#prefix}», «${var%suffix}», and «$( cmd )»; 37 | # * compound commands having a testable exit status, especially «case»; 38 | # * various built-in commands including «command», «set», and «ulimit». 39 | # 40 | # Important for patching: 41 | # 42 | # (2) This script targets any POSIX shell, so it avoids extensions provided 43 | # by Bash, Ksh, etc; in particular arrays are avoided. 44 | # 45 | # The "traditional" practice of packing multiple parameters into a 46 | # space-separated string is a well documented source of bugs and security 47 | # problems, so this is (mostly) avoided, by progressively accumulating 48 | # options in "$@", and eventually passing that to Java. 49 | # 50 | # Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, 51 | # and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; 52 | # see the in-line comments for details. 53 | # 54 | # There are tweaks for specific operating systems such as AIX, CygWin, 55 | # Darwin, MinGW, and NonStop. 56 | # 57 | # (3) This script is generated from the Groovy template 58 | # https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt 59 | # within the Gradle project. 60 | # 61 | # You can find Gradle at https://github.com/gradle/gradle/. 62 | # 63 | ############################################################################## 64 | 65 | # Attempt to set APP_HOME 66 | 67 | # Resolve links: $0 may be a link 68 | app_path=$0 69 | 70 | # Need this for daisy-chained symlinks. 71 | while 72 | APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path 73 | [ -h "$app_path" ] 74 | do 75 | ls=$( ls -ld "$app_path" ) 76 | link=${ls#*' -> '} 77 | case $link in #( 78 | /*) app_path=$link ;; #( 79 | *) app_path=$APP_HOME$link ;; 80 | esac 81 | done 82 | 83 | APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit 84 | 85 | APP_NAME="Gradle" 86 | APP_BASE_NAME=${0##*/} 87 | 88 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 89 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' 90 | 91 | # Use the maximum available, or set MAX_FD != -1 to use that value. 92 | MAX_FD=maximum 93 | 94 | warn () { 95 | echo "$*" 96 | } >&2 97 | 98 | die () { 99 | echo 100 | echo "$*" 101 | echo 102 | exit 1 103 | } >&2 104 | 105 | # OS specific support (must be 'true' or 'false'). 106 | cygwin=false 107 | msys=false 108 | darwin=false 109 | nonstop=false 110 | case "$( uname )" in #( 111 | CYGWIN* ) cygwin=true ;; #( 112 | Darwin* ) darwin=true ;; #( 113 | MSYS* | MINGW* ) msys=true ;; #( 114 | NONSTOP* ) nonstop=true ;; 115 | esac 116 | 117 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 118 | 119 | 120 | # Determine the Java command to use to start the JVM. 121 | if [ -n "$JAVA_HOME" ] ; then 122 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 123 | # IBM's JDK on AIX uses strange locations for the executables 124 | JAVACMD=$JAVA_HOME/jre/sh/java 125 | else 126 | JAVACMD=$JAVA_HOME/bin/java 127 | fi 128 | if [ ! -x "$JAVACMD" ] ; then 129 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 130 | 131 | Please set the JAVA_HOME variable in your environment to match the 132 | location of your Java installation." 133 | fi 134 | else 135 | JAVACMD=java 136 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 137 | 138 | Please set the JAVA_HOME variable in your environment to match the 139 | location of your Java installation." 140 | fi 141 | 142 | # Increase the maximum file descriptors if we can. 143 | if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then 144 | case $MAX_FD in #( 145 | max*) 146 | MAX_FD=$( ulimit -H -n ) || 147 | warn "Could not query maximum file descriptor limit" 148 | esac 149 | case $MAX_FD in #( 150 | '' | soft) :;; #( 151 | *) 152 | ulimit -n "$MAX_FD" || 153 | warn "Could not set maximum file descriptor limit to $MAX_FD" 154 | esac 155 | fi 156 | 157 | # Collect all arguments for the java command, stacking in reverse order: 158 | # * args from the command line 159 | # * the main class name 160 | # * -classpath 161 | # * -D...appname settings 162 | # * --module-path (only if needed) 163 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. 164 | 165 | # For Cygwin or MSYS, switch paths to Windows format before running java 166 | if "$cygwin" || "$msys" ; then 167 | APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) 168 | CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) 169 | 170 | JAVACMD=$( cygpath --unix "$JAVACMD" ) 171 | 172 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 173 | for arg do 174 | if 175 | case $arg in #( 176 | -*) false ;; # don't mess with options #( 177 | /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath 178 | [ -e "$t" ] ;; #( 179 | *) false ;; 180 | esac 181 | then 182 | arg=$( cygpath --path --ignore --mixed "$arg" ) 183 | fi 184 | # Roll the args list around exactly as many times as the number of 185 | # args, so each arg winds up back in the position where it started, but 186 | # possibly modified. 187 | # 188 | # NB: a `for` loop captures its iteration list before it begins, so 189 | # changing the positional parameters here affects neither the number of 190 | # iterations, nor the values presented in `arg`. 191 | shift # remove old arg 192 | set -- "$@" "$arg" # push replacement arg 193 | done 194 | fi 195 | 196 | # Collect all arguments for the java command; 197 | # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of 198 | # shell script including quotes and variable substitutions, so put them in 199 | # double quotes to make sure that they get re-expanded; and 200 | # * put everything else in single quotes, so that it's not re-expanded. 201 | 202 | set -- \ 203 | "-Dorg.gradle.appname=$APP_BASE_NAME" \ 204 | -classpath "$CLASSPATH" \ 205 | org.gradle.wrapper.GradleWrapperMain \ 206 | "$@" 207 | 208 | # Use "xargs" to parse quoted args. 209 | # 210 | # With -n1 it outputs one arg per line, with the quotes and backslashes removed. 211 | # 212 | # In Bash we could simply go: 213 | # 214 | # readarray ARGS < <( xargs -n1 <<<"$var" ) && 215 | # set -- "${ARGS[@]}" "$@" 216 | # 217 | # but POSIX shell has neither arrays nor command substitution, so instead we 218 | # post-process each arg (as a line of input to sed) to backslash-escape any 219 | # character that might be a shell metacharacter, then use eval to reverse 220 | # that process (while maintaining the separation between arguments), and wrap 221 | # the whole thing up as a single "set" statement. 222 | # 223 | # This will of course break if any of these variables contains a newline or 224 | # an unmatched quote. 225 | # 226 | 227 | eval "set -- $( 228 | printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | 229 | xargs -n1 | 230 | sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | 231 | tr '\n' ' ' 232 | )" '"$@"' 233 | 234 | exec "$JAVACMD" "$@" 235 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%" == "" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%" == "" set DIRNAME=. 29 | set APP_BASE_NAME=%~n0 30 | set APP_HOME=%DIRNAME% 31 | 32 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 33 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 34 | 35 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 36 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 37 | 38 | @rem Find java.exe 39 | if defined JAVA_HOME goto findJavaFromJavaHome 40 | 41 | set JAVA_EXE=java.exe 42 | %JAVA_EXE% -version >NUL 2>&1 43 | if "%ERRORLEVEL%" == "0" goto execute 44 | 45 | echo. 46 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 47 | echo. 48 | echo Please set the JAVA_HOME variable in your environment to match the 49 | echo location of your Java installation. 50 | 51 | goto fail 52 | 53 | :findJavaFromJavaHome 54 | set JAVA_HOME=%JAVA_HOME:"=% 55 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 56 | 57 | if exist "%JAVA_EXE%" goto execute 58 | 59 | echo. 60 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 61 | echo. 62 | echo Please set the JAVA_HOME variable in your environment to match the 63 | echo location of your Java installation. 64 | 65 | goto fail 66 | 67 | :execute 68 | @rem Setup the command line 69 | 70 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 71 | 72 | 73 | @rem Execute Gradle 74 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 75 | 76 | :end 77 | @rem End local scope for the variables with windows NT shell 78 | if "%ERRORLEVEL%"=="0" goto mainEnd 79 | 80 | :fail 81 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 82 | rem the _cmd.exe /c_ return code! 83 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 84 | exit /b 1 85 | 86 | :mainEnd 87 | if "%OS%"=="Windows_NT" endlocal 88 | 89 | :omega 90 | -------------------------------------------------------------------------------- /release/Jstack Minecraft v1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft v1.zip -------------------------------------------------------------------------------- /release/Jstack Minecraft v2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft v2.zip -------------------------------------------------------------------------------- /release/Jstack Minecraft v3.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft v3.zip -------------------------------------------------------------------------------- /release/Jstack Minecraft v4.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft v4.zip -------------------------------------------------------------------------------- /release/Jstack Minecraft v5.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft v5.zip -------------------------------------------------------------------------------- /release/Jstack Minecraft v6.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft v6.zip -------------------------------------------------------------------------------- /release/Jstack Minecraft v7.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft v7.zip -------------------------------------------------------------------------------- /release/Jstack Minecraft/Run_Mac.command: -------------------------------------------------------------------------------- 1 | java -jar "Jstack-Minecraft.jar" 2 | 3 | read -rsp $'Press enter to exit.\n' 4 | -------------------------------------------------------------------------------- /release/Jstack Minecraft/Run_Windows.bat: -------------------------------------------------------------------------------- 1 | %1 start "" mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c pushd ""%~dp0"" && ""%~s0"" ::","","runas",1)(window.close)&&exit 2 | cd %~dp0 3 | jre_Windows\bin\java.exe -jar "Jstack-Minecraft.jar" 4 | pause 5 | -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-console-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-console-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-console-l1-2-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-console-l1-2-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-datetime-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-datetime-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-debug-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-debug-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-errorhandling-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-errorhandling-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-file-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-file-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-file-l1-2-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-file-l1-2-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-file-l2-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-file-l2-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-handle-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-handle-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-heap-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-heap-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-interlocked-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-interlocked-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-libraryloader-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-libraryloader-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-localization-l1-2-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-localization-l1-2-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-memory-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-memory-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-namedpipe-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-namedpipe-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-processenvironment-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-processenvironment-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-processthreads-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-processthreads-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-processthreads-l1-1-1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-processthreads-l1-1-1.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-profile-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-profile-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-rtlsupport-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-rtlsupport-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-string-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-string-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-synch-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-synch-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-synch-l1-2-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-synch-l1-2-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-sysinfo-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-sysinfo-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-timezone-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-timezone-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-util-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-core-util-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-conio-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-conio-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-convert-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-convert-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-environment-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-environment-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-filesystem-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-filesystem-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-heap-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-heap-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-locale-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-locale-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-math-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-math-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-multibyte-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-multibyte-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-private-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-private-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-process-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-process-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-runtime-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-runtime-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-stdio-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-stdio-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-string-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-string-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-time-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-time-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-utility-l1-1-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/api-ms-win-crt-utility-l1-1-0.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/attach.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/attach.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/java.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/java.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/java.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/java.exe -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/javaw.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/javaw.exe -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/jimage.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/jimage.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/jli.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/jli.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/keytool.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/keytool.exe -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/msvcp140.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/msvcp140.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/net.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/net.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/nio.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/nio.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/server/jvm.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/server/jvm.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/ucrtbase.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/ucrtbase.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/vcruntime140.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/vcruntime140.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/verify.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/verify.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/bin/zip.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/bin/zip.dll -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/conf/net.properties: -------------------------------------------------------------------------------- 1 | ############################################################ 2 | # Default Networking Configuration File 3 | # 4 | # This file may contain default values for the networking system properties. 5 | # These values are only used when the system properties are not specified 6 | # on the command line or set programmatically. 7 | # For now, only the various proxy settings can be configured here. 8 | ############################################################ 9 | 10 | # Whether or not the DefaultProxySelector will default to System Proxy 11 | # settings when they do exist. 12 | # Set it to 'true' to enable this feature and check for platform 13 | # specific proxy settings 14 | # Note that the system properties that do explicitly set proxies 15 | # (like http.proxyHost) do take precedence over the system settings 16 | # even if java.net.useSystemProxies is set to true. 17 | 18 | java.net.useSystemProxies=false 19 | 20 | #------------------------------------------------------------------------ 21 | # Proxy configuration for the various protocol handlers. 22 | # DO NOT uncomment these lines if you have set java.net.useSystemProxies 23 | # to true as the protocol specific properties will take precedence over 24 | # system settings. 25 | #------------------------------------------------------------------------ 26 | 27 | # HTTP Proxy settings. proxyHost is the name of the proxy server 28 | # (e.g. proxy.mydomain.com), proxyPort is the port number to use (default 29 | # value is 80) and nonProxyHosts is a '|' separated list of hostnames which 30 | # should be accessed directly, ignoring the proxy server (default value is 31 | # localhost & 127.0.0.1). 32 | # 33 | # http.proxyHost= 34 | # http.proxyPort=80 35 | http.nonProxyHosts=localhost|127.*|[::1] 36 | # 37 | # HTTPS Proxy Settings. proxyHost is the name of the proxy server 38 | # (e.g. proxy.mydomain.com), proxyPort is the port number to use (default 39 | # value is 443). The HTTPS protocol handlers uses the http nonProxyHosts list. 40 | # 41 | # https.proxyHost= 42 | # https.proxyPort=443 43 | # 44 | # FTP Proxy settings. proxyHost is the name of the proxy server 45 | # (e.g. proxy.mydomain.com), proxyPort is the port number to use (default 46 | # value is 80) and nonProxyHosts is a '|' separated list of hostnames which 47 | # should be accessed directly, ignoring the proxy server (default value is 48 | # localhost & 127.0.0.1). 49 | # 50 | # ftp.proxyHost= 51 | # ftp.proxyPort=80 52 | ftp.nonProxyHosts=localhost|127.*|[::1] 53 | # 54 | # Socks proxy settings. socksProxyHost is the name of the proxy server 55 | # (e.g. socks.domain.com), socksProxyPort is the port number to use 56 | # (default value is 1080) 57 | # 58 | # socksProxyHost= 59 | # socksProxyPort=1080 60 | # 61 | # HTTP Keep Alive settings. remainingData is the maximum amount of data 62 | # in kilobytes that will be cleaned off the underlying socket so that it 63 | # can be reused (default value is 512K), queuedConnections is the maximum 64 | # number of Keep Alive connections to be on the queue for clean up (default 65 | # value is 10). 66 | # http.KeepAlive.remainingData=512 67 | # http.KeepAlive.queuedConnections=10 68 | 69 | # Authentication Scheme restrictions for HTTP and HTTPS. 70 | # 71 | # In some environments certain authentication schemes may be undesirable 72 | # when proxying HTTP or HTTPS. For example, "Basic" results in effectively the 73 | # cleartext transmission of the user's password over the physical network. 74 | # This section describes the mechanism for disabling authentication schemes 75 | # based on the scheme name. Disabled schemes will be treated as if they are not 76 | # supported by the implementation. 77 | # 78 | # The 'jdk.http.auth.tunneling.disabledSchemes' property lists the authentication 79 | # schemes that will be disabled when tunneling HTTPS over a proxy, HTTP CONNECT. 80 | # The 'jdk.http.auth.proxying.disabledSchemes' property lists the authentication 81 | # schemes that will be disabled when proxying HTTP. 82 | # 83 | # In both cases the property is a comma-separated list of, case-insensitive, 84 | # authentication scheme names, as defined by their relevant RFCs. An 85 | # implementation may, but is not required to, support common schemes whose names 86 | # include: 'Basic', 'Digest', 'NTLM', 'Kerberos', 'Negotiate'. A scheme that 87 | # is not known, or not supported, by the implementation is ignored. 88 | # 89 | # Note: This property is currently used by the JDK Reference implementation. It 90 | # is not guaranteed to be examined and used by other implementations. 91 | # 92 | #jdk.http.auth.proxying.disabledSchemes= 93 | jdk.http.auth.tunneling.disabledSchemes=Basic 94 | 95 | # 96 | # Allow restricted HTTP request headers 97 | # 98 | # By default, the following request headers are not allowed to be set by user code 99 | # in HttpRequests: "connection", "content-length", "expect", "host" and "upgrade". 100 | # The 'jdk.httpclient.allowRestrictedHeaders' property allows one or more of these 101 | # headers to be specified as a comma separated list to override the default restriction. 102 | # The names are case-insensitive and white-space is ignored (removed before processing 103 | # the list). Note, this capability is mostly intended for testing and isn't expected 104 | # to be used in real deployments. Protocol errors or other undefined behavior is likely 105 | # to occur when using them. The property is not set by default. 106 | # Note also, that there may be other headers that are restricted from being set 107 | # depending on the context. This includes the "Authorization" header when the 108 | # relevant HttpClient has an authenticator set. These restrictions cannot be 109 | # overridden by this property. 110 | # 111 | # jdk.httpclient.allowRestrictedHeaders=host 112 | # 113 | # 114 | # Transparent NTLM HTTP authentication mode on Windows. Transparent authentication 115 | # can be used for the NTLM scheme, where the security credentials based on the 116 | # currently logged in user's name and password can be obtained directly from the 117 | # operating system, without prompting the user. This property has three possible 118 | # values which regulate the behavior as shown below. Other unrecognized values 119 | # are handled the same as 'disabled'. Note, that NTLM is not considered to be a 120 | # strongly secure authentication scheme and care should be taken before enabling 121 | # this mechanism. 122 | # 123 | # Transparent authentication never used. 124 | #jdk.http.ntlm.transparentAuth=disabled 125 | # 126 | # Enabled for all hosts. 127 | #jdk.http.ntlm.transparentAuth=allHosts 128 | # 129 | # Enabled for hosts that are trusted in Windows Internet settings 130 | #jdk.http.ntlm.transparentAuth=trustedHosts 131 | # 132 | jdk.http.ntlm.transparentAuth=disabled 133 | # 134 | # Default directory where automatically bound Unix domain server 135 | # sockets are stored. Sockets are automatically bound when bound 136 | # with a null address. 137 | # 138 | # The search order for the directory on Windows is: 139 | # 140 | # 1. System property "jdk.net.unixdomain.tmpdir" 141 | # 142 | # 2. Networking property "jdk.net.unixdomain.tmpdir" specified 143 | # in this file (not set by default) 144 | # 145 | # 3. The TEMP environment variable (the effective default) 146 | # 147 | # 4. The java.io.tmpdir system property 148 | # 149 | #jdk.net.unixdomain.tmpdir= 150 | # 151 | 152 | -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/conf/security/java.policy: -------------------------------------------------------------------------------- 1 | // 2 | // This system policy file grants a set of default permissions to all domains 3 | // and can be configured to grant additional permissions to modules and other 4 | // code sources. The code source URL scheme for modules linked into a 5 | // run-time image is "jrt". 6 | // 7 | // For example, to grant permission to read the "foo" property to the module 8 | // "com.greetings", the grant entry is: 9 | // 10 | // grant codeBase "jrt:/com.greetings" { 11 | // permission java.util.PropertyPermission "foo", "read"; 12 | // }; 13 | // 14 | 15 | // default permissions granted to all domains 16 | grant { 17 | // allows anyone to listen on dynamic ports 18 | permission java.net.SocketPermission "localhost:0", "listen"; 19 | 20 | // "standard" properies that can be read by anyone 21 | permission java.util.PropertyPermission "java.version", "read"; 22 | permission java.util.PropertyPermission "java.vendor", "read"; 23 | permission java.util.PropertyPermission "java.vendor.url", "read"; 24 | permission java.util.PropertyPermission "java.class.version", "read"; 25 | permission java.util.PropertyPermission "os.name", "read"; 26 | permission java.util.PropertyPermission "os.version", "read"; 27 | permission java.util.PropertyPermission "os.arch", "read"; 28 | permission java.util.PropertyPermission "file.separator", "read"; 29 | permission java.util.PropertyPermission "path.separator", "read"; 30 | permission java.util.PropertyPermission "line.separator", "read"; 31 | permission java.util.PropertyPermission 32 | "java.specification.version", "read"; 33 | permission java.util.PropertyPermission "java.specification.vendor", "read"; 34 | permission java.util.PropertyPermission "java.specification.name", "read"; 35 | permission java.util.PropertyPermission 36 | "java.vm.specification.version", "read"; 37 | permission java.util.PropertyPermission 38 | "java.vm.specification.vendor", "read"; 39 | permission java.util.PropertyPermission 40 | "java.vm.specification.name", "read"; 41 | permission java.util.PropertyPermission "java.vm.version", "read"; 42 | permission java.util.PropertyPermission "java.vm.vendor", "read"; 43 | permission java.util.PropertyPermission "java.vm.name", "read"; 44 | }; 45 | -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/conf/security/policy/README.txt: -------------------------------------------------------------------------------- 1 | 2 | Java(TM) Cryptography Extension Policy Files 3 | for the Java(TM) Platform, Standard Edition Runtime Environment 4 | 5 | README 6 | ------------------------------------------------------------------------ 7 | 8 | Import and export control rules on cryptographic software vary from 9 | country to country. The Java Cryptography Extension (JCE) architecture 10 | allows flexible cryptographic key strength to be configured via the 11 | jurisdiction policy files which are referenced by the "crypto.policy" 12 | security property in the /conf/security/java.security file. 13 | 14 | By default, Java provides two different sets of cryptographic policy 15 | files: 16 | 17 | unlimited: These policy files contain no restrictions on cryptographic 18 | strengths or algorithms 19 | 20 | limited: These policy files contain more restricted cryptographic 21 | strengths 22 | 23 | These files reside in /conf/security/policy in the "unlimited" 24 | or "limited" subdirectories respectively. 25 | 26 | Each subdirectory contains a complete policy configuration, 27 | and subdirectories can be added/edited/removed to reflect your 28 | import or export control product requirements. 29 | 30 | Within a subdirectory, the effective policy is the combined minimum 31 | permissions of the grant statements in the file(s) matching the filename 32 | pattern "default_*.policy". At least one grant is required. For example: 33 | 34 | limited = Export (all) + Import (limited) = Limited 35 | unlimited = Export (all) + Import (all) = Unlimited 36 | 37 | The effective exemption policy is the combined minimum permissions 38 | of the grant statements in the file(s) matching the filename pattern 39 | "exempt_*.policy". Exemption grants are optional. For example: 40 | 41 | limited = grants exemption permissions, by which the 42 | effective policy can be circumvented. 43 | e.g. KeyRecovery/KeyEscrow/KeyWeakening. 44 | 45 | Please see the Java Cryptography Architecture (JCA) documentation for 46 | additional information on these files and formats. 47 | 48 | YOU ARE ADVISED TO CONSULT YOUR EXPORT/IMPORT CONTROL COUNSEL OR ATTORNEY 49 | TO DETERMINE THE EXACT REQUIREMENTS. 50 | 51 | Please note that the JCE for Java SE, including the JCE framework, 52 | cryptographic policy files, and standard JCE providers provided with 53 | the Java SE, have been reviewed and approved for export as mass market 54 | encryption item by the US Bureau of Industry and Security. 55 | -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/conf/security/policy/limited/default_US_export.policy: -------------------------------------------------------------------------------- 1 | // Default US Export policy file. 2 | 3 | grant { 4 | // There is no restriction to any algorithms. 5 | permission javax.crypto.CryptoAllPermission; 6 | }; 7 | -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/conf/security/policy/limited/default_local.policy: -------------------------------------------------------------------------------- 1 | // Some countries have import limits on crypto strength. This policy file 2 | // is worldwide importable. 3 | 4 | grant { 5 | permission javax.crypto.CryptoPermission "DES", 64; 6 | permission javax.crypto.CryptoPermission "DESede", *; 7 | permission javax.crypto.CryptoPermission "RC2", 128, 8 | "javax.crypto.spec.RC2ParameterSpec", 128; 9 | permission javax.crypto.CryptoPermission "RC4", 128; 10 | permission javax.crypto.CryptoPermission "RC5", 128, 11 | "javax.crypto.spec.RC5ParameterSpec", *, 12, *; 12 | permission javax.crypto.CryptoPermission "RSA", *; 13 | permission javax.crypto.CryptoPermission *, 128; 14 | }; 15 | -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/conf/security/policy/limited/exempt_local.policy: -------------------------------------------------------------------------------- 1 | // Some countries have import limits on crypto strength, but may allow for 2 | // these exemptions if the exemption mechanism is used. 3 | 4 | grant { 5 | // There is no restriction to any algorithms if KeyRecovery is enforced. 6 | permission javax.crypto.CryptoPermission *, "KeyRecovery"; 7 | 8 | // There is no restriction to any algorithms if KeyEscrow is enforced. 9 | permission javax.crypto.CryptoPermission *, "KeyEscrow"; 10 | 11 | // There is no restriction to any algorithms if KeyWeakening is enforced. 12 | permission javax.crypto.CryptoPermission *, "KeyWeakening"; 13 | }; 14 | -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/conf/security/policy/unlimited/default_US_export.policy: -------------------------------------------------------------------------------- 1 | // Default US Export policy file. 2 | 3 | grant { 4 | // There is no restriction to any algorithms. 5 | permission javax.crypto.CryptoAllPermission; 6 | }; 7 | -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/conf/security/policy/unlimited/default_local.policy: -------------------------------------------------------------------------------- 1 | // Country-specific policy file for countries with no limits on crypto strength. 2 | 3 | grant { 4 | // There is no restriction to any algorithms. 5 | permission javax.crypto.CryptoAllPermission; 6 | }; 7 | -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/legal/java.base/LICENSE: -------------------------------------------------------------------------------- 1 | The GNU General Public License (GPL) 2 | 3 | Version 2, June 1991 4 | 5 | Copyright (C) 1989, 1991 Free Software Foundation, Inc. 6 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 7 | 8 | Everyone is permitted to copy and distribute verbatim copies of this license 9 | document, but changing it is not allowed. 10 | 11 | Preamble 12 | 13 | The licenses for most software are designed to take away your freedom to share 14 | and change it. By contrast, the GNU General Public License is intended to 15 | guarantee your freedom to share and change free software--to make sure the 16 | software is free for all its users. This General Public License applies to 17 | most of the Free Software Foundation's software and to any other program whose 18 | authors commit to using it. (Some other Free Software Foundation software is 19 | covered by the GNU Library General Public License instead.) You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not price. Our 23 | General Public Licenses are designed to make sure that you have the freedom to 24 | distribute copies of free software (and charge for this service if you wish), 25 | that you receive source code or can get it if you want it, that you can change 26 | the software or use pieces of it in new free programs; and that you know you 27 | can do these things. 28 | 29 | To protect your rights, we need to make restrictions that forbid anyone to deny 30 | you these rights or to ask you to surrender the rights. These restrictions 31 | translate to certain responsibilities for you if you distribute copies of the 32 | software, or if you modify it. 33 | 34 | For example, if you distribute copies of such a program, whether gratis or for 35 | a fee, you must give the recipients all the rights that you have. You must 36 | make sure that they, too, receive or can get the source code. And you must 37 | show them these terms so they know their rights. 38 | 39 | We protect your rights with two steps: (1) copyright the software, and (2) 40 | offer you this license which gives you legal permission to copy, distribute 41 | and/or modify the software. 42 | 43 | Also, for each author's protection and ours, we want to make certain that 44 | everyone understands that there is no warranty for this free software. If the 45 | software is modified by someone else and passed on, we want its recipients to 46 | know that what they have is not the original, so that any problems introduced 47 | by others will not reflect on the original authors' reputations. 48 | 49 | Finally, any free program is threatened constantly by software patents. We 50 | wish to avoid the danger that redistributors of a free program will 51 | individually obtain patent licenses, in effect making the program proprietary. 52 | To prevent this, we have made it clear that any patent must be licensed for 53 | everyone's free use or not licensed at all. 54 | 55 | The precise terms and conditions for copying, distribution and modification 56 | follow. 57 | 58 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 59 | 60 | 0. This License applies to any program or other work which contains a notice 61 | placed by the copyright holder saying it may be distributed under the terms of 62 | this General Public License. The "Program", below, refers to any such program 63 | or work, and a "work based on the Program" means either the Program or any 64 | derivative work under copyright law: that is to say, a work containing the 65 | Program or a portion of it, either verbatim or with modifications and/or 66 | translated into another language. (Hereinafter, translation is included 67 | without limitation in the term "modification".) Each licensee is addressed as 68 | "you". 69 | 70 | Activities other than copying, distribution and modification are not covered by 71 | this License; they are outside its scope. The act of running the Program is 72 | not restricted, and the output from the Program is covered only if its contents 73 | constitute a work based on the Program (independent of having been made by 74 | running the Program). Whether that is true depends on what the Program does. 75 | 76 | 1. You may copy and distribute verbatim copies of the Program's source code as 77 | you receive it, in any medium, provided that you conspicuously and 78 | appropriately publish on each copy an appropriate copyright notice and 79 | disclaimer of warranty; keep intact all the notices that refer to this License 80 | and to the absence of any warranty; and give any other recipients of the 81 | Program a copy of this License along with the Program. 82 | 83 | You may charge a fee for the physical act of transferring a copy, and you may 84 | at your option offer warranty protection in exchange for a fee. 85 | 86 | 2. You may modify your copy or copies of the Program or any portion of it, thus 87 | forming a work based on the Program, and copy and distribute such modifications 88 | or work under the terms of Section 1 above, provided that you also meet all of 89 | these conditions: 90 | 91 | a) You must cause the modified files to carry prominent notices stating 92 | that you changed the files and the date of any change. 93 | 94 | b) You must cause any work that you distribute or publish, that in whole or 95 | in part contains or is derived from the Program or any part thereof, to be 96 | licensed as a whole at no charge to all third parties under the terms of 97 | this License. 98 | 99 | c) If the modified program normally reads commands interactively when run, 100 | you must cause it, when started running for such interactive use in the 101 | most ordinary way, to print or display an announcement including an 102 | appropriate copyright notice and a notice that there is no warranty (or 103 | else, saying that you provide a warranty) and that users may redistribute 104 | the program under these conditions, and telling the user how to view a copy 105 | of this License. (Exception: if the Program itself is interactive but does 106 | not normally print such an announcement, your work based on the Program is 107 | not required to print an announcement.) 108 | 109 | These requirements apply to the modified work as a whole. If identifiable 110 | sections of that work are not derived from the Program, and can be reasonably 111 | considered independent and separate works in themselves, then this License, and 112 | its terms, do not apply to those sections when you distribute them as separate 113 | works. But when you distribute the same sections as part of a whole which is a 114 | work based on the Program, the distribution of the whole must be on the terms 115 | of this License, whose permissions for other licensees extend to the entire 116 | whole, and thus to each and every part regardless of who wrote it. 117 | 118 | Thus, it is not the intent of this section to claim rights or contest your 119 | rights to work written entirely by you; rather, the intent is to exercise the 120 | right to control the distribution of derivative or collective works based on 121 | the Program. 122 | 123 | In addition, mere aggregation of another work not based on the Program with the 124 | Program (or with a work based on the Program) on a volume of a storage or 125 | distribution medium does not bring the other work under the scope of this 126 | License. 127 | 128 | 3. You may copy and distribute the Program (or a work based on it, under 129 | Section 2) in object code or executable form under the terms of Sections 1 and 130 | 2 above provided that you also do one of the following: 131 | 132 | a) Accompany it with the complete corresponding machine-readable source 133 | code, which must be distributed under the terms of Sections 1 and 2 above 134 | on a medium customarily used for software interchange; or, 135 | 136 | b) Accompany it with a written offer, valid for at least three years, to 137 | give any third party, for a charge no more than your cost of physically 138 | performing source distribution, a complete machine-readable copy of the 139 | corresponding source code, to be distributed under the terms of Sections 1 140 | and 2 above on a medium customarily used for software interchange; or, 141 | 142 | c) Accompany it with the information you received as to the offer to 143 | distribute corresponding source code. (This alternative is allowed only 144 | for noncommercial distribution and only if you received the program in 145 | object code or executable form with such an offer, in accord with 146 | Subsection b above.) 147 | 148 | The source code for a work means the preferred form of the work for making 149 | modifications to it. For an executable work, complete source code means all 150 | the source code for all modules it contains, plus any associated interface 151 | definition files, plus the scripts used to control compilation and installation 152 | of the executable. However, as a special exception, the source code 153 | distributed need not include anything that is normally distributed (in either 154 | source or binary form) with the major components (compiler, kernel, and so on) 155 | of the operating system on which the executable runs, unless that component 156 | itself accompanies the executable. 157 | 158 | If distribution of executable or object code is made by offering access to copy 159 | from a designated place, then offering equivalent access to copy the source 160 | code from the same place counts as distribution of the source code, even though 161 | third parties are not compelled to copy the source along with the object code. 162 | 163 | 4. You may not copy, modify, sublicense, or distribute the Program except as 164 | expressly provided under this License. Any attempt otherwise to copy, modify, 165 | sublicense or distribute the Program is void, and will automatically terminate 166 | your rights under this License. However, parties who have received copies, or 167 | rights, from you under this License will not have their licenses terminated so 168 | long as such parties remain in full compliance. 169 | 170 | 5. You are not required to accept this License, since you have not signed it. 171 | However, nothing else grants you permission to modify or distribute the Program 172 | or its derivative works. These actions are prohibited by law if you do not 173 | accept this License. Therefore, by modifying or distributing the Program (or 174 | any work based on the Program), you indicate your acceptance of this License to 175 | do so, and all its terms and conditions for copying, distributing or modifying 176 | the Program or works based on it. 177 | 178 | 6. Each time you redistribute the Program (or any work based on the Program), 179 | the recipient automatically receives a license from the original licensor to 180 | copy, distribute or modify the Program subject to these terms and conditions. 181 | You may not impose any further restrictions on the recipients' exercise of the 182 | rights granted herein. You are not responsible for enforcing compliance by 183 | third parties to this License. 184 | 185 | 7. If, as a consequence of a court judgment or allegation of patent 186 | infringement or for any other reason (not limited to patent issues), conditions 187 | are imposed on you (whether by court order, agreement or otherwise) that 188 | contradict the conditions of this License, they do not excuse you from the 189 | conditions of this License. If you cannot distribute so as to satisfy 190 | simultaneously your obligations under this License and any other pertinent 191 | obligations, then as a consequence you may not distribute the Program at all. 192 | For example, if a patent license would not permit royalty-free redistribution 193 | of the Program by all those who receive copies directly or indirectly through 194 | you, then the only way you could satisfy both it and this License would be to 195 | refrain entirely from distribution of the Program. 196 | 197 | If any portion of this section is held invalid or unenforceable under any 198 | particular circumstance, the balance of the section is intended to apply and 199 | the section as a whole is intended to apply in other circumstances. 200 | 201 | It is not the purpose of this section to induce you to infringe any patents or 202 | other property right claims or to contest validity of any such claims; this 203 | section has the sole purpose of protecting the integrity of the free software 204 | distribution system, which is implemented by public license practices. Many 205 | people have made generous contributions to the wide range of software 206 | distributed through that system in reliance on consistent application of that 207 | system; it is up to the author/donor to decide if he or she is willing to 208 | distribute software through any other system and a licensee cannot impose that 209 | choice. 210 | 211 | This section is intended to make thoroughly clear what is believed to be a 212 | consequence of the rest of this License. 213 | 214 | 8. If the distribution and/or use of the Program is restricted in certain 215 | countries either by patents or by copyrighted interfaces, the original 216 | copyright holder who places the Program under this License may add an explicit 217 | geographical distribution limitation excluding those countries, so that 218 | distribution is permitted only in or among countries not thus excluded. In 219 | such case, this License incorporates the limitation as if written in the body 220 | of this License. 221 | 222 | 9. The Free Software Foundation may publish revised and/or new versions of the 223 | General Public License from time to time. Such new versions will be similar in 224 | spirit to the present version, but may differ in detail to address new problems 225 | or concerns. 226 | 227 | Each version is given a distinguishing version number. If the Program 228 | specifies a version number of this License which applies to it and "any later 229 | version", you have the option of following the terms and conditions either of 230 | that version or of any later version published by the Free Software Foundation. 231 | If the Program does not specify a version number of this License, you may 232 | choose any version ever published by the Free Software Foundation. 233 | 234 | 10. If you wish to incorporate parts of the Program into other free programs 235 | whose distribution conditions are different, write to the author to ask for 236 | permission. For software which is copyrighted by the Free Software Foundation, 237 | write to the Free Software Foundation; we sometimes make exceptions for this. 238 | Our decision will be guided by the two goals of preserving the free status of 239 | all derivatives of our free software and of promoting the sharing and reuse of 240 | software generally. 241 | 242 | NO WARRANTY 243 | 244 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR 245 | THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE 246 | STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE 247 | PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, 248 | INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 249 | FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND 250 | PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, 251 | YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 252 | 253 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL 254 | ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE 255 | PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 256 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR 257 | INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA 258 | BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A 259 | FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER 260 | OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 261 | 262 | END OF TERMS AND CONDITIONS 263 | 264 | How to Apply These Terms to Your New Programs 265 | 266 | If you develop a new program, and you want it to be of the greatest possible 267 | use to the public, the best way to achieve this is to make it free software 268 | which everyone can redistribute and change under these terms. 269 | 270 | To do so, attach the following notices to the program. It is safest to attach 271 | them to the start of each source file to most effectively convey the exclusion 272 | of warranty; and each file should have at least the "copyright" line and a 273 | pointer to where the full notice is found. 274 | 275 | One line to give the program's name and a brief idea of what it does. 276 | 277 | Copyright (C) 278 | 279 | This program is free software; you can redistribute it and/or modify it 280 | under the terms of the GNU General Public License as published by the Free 281 | Software Foundation; either version 2 of the License, or (at your option) 282 | any later version. 283 | 284 | This program is distributed in the hope that it will be useful, but WITHOUT 285 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 286 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 287 | more details. 288 | 289 | You should have received a copy of the GNU General Public License along 290 | with this program; if not, write to the Free Software Foundation, Inc., 291 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 292 | 293 | Also add information on how to contact you by electronic and paper mail. 294 | 295 | If the program is interactive, make it output a short notice like this when it 296 | starts in an interactive mode: 297 | 298 | Gnomovision version 69, Copyright (C) year name of author Gnomovision comes 299 | with ABSOLUTELY NO WARRANTY; for details type 'show w'. This is free 300 | software, and you are welcome to redistribute it under certain conditions; 301 | type 'show c' for details. 302 | 303 | The hypothetical commands 'show w' and 'show c' should show the appropriate 304 | parts of the General Public License. Of course, the commands you use may be 305 | called something other than 'show w' and 'show c'; they could even be 306 | mouse-clicks or menu items--whatever suits your program. 307 | 308 | You should also get your employer (if you work as a programmer) or your school, 309 | if any, to sign a "copyright disclaimer" for the program, if necessary. Here 310 | is a sample; alter the names: 311 | 312 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program 313 | 'Gnomovision' (which makes passes at compilers) written by James Hacker. 314 | 315 | signature of Ty Coon, 1 April 1989 316 | 317 | Ty Coon, President of Vice 318 | 319 | This General Public License does not permit incorporating your program into 320 | proprietary programs. If your program is a subroutine library, you may 321 | consider it more useful to permit linking proprietary applications with the 322 | library. If this is what you want to do, use the GNU Library General Public 323 | License instead of this License. 324 | 325 | 326 | "CLASSPATH" EXCEPTION TO THE GPL 327 | 328 | Certain source files distributed by Oracle America and/or its affiliates are 329 | subject to the following clarification and special exception to the GPL, but 330 | only where Oracle has expressly included in the particular source file's header 331 | the words "Oracle designates this particular file as subject to the "Classpath" 332 | exception as provided by Oracle in the LICENSE file that accompanied this code." 333 | 334 | Linking this library statically or dynamically with other modules is making 335 | a combined work based on this library. Thus, the terms and conditions of 336 | the GNU General Public License cover the whole combination. 337 | 338 | As a special exception, the copyright holders of this library give you 339 | permission to link this library with independent modules to produce an 340 | executable, regardless of the license terms of these independent modules, 341 | and to copy and distribute the resulting executable under terms of your 342 | choice, provided that you also meet, for each linked independent module, 343 | the terms and conditions of the license of that module. An independent 344 | module is a module which is not derived from or based on this library. If 345 | you modify this library, you may extend this exception to your version of 346 | the library, but you are not obligated to do so. If you do not wish to do 347 | so, delete this exception statement from your version. 348 | -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/legal/java.base/aes.md: -------------------------------------------------------------------------------- 1 | ## Cryptix AES v3.2.0 2 | 3 | ### Cryptix General License 4 |
 5 | 
 6 | Cryptix General License
 7 | 
 8 | Copyright (c) 1995-2005 The Cryptix Foundation Limited.
 9 | All rights reserved.
10 | 
11 | Redistribution and use in source and binary forms, with or without
12 | modification, are permitted provided that the following conditions are
13 | met:
14 | 
15 |   1. Redistributions of source code must retain the copyright notice,
16 |      this list of conditions and the following disclaimer.
17 | 
18 |   2. Redistributions in binary form must reproduce the above copyright
19 |      notice, this list of conditions and the following disclaimer in
20 |      the documentation and/or other materials provided with the
21 |      distribution.
22 | 
23 | THIS SOFTWARE IS PROVIDED BY THE CRYPTIX FOUNDATION LIMITED AND
24 | CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
25 | INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
26 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
27 | IN NO EVENT SHALL THE CRYPTIX FOUNDATION LIMITED OR CONTRIBUTORS BE
28 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
31 | BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
32 | WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
33 | OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
34 | IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35 | 
36 | 
37 | -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/legal/java.base/asm.md: -------------------------------------------------------------------------------- 1 | ## ASM Bytecode Manipulation Framework v8.0.1 2 | 3 | ### ASM License 4 |
 5 | 
 6 | Copyright (c) 2000-2011 France Télécom
 7 | All rights reserved.
 8 | 
 9 | Redistribution and use in source and binary forms, with or without
10 | modification, are permitted provided that the following conditions
11 | are met:
12 | 
13 | 1. Redistributions of source code must retain the above copyright
14 |    notice, this list of conditions and the following disclaimer.
15 | 
16 | 2. Redistributions in binary form must reproduce the above copyright
17 |    notice, this list of conditions and the following disclaimer in the
18 |    documentation and/or other materials provided with the distribution.
19 | 
20 | 3. Neither the name of the copyright holders nor the names of its
21 |    contributors may be used to endorse or promote products derived from
22 |    this software without specific prior written permission.
23 | 
24 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
28 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
34 | THE POSSIBILITY OF SUCH DAMAGE.
35 | 
36 | 
37 | -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/legal/java.base/c-libutl.md: -------------------------------------------------------------------------------- 1 | ## c-libutl 20160225 2 | 3 | ### c-libutl License 4 | ``` 5 | 6 | This software is distributed under the terms of the BSD license. 7 | 8 | == BSD LICENSE =============================================================== 9 | 10 | (C) 2009 by Remo Dentato (rdentato@gmail.com) 11 | 12 | 13 | Redistribution and use in source and binary forms, with or without modification, 14 | are permitted provided that the following conditions are met: 15 | 16 | * Redistributions of source code must retain the above copyright notice, 17 | this list of conditions and the following disclaimer. 18 | * Redistributions in binary form must reproduce the above copyright notice, 19 | this list of conditions and the following disclaimer in the documentation 20 | and/or other materials provided with the distribution. 21 | 22 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 23 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 24 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 25 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 26 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 27 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 29 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 31 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 | 33 | http://opensource.org/licenses/bsd-license.php 34 | 35 | ``` 36 | -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/legal/java.base/cldr.md: -------------------------------------------------------------------------------- 1 | ## Unicode Common Local Data Repository (CLDR) v39 2 | 3 | ### CLDR License 4 | 5 | ``` 6 | 7 | UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE 8 | 9 | See Terms of Use for definitions of Unicode Inc.'s 10 | Data Files and Software. 11 | 12 | NOTICE TO USER: Carefully read the following legal agreement. 13 | BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S 14 | DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), 15 | YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE 16 | TERMS AND CONDITIONS OF THIS AGREEMENT. 17 | IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE 18 | THE DATA FILES OR SOFTWARE. 19 | 20 | COPYRIGHT AND PERMISSION NOTICE 21 | 22 | Copyright © 1991-2021 Unicode, Inc. All rights reserved. 23 | Distributed under the Terms of Use in https://www.unicode.org/copyright.html. 24 | 25 | Permission is hereby granted, free of charge, to any person obtaining 26 | a copy of the Unicode data files and any associated documentation 27 | (the "Data Files") or Unicode software and any associated documentation 28 | (the "Software") to deal in the Data Files or Software 29 | without restriction, including without limitation the rights to use, 30 | copy, modify, merge, publish, distribute, and/or sell copies of 31 | the Data Files or Software, and to permit persons to whom the Data Files 32 | or Software are furnished to do so, provided that either 33 | (a) this copyright and permission notice appear with all copies 34 | of the Data Files or Software, or 35 | (b) this copyright and permission notice appear in associated 36 | Documentation. 37 | 38 | THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF 39 | ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE 40 | WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 41 | NONINFRINGEMENT OF THIRD PARTY RIGHTS. 42 | IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS 43 | NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL 44 | DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 45 | DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 46 | TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 47 | PERFORMANCE OF THE DATA FILES OR SOFTWARE. 48 | 49 | Except as contained in this notice, the name of a copyright holder 50 | shall not be used in advertising or otherwise to promote the sale, 51 | use or other dealings in these Data Files or Software without prior 52 | written authorization of the copyright holder. 53 | 54 | 55 | ------------------------------------------------------------ Terms of Use --------------------------------------------------------------- 56 | 57 | Unicode® Copyright and Terms of Use 58 | For the general privacy policy governing access to this site, see the Unicode Privacy Policy. 59 | 60 | Unicode Copyright 61 | Copyright © 1991-2021 Unicode, Inc. All rights reserved. 62 | Definitions 63 | Unicode Data Files ("DATA FILES") include all data files under the directories: 64 | https://www.unicode.org/Public/ 65 | https://www.unicode.org/reports/ 66 | https://www.unicode.org/ivd/data/ 67 | 68 | Unicode Data Files do not include PDF online code charts under the directory: 69 | https://www.unicode.org/Public/ 70 | 71 | Unicode Software ("SOFTWARE") includes any source code published in the Unicode Standard 72 | or any source code or compiled code under the directories: 73 | https://www.unicode.org/Public/PROGRAMS/ 74 | https://www.unicode.org/Public/cldr/ 75 | http://site.icu-project.org/download/ 76 | Terms of Use 77 | Certain documents and files on this website contain a legend indicating that "Modification is permitted." Any person is hereby authorized, without fee, to modify such documents and files to create derivative works conforming to the Unicode® Standard, subject to Terms and Conditions herein. 78 | Any person is hereby authorized, without fee, to view, use, reproduce, and distribute all documents and files, subject to the Terms and Conditions herein. 79 | Further specifications of rights and restrictions pertaining to the use of the Unicode DATA FILES and SOFTWARE can be found in the Unicode Data Files and Software License. 80 | Each version of the Unicode Standard has further specifications of rights and restrictions of use. For the book editions (Unicode 5.0 and earlier), these are found on the back of the title page. 81 | The Unicode PDF online code charts carry specific restrictions. Those restrictions are incorporated as the first page of each PDF code chart. 82 | All other files, including online documentation of the core specification for Unicode 6.0 and later, are covered under these general Terms of Use. 83 | No license is granted to "mirror" the Unicode website where a fee is charged for access to the "mirror" site. 84 | Modification is not permitted with respect to this document. All copies of this document must be verbatim. 85 | Restricted Rights Legend 86 | Any technical data or software which is licensed to the United States of America, its agencies and/or instrumentalities under this Agreement is commercial technical data or commercial computer software developed exclusively at private expense as defined in FAR 2.101, or DFARS 252.227-7014 (June 1995), as applicable. For technical data, use, duplication, or disclosure by the Government is subject to restrictions as set forth in DFARS 202.227-7015 Technical Data, Commercial and Items (Nov 1995) and this Agreement. For Software, in accordance with FAR 12-212 or DFARS 227-7202, as applicable, use, duplication or disclosure by the Government is subject to the restrictions set forth in this Agreement. 87 | Warranties and Disclaimers 88 | This publication and/or website may include technical or typographical errors or other inaccuracies. Changes are periodically added to the information herein; these changes will be incorporated in new editions of the publication and/or website. Unicode, Inc. may make improvements and/or changes in the product(s) and/or program(s) described in this publication and/or website at any time. 89 | If this file has been purchased on magnetic or optical media from Unicode, Inc. the sole and exclusive remedy for any claim will be exchange of the defective media within ninety (90) days of original purchase. 90 | EXCEPT AS PROVIDED IN SECTION E.2, THIS PUBLICATION AND/OR SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND EITHER EXPRESS, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. UNICODE, INC. AND ITS LICENSORS ASSUME NO RESPONSIBILITY FOR ERRORS OR OMISSIONS IN THIS PUBLICATION AND/OR SOFTWARE OR OTHER DOCUMENTS WHICH ARE REFERENCED BY OR LINKED TO THIS PUBLICATION OR THE UNICODE WEBSITE. 91 | Waiver of Damages 92 | In no event shall Unicode, Inc. or its licensors be liable for any special, incidental, indirect or consequential damages of any kind, or any damages whatsoever, whether or not Unicode, Inc. was advised of the possibility of the damage, including, without limitation, those resulting from the following: loss of use, data or profits, in connection with the use, modification or distribution of this information or its derivatives. 93 | Trademarks & Logos 94 | The Unicode Word Mark and the Unicode Logo are trademarks of Unicode, Inc. “The Unicode Consortium” and “Unicode, Inc.” are trade names of Unicode, Inc. Use of the information and materials found on this website indicates your acknowledgement of Unicode, Inc.’s exclusive worldwide rights in the Unicode Word Mark, the Unicode Logo, and the Unicode trade names. 95 | The Unicode Consortium Name and Trademark Usage Policy (“Trademark Policy”) are incorporated herein by reference and you agree to abide by the provisions of the Trademark Policy, which may be changed from time to time in the sole discretion of Unicode, Inc. 96 | All third party trademarks referenced herein are the property of their respective owners. 97 | Miscellaneous 98 | Jurisdiction and Venue. This website is operated from a location in the State of California, United States of America. Unicode, Inc. makes no representation that the materials are appropriate for use in other locations. If you access this website from other locations, you are responsible for compliance with local laws. This Agreement, all use of this website and any claims and damages resulting from use of this website are governed solely by the laws of the State of California without regard to any principles which would apply the laws of a different jurisdiction. The user agrees that any disputes regarding this website shall be resolved solely in the courts located in Santa Clara County, California. The user agrees said courts have personal jurisdiction and agree to waive any right to transfer the dispute to any other forum. 99 | Modification by Unicode, Inc. Unicode, Inc. shall have the right to modify this Agreement at any time by posting it to this website. The user may not assign any part of this Agreement without Unicode, Inc.’s prior written consent. 100 | Taxes. The user agrees to pay any taxes arising from access to this website or use of the information herein, except for those based on Unicode’s net income. 101 | Severability. If any provision of this Agreement is declared invalid or unenforceable, the remaining provisions of this Agreement shall remain in effect. 102 | Entire Agreement. This Agreement constitutes the entire agreement between the parties. 103 | 104 | 105 | ``` 106 | -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/legal/java.base/icu.md: -------------------------------------------------------------------------------- 1 | ## International Components for Unicode (ICU4J) v67.1 2 | 3 | ### ICU4J License 4 | ``` 5 | 6 | COPYRIGHT AND PERMISSION NOTICE (ICU 58 and later) 7 | 8 | Copyright © 1991-2020 Unicode, Inc. All rights reserved. 9 | Distributed under the Terms of Use in https://www.unicode.org/copyright.html. 10 | 11 | Permission is hereby granted, free of charge, to any person obtaining 12 | a copy of the Unicode data files and any associated documentation 13 | (the "Data Files") or Unicode software and any associated documentation 14 | (the "Software") to deal in the Data Files or Software 15 | without restriction, including without limitation the rights to use, 16 | copy, modify, merge, publish, distribute, and/or sell copies of 17 | the Data Files or Software, and to permit persons to whom the Data Files 18 | or Software are furnished to do so, provided that either 19 | (a) this copyright and permission notice appear with all copies 20 | of the Data Files or Software, or 21 | (b) this copyright and permission notice appear in associated 22 | Documentation. 23 | 24 | THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF 25 | ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE 26 | WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 27 | NONINFRINGEMENT OF THIRD PARTY RIGHTS. 28 | IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS 29 | NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL 30 | DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 31 | DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 32 | TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 33 | PERFORMANCE OF THE DATA FILES OR SOFTWARE. 34 | 35 | Except as contained in this notice, the name of a copyright holder 36 | shall not be used in advertising or otherwise to promote the sale, 37 | use or other dealings in these Data Files or Software without prior 38 | written authorization of the copyright holder. 39 | 40 | --------------------- 41 | 42 | Third-Party Software Licenses 43 | 44 | This section contains third-party software notices and/or additional 45 | terms for licensed third-party software components included within ICU 46 | libraries. 47 | 48 | 1. ICU License - ICU 1.8.1 to ICU 57.1 49 | 50 | COPYRIGHT AND PERMISSION NOTICE 51 | 52 | Copyright (c) 1995-2016 International Business Machines Corporation and others 53 | All rights reserved. 54 | 55 | Permission is hereby granted, free of charge, to any person obtaining 56 | a copy of this software and associated documentation files (the 57 | "Software"), to deal in the Software without restriction, including 58 | without limitation the rights to use, copy, modify, merge, publish, 59 | distribute, and/or sell copies of the Software, and to permit persons 60 | to whom the Software is furnished to do so, provided that the above 61 | copyright notice(s) and this permission notice appear in all copies of 62 | the Software and that both the above copyright notice(s) and this 63 | permission notice appear in supporting documentation. 64 | 65 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 66 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 67 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 68 | OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 69 | HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY 70 | SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER 71 | RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 72 | CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 73 | CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 74 | 75 | Except as contained in this notice, the name of a copyright holder 76 | shall not be used in advertising or otherwise to promote the sale, use 77 | or other dealings in this Software without prior written authorization 78 | of the copyright holder. 79 | 80 | All trademarks and registered trademarks mentioned herein are the 81 | property of their respective owners. 82 | 83 | 84 | —————————————————————————————————————————————————————————————————————— 85 | 86 | 87 | From: https://www.unicode.org/copyright.html: 88 | 89 | Unicode® Copyright and Terms of Use 90 | 91 | For the general privacy policy governing access to this site, see the Unicode Privacy Policy. 92 | 93 | Unicode Copyright 94 | Copyright © 1991-2020 Unicode, Inc. All rights reserved. 95 | Definitions 96 | 97 | Unicode Data Files ("DATA FILES") include all data files under the directories: 98 | https://www.unicode.org/Public/ 99 | https://www.unicode.org/reports/ 100 | https://www.unicode.org/ivd/data/ 101 | 102 | Unicode Data Files do not include PDF online code charts under the directory: 103 | https://www.unicode.org/Public/ 104 | 105 | Unicode Software ("SOFTWARE") includes any source code published in the Unicode Standard 106 | or any source code or compiled code under the directories: 107 | https://www.unicode.org/Public/PROGRAMS/ 108 | https://www.unicode.org/Public/cldr/ 109 | http://site.icu-project.org/download/ 110 | 111 | Terms of Use 112 | Certain documents and files on this website contain a legend indicating that "Modification is permitted." Any person is hereby authorized, without fee, to modify such documents and files to create derivative works conforming to the Unicode® Standard, subject to Terms and Conditions herein. 113 | Any person is hereby authorized, without fee, to view, use, reproduce, and distribute all documents and files, subject to the Terms and Conditions herein. 114 | Further specifications of rights and restrictions pertaining to the use of the Unicode DATA FILES and SOFTWARE can be found in the Unicode Data Files and Software License. 115 | Each version of the Unicode Standard has further specifications of rights and restrictions of use. For the book editions (Unicode 5.0 and earlier), these are found on the back of the title page. 116 | The Unicode PDF online code charts carry specific restrictions. Those restrictions are incorporated as the first page of each PDF code chart. 117 | All other files, including online documentation of the core specification for Unicode 6.0 and later, are covered under these general Terms of Use. 118 | No license is granted to "mirror" the Unicode website where a fee is charged for access to the "mirror" site. 119 | Modification is not permitted with respect to this document. All copies of this document must be verbatim. 120 | Restricted Rights Legend 121 | Any technical data or software which is licensed to the United States of America, its agencies and/or instrumentalities under this Agreement is commercial technical data or commercial computer software developed exclusively at private expense as defined in FAR 2.101, or DFARS 252.227-7014 (June 1995), as applicable. For technical data, use, duplication, or disclosure by the Government is subject to restrictions as set forth in DFARS 202.227-7015 Technical Data, Commercial and Items (Nov 1995) and this Agreement. For Software, in accordance with FAR 12-212 or DFARS 227-7202, as applicable, use, duplication or disclosure by the Government is subject to the restrictions set forth in this Agreement. 122 | Warranties and Disclaimers 123 | This publication and/or website may include technical or typographical errors or other inaccuracies. Changes are periodically added to the information herein; these changes will be incorporated in new editions of the publication and/or website. Unicode, Inc. may make improvements and/or changes in the product(s) and/or program(s) described in this publication and/or website at any time. 124 | If this file has been purchased on magnetic or optical media from Unicode, Inc. the sole and exclusive remedy for any claim will be exchange of the defective media within ninety (90) days of original purchase. 125 | EXCEPT AS PROVIDED IN SECTION E.2, THIS PUBLICATION AND/OR SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND EITHER EXPRESS, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. UNICODE, INC. AND ITS LICENSORS ASSUME NO RESPONSIBILITY FOR ERRORS OR OMISSIONS IN THIS PUBLICATION AND/OR SOFTWARE OR OTHER DOCUMENTS WHICH ARE REFERENCED BY OR LINKED TO THIS PUBLICATION OR THE UNICODE WEBSITE. 126 | Waiver of Damages 127 | In no event shall Unicode, Inc. or its licensors be liable for any special, incidental, indirect or consequential damages of any kind, or any damages whatsoever, whether or not Unicode, Inc. was advised of the possibility of the damage, including, without limitation, those resulting from the following: loss of use, data or profits, in connection with the use, modification or distribution of this information or its derivatives. 128 | Trademarks & Logos 129 | The Unicode Word Mark and the Unicode Logo are trademarks of Unicode, Inc. “The Unicode Consortium” and “Unicode, Inc.” are trade names of Unicode, Inc. Use of the information and materials found on this website indicates your acknowledgement of Unicode, Inc.’s exclusive worldwide rights in the Unicode Word Mark, the Unicode Logo, and the Unicode trade names. 130 | The Unicode Consortium Name and Trademark Usage Policy (“Trademark Policy”) are incorporated herein by reference and you agree to abide by the provisions of the Trademark Policy, which may be changed from time to time in the sole discretion of Unicode, Inc. 131 | All third party trademarks referenced herein are the property of their respective owners. 132 | Miscellaneous 133 | Jurisdiction and Venue. This website is operated from a location in the State of California, United States of America. Unicode, Inc. makes no representation that the materials are appropriate for use in other locations. If you access this website from other locations, you are responsible for compliance with local laws. This Agreement, all use of this website and any claims and damages resulting from use of this website are governed solely by the laws of the State of California without regard to any principles which would apply the laws of a different jurisdiction. The user agrees that any disputes regarding this website shall be resolved solely in the courts located in Santa Clara County, California. The user agrees said courts have personal jurisdiction and agree to waive any right to transfer the dispute to any other forum. 134 | Modification by Unicode, Inc. Unicode, Inc. shall have the right to modify this Agreement at any time by posting it to this website. The user may not assign any part of this Agreement without Unicode, Inc.’s prior written consent. 135 | Taxes. The user agrees to pay any taxes arising from access to this website or use of the information herein, except for those based on Unicode’s net income. 136 | Severability. If any provision of this Agreement is declared invalid or unenforceable, the remaining provisions of this Agreement shall remain in effect. 137 | Entire Agreement. This Agreement constitutes the entire agreement between the parties. 138 | 139 | ``` 140 | 141 | -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/legal/java.base/public_suffix.md: -------------------------------------------------------------------------------- 1 | ## Mozilla Public Suffix List 2 | 3 | ### Public Suffix Notice 4 | ``` 5 | You are receiving a copy of the Mozilla Public Suffix List in the following 6 | file: /lib/security/public_suffix_list.dat. The terms of the 7 | Oracle license do NOT apply to this file; it is licensed under the 8 | Mozilla Public License 2.0, separately from the Oracle programs you receive. 9 | If you do not wish to use the Public Suffix List, you may remove the 10 | /lib/security/public_suffix_list.dat file. 11 | 12 | The Source Code of this file is available under the 13 | Mozilla Public License, v. 2.0 and is located at 14 | https://raw.githubusercontent.com/publicsuffix/list/3c213aab32b3c014f171b1673d4ce9b5cd72bf1c/public_suffix_list.dat. 15 | If a copy of the MPL was not distributed with this file, you can obtain one 16 | at https://mozilla.org/MPL/2.0/. 17 | 18 | Software distributed under the License is distributed on an "AS IS" basis, 19 | WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 20 | for the specific language governing rights and limitations under the License. 21 | ``` 22 | 23 | ### MPL v2.0 24 | ``` 25 | Mozilla Public License Version 2.0 26 | ================================== 27 | 28 | 1. Definitions 29 | -------------- 30 | 31 | 1.1. "Contributor" 32 | means each individual or legal entity that creates, contributes to 33 | the creation of, or owns Covered Software. 34 | 35 | 1.2. "Contributor Version" 36 | means the combination of the Contributions of others (if any) used 37 | by a Contributor and that particular Contributor's Contribution. 38 | 39 | 1.3. "Contribution" 40 | means Covered Software of a particular Contributor. 41 | 42 | 1.4. "Covered Software" 43 | means Source Code Form to which the initial Contributor has attached 44 | the notice in Exhibit A, the Executable Form of such Source Code 45 | Form, and Modifications of such Source Code Form, in each case 46 | including portions thereof. 47 | 48 | 1.5. "Incompatible With Secondary Licenses" 49 | means 50 | 51 | (a) that the initial Contributor has attached the notice described 52 | in Exhibit B to the Covered Software; or 53 | 54 | (b) that the Covered Software was made available under the terms of 55 | version 1.1 or earlier of the License, but not also under the 56 | terms of a Secondary License. 57 | 58 | 1.6. "Executable Form" 59 | means any form of the work other than Source Code Form. 60 | 61 | 1.7. "Larger Work" 62 | means a work that combines Covered Software with other material, in 63 | a separate file or files, that is not Covered Software. 64 | 65 | 1.8. "License" 66 | means this document. 67 | 68 | 1.9. "Licensable" 69 | means having the right to grant, to the maximum extent possible, 70 | whether at the time of the initial grant or subsequently, any and 71 | all of the rights conveyed by this License. 72 | 73 | 1.10. "Modifications" 74 | means any of the following: 75 | 76 | (a) any file in Source Code Form that results from an addition to, 77 | deletion from, or modification of the contents of Covered 78 | Software; or 79 | 80 | (b) any new file in Source Code Form that contains any Covered 81 | Software. 82 | 83 | 1.11. "Patent Claims" of a Contributor 84 | means any patent claim(s), including without limitation, method, 85 | process, and apparatus claims, in any patent Licensable by such 86 | Contributor that would be infringed, but for the grant of the 87 | License, by the making, using, selling, offering for sale, having 88 | made, import, or transfer of either its Contributions or its 89 | Contributor Version. 90 | 91 | 1.12. "Secondary License" 92 | means either the GNU General Public License, Version 2.0, the GNU 93 | Lesser General Public License, Version 2.1, the GNU Affero General 94 | Public License, Version 3.0, or any later versions of those 95 | licenses. 96 | 97 | 1.13. "Source Code Form" 98 | means the form of the work preferred for making modifications. 99 | 100 | 1.14. "You" (or "Your") 101 | means an individual or a legal entity exercising rights under this 102 | License. For legal entities, "You" includes any entity that 103 | controls, is controlled by, or is under common control with You. For 104 | purposes of this definition, "control" means (a) the power, direct 105 | or indirect, to cause the direction or management of such entity, 106 | whether by contract or otherwise, or (b) ownership of more than 107 | fifty percent (50%) of the outstanding shares or beneficial 108 | ownership of such entity. 109 | 110 | 2. License Grants and Conditions 111 | -------------------------------- 112 | 113 | 2.1. Grants 114 | 115 | Each Contributor hereby grants You a world-wide, royalty-free, 116 | non-exclusive license: 117 | 118 | (a) under intellectual property rights (other than patent or trademark) 119 | Licensable by such Contributor to use, reproduce, make available, 120 | modify, display, perform, distribute, and otherwise exploit its 121 | Contributions, either on an unmodified basis, with Modifications, or 122 | as part of a Larger Work; and 123 | 124 | (b) under Patent Claims of such Contributor to make, use, sell, offer 125 | for sale, have made, import, and otherwise transfer either its 126 | Contributions or its Contributor Version. 127 | 128 | 2.2. Effective Date 129 | 130 | The licenses granted in Section 2.1 with respect to any Contribution 131 | become effective for each Contribution on the date the Contributor first 132 | distributes such Contribution. 133 | 134 | 2.3. Limitations on Grant Scope 135 | 136 | The licenses granted in this Section 2 are the only rights granted under 137 | this License. No additional rights or licenses will be implied from the 138 | distribution or licensing of Covered Software under this License. 139 | Notwithstanding Section 2.1(b) above, no patent license is granted by a 140 | Contributor: 141 | 142 | (a) for any code that a Contributor has removed from Covered Software; 143 | or 144 | 145 | (b) for infringements caused by: (i) Your and any other third party's 146 | modifications of Covered Software, or (ii) the combination of its 147 | Contributions with other software (except as part of its Contributor 148 | Version); or 149 | 150 | (c) under Patent Claims infringed by Covered Software in the absence of 151 | its Contributions. 152 | 153 | This License does not grant any rights in the trademarks, service marks, 154 | or logos of any Contributor (except as may be necessary to comply with 155 | the notice requirements in Section 3.4). 156 | 157 | 2.4. Subsequent Licenses 158 | 159 | No Contributor makes additional grants as a result of Your choice to 160 | distribute the Covered Software under a subsequent version of this 161 | License (see Section 10.2) or under the terms of a Secondary License (if 162 | permitted under the terms of Section 3.3). 163 | 164 | 2.5. Representation 165 | 166 | Each Contributor represents that the Contributor believes its 167 | Contributions are its original creation(s) or it has sufficient rights 168 | to grant the rights to its Contributions conveyed by this License. 169 | 170 | 2.6. Fair Use 171 | 172 | This License is not intended to limit any rights You have under 173 | applicable copyright doctrines of fair use, fair dealing, or other 174 | equivalents. 175 | 176 | 2.7. Conditions 177 | 178 | Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted 179 | in Section 2.1. 180 | 181 | 3. Responsibilities 182 | ------------------- 183 | 184 | 3.1. Distribution of Source Form 185 | 186 | All distribution of Covered Software in Source Code Form, including any 187 | Modifications that You create or to which You contribute, must be under 188 | the terms of this License. You must inform recipients that the Source 189 | Code Form of the Covered Software is governed by the terms of this 190 | License, and how they can obtain a copy of this License. You may not 191 | attempt to alter or restrict the recipients' rights in the Source Code 192 | Form. 193 | 194 | 3.2. Distribution of Executable Form 195 | 196 | If You distribute Covered Software in Executable Form then: 197 | 198 | (a) such Covered Software must also be made available in Source Code 199 | Form, as described in Section 3.1, and You must inform recipients of 200 | the Executable Form how they can obtain a copy of such Source Code 201 | Form by reasonable means in a timely manner, at a charge no more 202 | than the cost of distribution to the recipient; and 203 | 204 | (b) You may distribute such Executable Form under the terms of this 205 | License, or sublicense it under different terms, provided that the 206 | license for the Executable Form does not attempt to limit or alter 207 | the recipients' rights in the Source Code Form under this License. 208 | 209 | 3.3. Distribution of a Larger Work 210 | 211 | You may create and distribute a Larger Work under terms of Your choice, 212 | provided that You also comply with the requirements of this License for 213 | the Covered Software. If the Larger Work is a combination of Covered 214 | Software with a work governed by one or more Secondary Licenses, and the 215 | Covered Software is not Incompatible With Secondary Licenses, this 216 | License permits You to additionally distribute such Covered Software 217 | under the terms of such Secondary License(s), so that the recipient of 218 | the Larger Work may, at their option, further distribute the Covered 219 | Software under the terms of either this License or such Secondary 220 | License(s). 221 | 222 | 3.4. Notices 223 | 224 | You may not remove or alter the substance of any license notices 225 | (including copyright notices, patent notices, disclaimers of warranty, 226 | or limitations of liability) contained within the Source Code Form of 227 | the Covered Software, except that You may alter any license notices to 228 | the extent required to remedy known factual inaccuracies. 229 | 230 | 3.5. Application of Additional Terms 231 | 232 | You may choose to offer, and to charge a fee for, warranty, support, 233 | indemnity or liability obligations to one or more recipients of Covered 234 | Software. However, You may do so only on Your own behalf, and not on 235 | behalf of any Contributor. You must make it absolutely clear that any 236 | such warranty, support, indemnity, or liability obligation is offered by 237 | You alone, and You hereby agree to indemnify every Contributor for any 238 | liability incurred by such Contributor as a result of warranty, support, 239 | indemnity or liability terms You offer. You may include additional 240 | disclaimers of warranty and limitations of liability specific to any 241 | jurisdiction. 242 | 243 | 4. Inability to Comply Due to Statute or Regulation 244 | --------------------------------------------------- 245 | 246 | If it is impossible for You to comply with any of the terms of this 247 | License with respect to some or all of the Covered Software due to 248 | statute, judicial order, or regulation then You must: (a) comply with 249 | the terms of this License to the maximum extent possible; and (b) 250 | describe the limitations and the code they affect. Such description must 251 | be placed in a text file included with all distributions of the Covered 252 | Software under this License. Except to the extent prohibited by statute 253 | or regulation, such description must be sufficiently detailed for a 254 | recipient of ordinary skill to be able to understand it. 255 | 256 | 5. Termination 257 | -------------- 258 | 259 | 5.1. The rights granted under this License will terminate automatically 260 | if You fail to comply with any of its terms. However, if You become 261 | compliant, then the rights granted under this License from a particular 262 | Contributor are reinstated (a) provisionally, unless and until such 263 | Contributor explicitly and finally terminates Your grants, and (b) on an 264 | ongoing basis, if such Contributor fails to notify You of the 265 | non-compliance by some reasonable means prior to 60 days after You have 266 | come back into compliance. Moreover, Your grants from a particular 267 | Contributor are reinstated on an ongoing basis if such Contributor 268 | notifies You of the non-compliance by some reasonable means, this is the 269 | first time You have received notice of non-compliance with this License 270 | from such Contributor, and You become compliant prior to 30 days after 271 | Your receipt of the notice. 272 | 273 | 5.2. If You initiate litigation against any entity by asserting a patent 274 | infringement claim (excluding declaratory judgment actions, 275 | counter-claims, and cross-claims) alleging that a Contributor Version 276 | directly or indirectly infringes any patent, then the rights granted to 277 | You by any and all Contributors for the Covered Software under Section 278 | 2.1 of this License shall terminate. 279 | 280 | 5.3. In the event of termination under Sections 5.1 or 5.2 above, all 281 | end user license agreements (excluding distributors and resellers) which 282 | have been validly granted by You or Your distributors under this License 283 | prior to termination shall survive termination. 284 | 285 | ************************************************************************ 286 | * * 287 | * 6. Disclaimer of Warranty * 288 | * ------------------------- * 289 | * * 290 | * Covered Software is provided under this License on an "as is" * 291 | * basis, without warranty of any kind, either expressed, implied, or * 292 | * statutory, including, without limitation, warranties that the * 293 | * Covered Software is free of defects, merchantable, fit for a * 294 | * particular purpose or non-infringing. The entire risk as to the * 295 | * quality and performance of the Covered Software is with You. * 296 | * Should any Covered Software prove defective in any respect, You * 297 | * (not any Contributor) assume the cost of any necessary servicing, * 298 | * repair, or correction. This disclaimer of warranty constitutes an * 299 | * essential part of this License. No use of any Covered Software is * 300 | * authorized under this License except under this disclaimer. * 301 | * * 302 | ************************************************************************ 303 | 304 | ************************************************************************ 305 | * * 306 | * 7. Limitation of Liability * 307 | * -------------------------- * 308 | * * 309 | * Under no circumstances and under no legal theory, whether tort * 310 | * (including negligence), contract, or otherwise, shall any * 311 | * Contributor, or anyone who distributes Covered Software as * 312 | * permitted above, be liable to You for any direct, indirect, * 313 | * special, incidental, or consequential damages of any character * 314 | * including, without limitation, damages for lost profits, loss of * 315 | * goodwill, work stoppage, computer failure or malfunction, or any * 316 | * and all other commercial damages or losses, even if such party * 317 | * shall have been informed of the possibility of such damages. This * 318 | * limitation of liability shall not apply to liability for death or * 319 | * personal injury resulting from such party's negligence to the * 320 | * extent applicable law prohibits such limitation. Some * 321 | * jurisdictions do not allow the exclusion or limitation of * 322 | * incidental or consequential damages, so this exclusion and * 323 | * limitation may not apply to You. * 324 | * * 325 | ************************************************************************ 326 | 327 | 8. Litigation 328 | ------------- 329 | 330 | Any litigation relating to this License may be brought only in the 331 | courts of a jurisdiction where the defendant maintains its principal 332 | place of business and such litigation shall be governed by laws of that 333 | jurisdiction, without reference to its conflict-of-law provisions. 334 | Nothing in this Section shall prevent a party's ability to bring 335 | cross-claims or counter-claims. 336 | 337 | 9. Miscellaneous 338 | ---------------- 339 | 340 | This License represents the complete agreement concerning the subject 341 | matter hereof. If any provision of this License is held to be 342 | unenforceable, such provision shall be reformed only to the extent 343 | necessary to make it enforceable. Any law or regulation which provides 344 | that the language of a contract shall be construed against the drafter 345 | shall not be used to construe this License against a Contributor. 346 | 347 | 10. Versions of the License 348 | --------------------------- 349 | 350 | 10.1. New Versions 351 | 352 | Mozilla Foundation is the license steward. Except as provided in Section 353 | 10.3, no one other than the license steward has the right to modify or 354 | publish new versions of this License. Each version will be given a 355 | distinguishing version number. 356 | 357 | 10.2. Effect of New Versions 358 | 359 | You may distribute the Covered Software under the terms of the version 360 | of the License under which You originally received the Covered Software, 361 | or under the terms of any subsequent version published by the license 362 | steward. 363 | 364 | 10.3. Modified Versions 365 | 366 | If you create software not governed by this License, and you want to 367 | create a new license for such software, you may create and use a 368 | modified version of this License if you rename the license and remove 369 | any references to the name of the license steward (except to note that 370 | such modified license differs from this License). 371 | 372 | 10.4. Distributing Source Code Form that is Incompatible With Secondary 373 | Licenses 374 | 375 | If You choose to distribute Source Code Form that is Incompatible With 376 | Secondary Licenses under the terms of this version of the License, the 377 | notice described in Exhibit B of this License must be attached. 378 | 379 | Exhibit A - Source Code Form License Notice 380 | ------------------------------------------- 381 | 382 | This Source Code Form is subject to the terms of the Mozilla Public 383 | License, v. 2.0. If a copy of the MPL was not distributed with this 384 | file, You can obtain one at https://mozilla.org/MPL/2.0/. 385 | 386 | If it is not possible or desirable to put the notice in a particular 387 | file, then You may include the notice in a location (such as a LICENSE 388 | file in a relevant directory) where a recipient would be likely to look 389 | for such a notice. 390 | 391 | You may add additional accurate notices of copyright ownership. 392 | 393 | Exhibit B - "Incompatible With Secondary Licenses" Notice 394 | --------------------------------------------------------- 395 | 396 | This Source Code Form is "Incompatible With Secondary Licenses", as 397 | defined by the Mozilla Public License, v. 2.0. 398 | 399 | ``` 400 | -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/legal/java.base/unicode.md: -------------------------------------------------------------------------------- 1 | ## The Unicode Standard, Unicode Character Database, Version 13.0.0 2 | 3 | ### Unicode Character Database 4 | ``` 5 | 6 | UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE 7 | 8 | See Terms of Use for definitions of Unicode Inc.'s 9 | Data Files and Software. 10 | 11 | NOTICE TO USER: Carefully read the following legal agreement. 12 | BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S 13 | DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), 14 | YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE 15 | TERMS AND CONDITIONS OF THIS AGREEMENT. 16 | IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE 17 | THE DATA FILES OR SOFTWARE. 18 | 19 | COPYRIGHT AND PERMISSION NOTICE 20 | 21 | Copyright © 1991-2020 Unicode, Inc. All rights reserved. 22 | Distributed under the Terms of Use in https://www.unicode.org/copyright.html. 23 | 24 | Permission is hereby granted, free of charge, to any person obtaining 25 | a copy of the Unicode data files and any associated documentation 26 | (the "Data Files") or Unicode software and any associated documentation 27 | (the "Software") to deal in the Data Files or Software 28 | without restriction, including without limitation the rights to use, 29 | copy, modify, merge, publish, distribute, and/or sell copies of 30 | the Data Files or Software, and to permit persons to whom the Data Files 31 | or Software are furnished to do so, provided that either 32 | (a) this copyright and permission notice appear with all copies 33 | of the Data Files or Software, or 34 | (b) this copyright and permission notice appear in associated 35 | Documentation. 36 | 37 | THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF 38 | ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE 39 | WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 40 | NONINFRINGEMENT OF THIRD PARTY RIGHTS. 41 | IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS 42 | NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL 43 | DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 44 | DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 45 | TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 46 | PERFORMANCE OF THE DATA FILES OR SOFTWARE. 47 | 48 | Except as contained in this notice, the name of a copyright holder 49 | shall not be used in advertising or otherwise to promote the sale, 50 | use or other dealings in these Data Files or Software without prior 51 | written authorization of the copyright holder. 52 | 53 | ``` 54 | 55 | -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/legal/java.base/wepoll.md: -------------------------------------------------------------------------------- 1 | ## Bert Belder: wepoll v 1.5.8 2 | 3 | ### wepoll License 4 | ``` 5 | wepoll - epoll for Windows 6 | https://github.com/piscisaureus/wepoll 7 | 8 | Copyright 2012-2020, Bert Belder 9 | All rights reserved. 10 | 11 | Redistribution and use in source and binary forms, with or without 12 | modification, are permitted provided that the following conditions are 13 | met: 14 | 15 | * Redistributions of source code must retain the above copyright 16 | notice, this list of conditions and the following disclaimer. 17 | 18 | * Redistributions in binary form must reproduce the above copyright 19 | notice, this list of conditions and the following disclaimer in the 20 | documentation and/or other materials provided with the distribution. 21 | 22 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 23 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 24 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 25 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 26 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 27 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 28 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 29 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 30 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 31 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 32 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33 | 34 | ``` 35 | -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/legal/java.base/zlib.md: -------------------------------------------------------------------------------- 1 | ## zlib v1.2.13 2 | 3 | ### zlib License 4 |
 5 | 
 6 | Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler
 7 | 
 8 | This software is provided 'as-is', without any express or implied
 9 | warranty.  In no event will the authors be held liable for any damages
10 | arising from the use of this software.
11 | 
12 | Permission is granted to anyone to use this software for any purpose,
13 | including commercial applications, and to alter it and redistribute it
14 | freely, subject to the following restrictions:
15 | 
16 | 1. The origin of this software must not be misrepresented; you must not
17 |    claim that you wrote the original software. If you use this software
18 |    in a product, an acknowledgment in the product documentation would be
19 |    appreciated but is not required.
20 | 2. Altered source versions must be plainly marked as such, and must not be
21 |    misrepresented as being the original software.
22 | 3. This notice may not be removed or altered from any source distribution.
23 | 
24 | Jean-loup Gailly        Mark Adler
25 | jloup@gzip.org          madler@alumni.caltech.edu
26 | 
27 | 
28 | -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/legal/jdk.attach/LICENSE: -------------------------------------------------------------------------------- 1 | Please see ..\java.base\LICENSE 2 | -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/legal/jdk.internal.jvmstat/LICENSE: -------------------------------------------------------------------------------- 1 | Please see ..\java.base\LICENSE 2 | -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/lib/jrt-fs.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/lib/jrt-fs.jar -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/lib/jvm.cfg: -------------------------------------------------------------------------------- 1 | -server KNOWN 2 | -client KNOWN 3 | -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/lib/jvm.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/lib/jvm.lib -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/lib/modules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/lib/modules -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/lib/security/blocked.certs: -------------------------------------------------------------------------------- 1 | Algorithm=SHA-256 2 | 03DB9E5E79FE6117177F81C11595AF598CB176AF766290DBCEB2C318B32E39A2 3 | 08C396C006A21055D00826A5781A5CCFCE2C8D053AB3C197637A4A7A5BB9A650 4 | 14E6D2764A4B06701C6CBC376A253775F79C782FBCB6C0EE6F99DE4BA1024ADD 5 | 1C5E6985ACC09221DBD1A4B7BBC6D3A8C3F8540D19F20763A9537FDD42B4FFE7 6 | 1F6BF8A3F2399AF7FD04516C2719C566CBAD51F412738F66D0457E1E6BDE6F2D 7 | 2A464E4113141352C7962FBD1706ED4B88533EF24D7BBA6CCC5D797FD202F1C4 8 | 31C8FD37DB9B56E708B03D1F01848B068C6DA66F36FB5D82C008C6040FA3E133 9 | 3946901F46B0071E90D78279E82FABABCA177231A704BE72C5B0E8918566EA66 10 | 3E11CF90719F6FB44D94EAC9A156B89BEBE7B8598F28EC58913F2BFCAF91D0C0 11 | 423279423B9FC8CB06F1BB7C3B247522B948D5F18939F378ECC901126DE40BFB 12 | 450F1B421BB05C8609854884559C323319619E8B06B001EA2DCBB74A23AA3BE2 13 | 4CBBF8256BC9888A8007B2F386940A2E394378B0D903CBB3863C5A6394B889CE 14 | 4FEE0163686ECBD65DB968E7494F55D84B25486D438E9DE558D629D28CD4D176 15 | 535D04DFCE027C70BD5F8A9E0AD4F218E9AFDCF5BBCF9B6DE0D81E148E2E3172 16 | 568FAF38D9F155F624838E2181B1CEB4D8459305EE652B0F810C97C3611BFE19 17 | 585CFE6B7436CBD4E732763A2137D7F49599BA9B1790E688FCEC799C58EB84A6 18 | 5E83124D68D24E8E177E306DF643D5EA99C5A94D6FC34B072F7544A1CABB7C7B 19 | 71CB00749B9130FB2707A2664BFF958D0FCC8E161D9674C7450BA0FC2BEAF9D3 20 | 76A45A496031E4DD2D7ED23E8F6FF97DBDEA980BAAC8B0BA94D7EDB551348645 21 | 8A1BD21661C60015065212CC98B1ABB50DFD14C872A208E66BAE890F25C448AF 22 | 9ED8F9B0E8E42A1656B8E1DD18F42BA42DC06FE52686173BA2FC70E756F207DC 23 | 9FADCE80D62A959F9930D748488C1E22E821F4E1E4A43584B848C2FC11E04D77 24 | A686FEE577C88AB664D0787ECDFFF035F4806F3DE418DC9E4D516324FFF02083 25 | A90132CEA1D4F7185E4F688EFFD16F6AC14DFD78356A807599A5DABBEEF3333E 26 | B8686723E415534BC0DBD16326F9486F85B0B0799BF6639334E61DAAE67F36CD 27 | C0D1F42B9F4BF7ACC045B7BB5D4805E10737F67B6310CE505248D543D0D5FE07 28 | D0156949F1381943442C6974E9B5B49EF441BB799EF20477B90A89C3F33620CE 29 | D151962D954970501C60079258EBCFA38502E0A9F03CD640322B08C0A3117FE5 30 | D24566BF315F4E597D6E381C87119FB4198F5E9E2607F5F4AB362EF7E2E7672F 31 | D3A936E1A7775A45217C8296A1F22AC5631DCDEC45594099E78EEEBBEDCBA967 32 | D6CEAE5D9E047FAF7D797858D229AC991AD44316D1E2A37A21926D763153593A 33 | DF21016B00FC54F9FE3BC8B039911BB216E9162FAD2FD14D990AB96E951B49BE 34 | E0E740E4B0F8B3548181FF75B5372FAF4C70B99EC995D694ED0FB91B03FF8D21 35 | EC30C9C3065A06BB07DC5B1C6B497F370C1CA65C0F30C08E042BA6BCECC78F2C 36 | F5B6F88F75D391A4B1EB336F9E201239FB6B1377DB8CFA7B84736216E5AFFFD7 37 | FBB12938ABD86C125796EDF4162D291028890A7D6C0C1CCA75FD4B95EBFA7A1A 38 | FC02FD48DB92D4DCE6F11679D38354CF750CFC7F584A520EB90BDE80E241F2BD 39 | FDEDB5BDFCB67411513A61AEE5CB5B5D7C52AF06028EFC996CC1B05B1D6CEA2B 40 | -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/lib/security/cacerts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/lib/security/cacerts -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/lib/security/default.policy: -------------------------------------------------------------------------------- 1 | // 2 | // Permissions required by modules stored in a run-time image and loaded 3 | // by the platform class loader. 4 | // 5 | // NOTE that this file is not intended to be modified. If additional 6 | // permissions need to be granted to the modules in this file, it is 7 | // recommended that they be configured in a separate policy file or 8 | // ${java.home}/conf/security/java.policy. 9 | // 10 | 11 | 12 | grant codeBase "jrt:/java.compiler" { 13 | permission java.security.AllPermission; 14 | }; 15 | 16 | 17 | grant codeBase "jrt:/java.net.http" { 18 | permission java.lang.RuntimePermission "accessClassInPackage.sun.net"; 19 | permission java.lang.RuntimePermission "accessClassInPackage.sun.net.util"; 20 | permission java.lang.RuntimePermission "accessClassInPackage.sun.net.www"; 21 | permission java.lang.RuntimePermission "accessClassInPackage.jdk.internal.misc"; 22 | permission java.lang.RuntimePermission "modifyThread"; 23 | permission java.net.SocketPermission "*","connect,resolve"; 24 | permission java.net.URLPermission "http:*","*:*"; 25 | permission java.net.URLPermission "https:*","*:*"; 26 | permission java.net.URLPermission "ws:*","*:*"; 27 | permission java.net.URLPermission "wss:*","*:*"; 28 | permission java.net.URLPermission "socket:*","CONNECT"; // proxy 29 | // For request/response body processors, fromFile, asFile 30 | permission java.io.FilePermission "<>","read,write,delete"; 31 | permission java.util.PropertyPermission "*","read"; 32 | permission java.net.NetPermission "getProxySelector"; 33 | }; 34 | 35 | grant codeBase "jrt:/java.scripting" { 36 | permission java.security.AllPermission; 37 | }; 38 | 39 | grant codeBase "jrt:/java.security.jgss" { 40 | permission java.security.AllPermission; 41 | }; 42 | 43 | grant codeBase "jrt:/java.smartcardio" { 44 | permission javax.smartcardio.CardPermission "*", "*"; 45 | permission java.lang.RuntimePermission "loadLibrary.j2pcsc"; 46 | permission java.lang.RuntimePermission 47 | "accessClassInPackage.sun.security.jca"; 48 | permission java.lang.RuntimePermission 49 | "accessClassInPackage.sun.security.util"; 50 | permission java.util.PropertyPermission 51 | "javax.smartcardio.TerminalFactory.DefaultType", "read"; 52 | permission java.util.PropertyPermission "os.name", "read"; 53 | permission java.util.PropertyPermission "os.arch", "read"; 54 | permission java.util.PropertyPermission "sun.arch.data.model", "read"; 55 | permission java.util.PropertyPermission 56 | "sun.security.smartcardio.library", "read"; 57 | permission java.util.PropertyPermission 58 | "sun.security.smartcardio.t0GetResponse", "read"; 59 | permission java.util.PropertyPermission 60 | "sun.security.smartcardio.t1GetResponse", "read"; 61 | permission java.util.PropertyPermission 62 | "sun.security.smartcardio.t1StripLe", "read"; 63 | // needed for looking up native PC/SC library 64 | permission java.io.FilePermission "<>","read"; 65 | permission java.security.SecurityPermission "putProviderProperty.SunPCSC"; 66 | permission java.security.SecurityPermission 67 | "clearProviderProperties.SunPCSC"; 68 | permission java.security.SecurityPermission 69 | "removeProviderProperty.SunPCSC"; 70 | }; 71 | 72 | grant codeBase "jrt:/java.sql" { 73 | permission java.security.AllPermission; 74 | }; 75 | 76 | grant codeBase "jrt:/java.sql.rowset" { 77 | permission java.security.AllPermission; 78 | }; 79 | 80 | 81 | grant codeBase "jrt:/java.xml.crypto" { 82 | permission java.lang.RuntimePermission 83 | "getStackWalkerWithClassReference"; 84 | permission java.lang.RuntimePermission 85 | "accessClassInPackage.sun.security.util"; 86 | permission java.util.PropertyPermission "*", "read"; 87 | permission java.security.SecurityPermission "putProviderProperty.XMLDSig"; 88 | permission java.security.SecurityPermission 89 | "clearProviderProperties.XMLDSig"; 90 | permission java.security.SecurityPermission 91 | "removeProviderProperty.XMLDSig"; 92 | permission java.security.SecurityPermission 93 | "com.sun.org.apache.xml.internal.security.register"; 94 | permission java.security.SecurityPermission 95 | "getProperty.jdk.xml.dsig.secureValidationPolicy"; 96 | permission java.lang.RuntimePermission 97 | "accessClassInPackage.com.sun.org.apache.xml.internal.*"; 98 | permission java.lang.RuntimePermission 99 | "accessClassInPackage.com.sun.org.apache.xpath.internal"; 100 | permission java.lang.RuntimePermission 101 | "accessClassInPackage.com.sun.org.apache.xpath.internal.*"; 102 | permission java.io.FilePermission "<>","read"; 103 | permission java.net.SocketPermission "*", "connect,resolve"; 104 | }; 105 | 106 | 107 | grant codeBase "jrt:/jdk.accessibility" { 108 | permission java.lang.RuntimePermission "accessClassInPackage.sun.awt"; 109 | }; 110 | 111 | grant codeBase "jrt:/jdk.charsets" { 112 | permission java.util.PropertyPermission "os.name", "read"; 113 | permission java.lang.RuntimePermission "charsetProvider"; 114 | permission java.lang.RuntimePermission 115 | "accessClassInPackage.jdk.internal.access"; 116 | permission java.lang.RuntimePermission 117 | "accessClassInPackage.jdk.internal.misc"; 118 | permission java.lang.RuntimePermission "accessClassInPackage.sun.nio.cs"; 119 | }; 120 | 121 | grant codeBase "jrt:/jdk.crypto.ec" { 122 | permission java.lang.RuntimePermission 123 | "accessClassInPackage.sun.security.*"; 124 | permission java.lang.RuntimePermission "loadLibrary.sunec"; 125 | permission java.security.SecurityPermission "putProviderProperty.SunEC"; 126 | permission java.security.SecurityPermission "clearProviderProperties.SunEC"; 127 | permission java.security.SecurityPermission "removeProviderProperty.SunEC"; 128 | }; 129 | 130 | grant codeBase "jrt:/jdk.crypto.cryptoki" { 131 | permission java.lang.RuntimePermission 132 | "accessClassInPackage.com.sun.crypto.provider"; 133 | permission java.lang.RuntimePermission "accessClassInPackage.jdk.internal.misc"; 134 | permission java.lang.RuntimePermission 135 | "accessClassInPackage.sun.security.*"; 136 | permission java.lang.RuntimePermission "accessClassInPackage.sun.nio.ch"; 137 | permission java.lang.RuntimePermission "loadLibrary.j2pkcs11"; 138 | permission java.util.PropertyPermission "sun.security.pkcs11.allowSingleThreadedModules", "read"; 139 | permission java.util.PropertyPermission "sun.security.pkcs11.disableKeyExtraction", "read"; 140 | permission java.util.PropertyPermission "os.name", "read"; 141 | permission java.util.PropertyPermission "os.arch", "read"; 142 | permission java.util.PropertyPermission "jdk.crypto.KeyAgreement.legacyKDF", "read"; 143 | permission java.security.SecurityPermission "putProviderProperty.*"; 144 | permission java.security.SecurityPermission "clearProviderProperties.*"; 145 | permission java.security.SecurityPermission "removeProviderProperty.*"; 146 | permission java.security.SecurityPermission 147 | "getProperty.auth.login.defaultCallbackHandler"; 148 | permission java.security.SecurityPermission "authProvider.*"; 149 | // Needed for reading PKCS11 config file and NSS library check 150 | permission java.io.FilePermission "<>", "read"; 151 | }; 152 | 153 | grant codeBase "jrt:/jdk.dynalink" { 154 | permission java.security.AllPermission; 155 | }; 156 | 157 | grant codeBase "jrt:/jdk.httpserver" { 158 | permission java.security.AllPermission; 159 | }; 160 | 161 | grant codeBase "jrt:/jdk.internal.le" { 162 | permission java.security.AllPermission; 163 | }; 164 | 165 | grant codeBase "jrt:/jdk.internal.vm.compiler" { 166 | permission java.security.AllPermission; 167 | }; 168 | 169 | grant codeBase "jrt:/jdk.internal.vm.compiler.management" { 170 | permission java.lang.RuntimePermission "accessClassInPackage.jdk.internal.vm.compiler.collections"; 171 | permission java.lang.RuntimePermission "accessClassInPackage.jdk.vm.ci.runtime"; 172 | permission java.lang.RuntimePermission "accessClassInPackage.jdk.vm.ci.services"; 173 | permission java.lang.RuntimePermission "accessClassInPackage.org.graalvm.compiler.core.common"; 174 | permission java.lang.RuntimePermission "accessClassInPackage.org.graalvm.compiler.debug"; 175 | permission java.lang.RuntimePermission "accessClassInPackage.org.graalvm.compiler.hotspot"; 176 | permission java.lang.RuntimePermission "accessClassInPackage.org.graalvm.compiler.options"; 177 | permission java.lang.RuntimePermission "accessClassInPackage.org.graalvm.compiler.phases.common.jmx"; 178 | permission java.lang.RuntimePermission "accessClassInPackage.org.graalvm.compiler.serviceprovider"; 179 | }; 180 | 181 | grant codeBase "jrt:/jdk.jsobject" { 182 | permission java.security.AllPermission; 183 | }; 184 | 185 | grant codeBase "jrt:/jdk.localedata" { 186 | permission java.lang.RuntimePermission "accessClassInPackage.sun.text.*"; 187 | permission java.lang.RuntimePermission "accessClassInPackage.sun.util.*"; 188 | }; 189 | 190 | grant codeBase "jrt:/jdk.naming.dns" { 191 | permission java.security.AllPermission; 192 | }; 193 | 194 | grant codeBase "jrt:/jdk.scripting.nashorn" { 195 | permission java.security.AllPermission; 196 | }; 197 | 198 | grant codeBase "jrt:/jdk.scripting.nashorn.shell" { 199 | permission java.security.AllPermission; 200 | }; 201 | 202 | grant codeBase "jrt:/jdk.security.auth" { 203 | permission java.security.AllPermission; 204 | }; 205 | 206 | grant codeBase "jrt:/jdk.security.jgss" { 207 | permission java.security.AllPermission; 208 | }; 209 | 210 | grant codeBase "jrt:/jdk.zipfs" { 211 | permission java.io.FilePermission "<>", "read,write,delete"; 212 | permission java.lang.RuntimePermission "fileSystemProvider"; 213 | permission java.lang.RuntimePermission "accessUserInformation"; 214 | permission java.util.PropertyPermission "os.name", "read"; 215 | permission java.util.PropertyPermission "user.dir", "read"; 216 | permission java.util.PropertyPermission "user.name", "read"; 217 | }; 218 | 219 | // permissions needed by applications using java.desktop module 220 | grant { 221 | permission java.lang.RuntimePermission "accessClassInPackage.com.sun.beans"; 222 | permission java.lang.RuntimePermission "accessClassInPackage.com.sun.beans.*"; 223 | permission java.lang.RuntimePermission "accessClassInPackage.com.sun.java.swing.plaf.*"; 224 | permission java.lang.RuntimePermission "accessClassInPackage.com.apple.*"; 225 | }; 226 | grant codeBase "jrt:/jdk.accessibility" { 227 | permission java.security.AllPermission; 228 | }; 229 | 230 | grant codeBase "jrt:/jdk.crypto.mscapi" { 231 | permission java.lang.RuntimePermission 232 | "accessClassInPackage.sun.security.*"; 233 | permission java.lang.RuntimePermission "loadLibrary.sunmscapi"; 234 | permission java.security.SecurityPermission "putProviderProperty.SunMSCAPI"; 235 | permission java.security.SecurityPermission 236 | "clearProviderProperties.SunMSCAPI"; 237 | permission java.security.SecurityPermission 238 | "removeProviderProperty.SunMSCAPI"; 239 | permission java.security.SecurityPermission "authProvider.SunMSCAPI"; 240 | permission java.util.PropertyPermission "*", "read"; 241 | }; 242 | grant codeBase "jrt:/javafx.base" { 243 | permission java.security.AllPermission; 244 | }; 245 | 246 | grant codeBase "jrt:/javafx.controls" { 247 | permission java.security.AllPermission; 248 | }; 249 | 250 | grant codeBase "jrt:/javafx.fxml" { 251 | permission java.security.AllPermission; 252 | }; 253 | 254 | grant codeBase "jrt:/javafx.graphics" { 255 | permission java.security.AllPermission; 256 | }; 257 | 258 | grant codeBase "jrt:/javafx.media" { 259 | permission java.security.AllPermission; 260 | }; 261 | 262 | grant codeBase "jrt:/javafx.swing" { 263 | permission java.security.AllPermission; 264 | }; 265 | 266 | grant codeBase "jrt:/javafx.web" { 267 | permission java.security.AllPermission; 268 | }; 269 | 270 | -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/lib/security/public_suffix_list.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/lib/security/public_suffix_list.dat -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/lib/tzdb.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burningtnt/JStack-Minecraft/880dc34ccb0b637e595cb00c939a74ad00d08518/release/Jstack Minecraft/jre_Windows/lib/tzdb.dat -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/lib/tzmappings: -------------------------------------------------------------------------------- 1 | AUS Central Standard Time:AU:Australia/Darwin: 2 | AUS Central Standard Time:001:Australia/Darwin: 3 | AUS Eastern Standard Time:AU:Australia/Sydney: 4 | AUS Eastern Standard Time:001:Australia/Sydney: 5 | Afghanistan Standard Time:AF:Asia/Kabul: 6 | Afghanistan Standard Time:001:Asia/Kabul: 7 | Alaskan Standard Time:US:America/Anchorage: 8 | Alaskan Standard Time:001:America/Anchorage: 9 | Aleutian Standard Time:US:America/Adak: 10 | Aleutian Standard Time:001:America/Adak: 11 | Altai Standard Time:RU:Asia/Barnaul: 12 | Altai Standard Time:001:Asia/Barnaul: 13 | Arab Standard Time:BH:Asia/Bahrain: 14 | Arab Standard Time:KW:Asia/Kuwait: 15 | Arab Standard Time:QA:Asia/Qatar: 16 | Arab Standard Time:SA:Asia/Riyadh: 17 | Arab Standard Time:YE:Asia/Aden: 18 | Arab Standard Time:001:Asia/Riyadh: 19 | Arabian Standard Time:AE:Asia/Dubai: 20 | Arabian Standard Time:OM:Asia/Muscat: 21 | Arabian Standard Time:ZZ:Etc/GMT-4: 22 | Arabian Standard Time:001:Asia/Dubai: 23 | Arabic Standard Time:IQ:Asia/Baghdad: 24 | Arabic Standard Time:001:Asia/Baghdad: 25 | Argentina Standard Time:AR:America/Buenos_Aires: 26 | Argentina Standard Time:001:America/Buenos_Aires: 27 | Astrakhan Standard Time:RU:Europe/Astrakhan: 28 | Astrakhan Standard Time:001:Europe/Astrakhan: 29 | Atlantic Standard Time:BM:Atlantic/Bermuda: 30 | Atlantic Standard Time:CA:America/Halifax: 31 | Atlantic Standard Time:GL:America/Thule: 32 | Atlantic Standard Time:001:America/Halifax: 33 | Aus Central W. Standard Time:AU:Australia/Eucla: 34 | Aus Central W. Standard Time:001:Australia/Eucla: 35 | Azerbaijan Standard Time:AZ:Asia/Baku: 36 | Azerbaijan Standard Time:001:Asia/Baku: 37 | Azores Standard Time:GL:America/Scoresbysund: 38 | Azores Standard Time:PT:Atlantic/Azores: 39 | Azores Standard Time:001:Atlantic/Azores: 40 | Bahia Standard Time:BR:America/Bahia: 41 | Bahia Standard Time:001:America/Bahia: 42 | Bangladesh Standard Time:BD:Asia/Dhaka: 43 | Bangladesh Standard Time:BT:Asia/Thimphu: 44 | Bangladesh Standard Time:001:Asia/Dhaka: 45 | Belarus Standard Time:BY:Europe/Minsk: 46 | Belarus Standard Time:001:Europe/Minsk: 47 | Bougainville Standard Time:PG:Pacific/Bougainville: 48 | Bougainville Standard Time:001:Pacific/Bougainville: 49 | Canada Central Standard Time:CA:America/Regina: 50 | Canada Central Standard Time:001:America/Regina: 51 | Cape Verde Standard Time:CV:Atlantic/Cape_Verde: 52 | Cape Verde Standard Time:ZZ:Etc/GMT+1: 53 | Cape Verde Standard Time:001:Atlantic/Cape_Verde: 54 | Caucasus Standard Time:AM:Asia/Yerevan: 55 | Caucasus Standard Time:001:Asia/Yerevan: 56 | Cen. Australia Standard Time:AU:Australia/Adelaide: 57 | Cen. Australia Standard Time:001:Australia/Adelaide: 58 | Central America Standard Time:BZ:America/Belize: 59 | Central America Standard Time:CR:America/Costa_Rica: 60 | Central America Standard Time:EC:Pacific/Galapagos: 61 | Central America Standard Time:GT:America/Guatemala: 62 | Central America Standard Time:HN:America/Tegucigalpa: 63 | Central America Standard Time:NI:America/Managua: 64 | Central America Standard Time:SV:America/El_Salvador: 65 | Central America Standard Time:ZZ:Etc/GMT+6: 66 | Central America Standard Time:001:America/Guatemala: 67 | Central Asia Standard Time:AQ:Antarctica/Vostok: 68 | Central Asia Standard Time:CN:Asia/Urumqi: 69 | Central Asia Standard Time:IO:Indian/Chagos: 70 | Central Asia Standard Time:KG:Asia/Bishkek: 71 | Central Asia Standard Time:KZ:Asia/Almaty: 72 | Central Asia Standard Time:ZZ:Etc/GMT-6: 73 | Central Asia Standard Time:001:Asia/Almaty: 74 | Central Brazilian Standard Time:BR:America/Cuiaba: 75 | Central Brazilian Standard Time:001:America/Cuiaba: 76 | Central Europe Standard Time:AL:Europe/Tirane: 77 | Central Europe Standard Time:CZ:Europe/Prague: 78 | Central Europe Standard Time:HU:Europe/Budapest: 79 | Central Europe Standard Time:ME:Europe/Podgorica: 80 | Central Europe Standard Time:RS:Europe/Belgrade: 81 | Central Europe Standard Time:SI:Europe/Ljubljana: 82 | Central Europe Standard Time:SK:Europe/Bratislava: 83 | Central Europe Standard Time:001:Europe/Budapest: 84 | Central European Standard Time:BA:Europe/Sarajevo: 85 | Central European Standard Time:HR:Europe/Zagreb: 86 | Central European Standard Time:MK:Europe/Skopje: 87 | Central European Standard Time:PL:Europe/Warsaw: 88 | Central European Standard Time:001:Europe/Warsaw: 89 | Central Pacific Standard Time:AQ:Antarctica/Casey: 90 | Central Pacific Standard Time:FM:Pacific/Ponape: 91 | Central Pacific Standard Time:NC:Pacific/Noumea: 92 | Central Pacific Standard Time:SB:Pacific/Guadalcanal: 93 | Central Pacific Standard Time:VU:Pacific/Efate: 94 | Central Pacific Standard Time:ZZ:Etc/GMT-11: 95 | Central Pacific Standard Time:001:Pacific/Guadalcanal: 96 | Central Standard Time:CA:America/Winnipeg: 97 | Central Standard Time:MX:America/Matamoros: 98 | Central Standard Time:US:America/Chicago: 99 | Central Standard Time:ZZ:CST6CDT: 100 | Central Standard Time:001:America/Chicago: 101 | Central Standard Time (Mexico):MX:America/Mexico_City: 102 | Central Standard Time (Mexico):001:America/Mexico_City: 103 | Chatham Islands Standard Time:NZ:Pacific/Chatham: 104 | Chatham Islands Standard Time:001:Pacific/Chatham: 105 | China Standard Time:CN:Asia/Shanghai: 106 | China Standard Time:HK:Asia/Hong_Kong: 107 | China Standard Time:MO:Asia/Macau: 108 | China Standard Time:001:Asia/Shanghai: 109 | Cuba Standard Time:CU:America/Havana: 110 | Cuba Standard Time:001:America/Havana: 111 | Dateline Standard Time:ZZ:Etc/GMT+12: 112 | Dateline Standard Time:001:Etc/GMT+12: 113 | E. Africa Standard Time:AQ:Antarctica/Syowa: 114 | E. Africa Standard Time:DJ:Africa/Djibouti: 115 | E. Africa Standard Time:ER:Africa/Asmera: 116 | E. Africa Standard Time:ET:Africa/Addis_Ababa: 117 | E. Africa Standard Time:KE:Africa/Nairobi: 118 | E. Africa Standard Time:KM:Indian/Comoro: 119 | E. Africa Standard Time:MG:Indian/Antananarivo: 120 | E. Africa Standard Time:SO:Africa/Mogadishu: 121 | E. Africa Standard Time:TZ:Africa/Dar_es_Salaam: 122 | E. Africa Standard Time:UG:Africa/Kampala: 123 | E. Africa Standard Time:YT:Indian/Mayotte: 124 | E. Africa Standard Time:ZZ:Etc/GMT-3: 125 | E. Africa Standard Time:001:Africa/Nairobi: 126 | E. Australia Standard Time:AU:Australia/Brisbane: 127 | E. Australia Standard Time:001:Australia/Brisbane: 128 | E. Europe Standard Time:MD:Europe/Chisinau: 129 | E. Europe Standard Time:001:Europe/Chisinau: 130 | E. South America Standard Time:BR:America/Sao_Paulo: 131 | E. South America Standard Time:001:America/Sao_Paulo: 132 | Easter Island Standard Time:CL:Pacific/Easter: 133 | Easter Island Standard Time:001:Pacific/Easter: 134 | Eastern Standard Time:BS:America/Nassau: 135 | Eastern Standard Time:CA:America/Toronto: 136 | Eastern Standard Time:US:America/New_York: 137 | Eastern Standard Time:ZZ:EST5EDT: 138 | Eastern Standard Time:001:America/New_York: 139 | Eastern Standard Time (Mexico):MX:America/Cancun: 140 | Eastern Standard Time (Mexico):001:America/Cancun: 141 | Egypt Standard Time:EG:Africa/Cairo: 142 | Egypt Standard Time:001:Africa/Cairo: 143 | Ekaterinburg Standard Time:RU:Asia/Yekaterinburg: 144 | Ekaterinburg Standard Time:001:Asia/Yekaterinburg: 145 | FLE Standard Time:AX:Europe/Mariehamn: 146 | FLE Standard Time:BG:Europe/Sofia: 147 | FLE Standard Time:EE:Europe/Tallinn: 148 | FLE Standard Time:FI:Europe/Helsinki: 149 | FLE Standard Time:LT:Europe/Vilnius: 150 | FLE Standard Time:LV:Europe/Riga: 151 | FLE Standard Time:UA:Europe/Kiev: 152 | FLE Standard Time:001:Europe/Kiev: 153 | Fiji Standard Time:FJ:Pacific/Fiji: 154 | Fiji Standard Time:001:Pacific/Fiji: 155 | GMT Standard Time:ES:Atlantic/Canary: 156 | GMT Standard Time:FO:Atlantic/Faeroe: 157 | GMT Standard Time:GB:Europe/London: 158 | GMT Standard Time:GG:Europe/Guernsey: 159 | GMT Standard Time:IE:Europe/Dublin: 160 | GMT Standard Time:IM:Europe/Isle_of_Man: 161 | GMT Standard Time:JE:Europe/Jersey: 162 | GMT Standard Time:PT:Europe/Lisbon: 163 | GMT Standard Time:001:Europe/London: 164 | GTB Standard Time:CY:Asia/Nicosia: 165 | GTB Standard Time:GR:Europe/Athens: 166 | GTB Standard Time:RO:Europe/Bucharest: 167 | GTB Standard Time:001:Europe/Bucharest: 168 | Georgian Standard Time:GE:Asia/Tbilisi: 169 | Georgian Standard Time:001:Asia/Tbilisi: 170 | Greenland Standard Time:GL:America/Godthab: 171 | Greenland Standard Time:001:America/Godthab: 172 | Greenwich Standard Time:BF:Africa/Ouagadougou: 173 | Greenwich Standard Time:CI:Africa/Abidjan: 174 | Greenwich Standard Time:GH:Africa/Accra: 175 | Greenwich Standard Time:GL:America/Danmarkshavn: 176 | Greenwich Standard Time:GM:Africa/Banjul: 177 | Greenwich Standard Time:GN:Africa/Conakry: 178 | Greenwich Standard Time:GW:Africa/Bissau: 179 | Greenwich Standard Time:IS:Atlantic/Reykjavik: 180 | Greenwich Standard Time:LR:Africa/Monrovia: 181 | Greenwich Standard Time:ML:Africa/Bamako: 182 | Greenwich Standard Time:MR:Africa/Nouakchott: 183 | Greenwich Standard Time:SH:Atlantic/St_Helena: 184 | Greenwich Standard Time:SL:Africa/Freetown: 185 | Greenwich Standard Time:SN:Africa/Dakar: 186 | Greenwich Standard Time:TG:Africa/Lome: 187 | Greenwich Standard Time:001:Atlantic/Reykjavik: 188 | Haiti Standard Time:HT:America/Port-au-Prince: 189 | Haiti Standard Time:001:America/Port-au-Prince: 190 | Hawaiian Standard Time:CK:Pacific/Rarotonga: 191 | Hawaiian Standard Time:PF:Pacific/Tahiti: 192 | Hawaiian Standard Time:UM:Pacific/Johnston: 193 | Hawaiian Standard Time:US:Pacific/Honolulu: 194 | Hawaiian Standard Time:ZZ:Etc/GMT+10: 195 | Hawaiian Standard Time:001:Pacific/Honolulu: 196 | India Standard Time:IN:Asia/Calcutta: 197 | India Standard Time:001:Asia/Calcutta: 198 | Iran Standard Time:IR:Asia/Tehran: 199 | Iran Standard Time:001:Asia/Tehran: 200 | Israel Standard Time:IL:Asia/Jerusalem: 201 | Israel Standard Time:001:Asia/Jerusalem: 202 | Jordan Standard Time:JO:Asia/Amman: 203 | Jordan Standard Time:001:Asia/Amman: 204 | Kaliningrad Standard Time:RU:Europe/Kaliningrad: 205 | Kaliningrad Standard Time:001:Europe/Kaliningrad: 206 | Korea Standard Time:KR:Asia/Seoul: 207 | Korea Standard Time:001:Asia/Seoul: 208 | Libya Standard Time:LY:Africa/Tripoli: 209 | Libya Standard Time:001:Africa/Tripoli: 210 | Line Islands Standard Time:KI:Pacific/Kiritimati: 211 | Line Islands Standard Time:ZZ:Etc/GMT-14: 212 | Line Islands Standard Time:001:Pacific/Kiritimati: 213 | Lord Howe Standard Time:AU:Australia/Lord_Howe: 214 | Lord Howe Standard Time:001:Australia/Lord_Howe: 215 | Magadan Standard Time:RU:Asia/Magadan: 216 | Magadan Standard Time:001:Asia/Magadan: 217 | Magallanes Standard Time:CL:America/Punta_Arenas: 218 | Magallanes Standard Time:001:America/Punta_Arenas: 219 | Marquesas Standard Time:PF:Pacific/Marquesas: 220 | Marquesas Standard Time:001:Pacific/Marquesas: 221 | Mauritius Standard Time:MU:Indian/Mauritius: 222 | Mauritius Standard Time:RE:Indian/Reunion: 223 | Mauritius Standard Time:SC:Indian/Mahe: 224 | Mauritius Standard Time:001:Indian/Mauritius: 225 | Middle East Standard Time:LB:Asia/Beirut: 226 | Middle East Standard Time:001:Asia/Beirut: 227 | Montevideo Standard Time:UY:America/Montevideo: 228 | Montevideo Standard Time:001:America/Montevideo: 229 | Morocco Standard Time:EH:Africa/El_Aaiun: 230 | Morocco Standard Time:MA:Africa/Casablanca: 231 | Morocco Standard Time:001:Africa/Casablanca: 232 | Mountain Standard Time:CA:America/Edmonton: 233 | Mountain Standard Time:MX:America/Ojinaga: 234 | Mountain Standard Time:US:America/Denver: 235 | Mountain Standard Time:ZZ:MST7MDT: 236 | Mountain Standard Time:001:America/Denver: 237 | Mountain Standard Time (Mexico):MX:America/Chihuahua: 238 | Mountain Standard Time (Mexico):001:America/Chihuahua: 239 | Myanmar Standard Time:CC:Indian/Cocos: 240 | Myanmar Standard Time:MM:Asia/Rangoon: 241 | Myanmar Standard Time:001:Asia/Rangoon: 242 | N. Central Asia Standard Time:RU:Asia/Novosibirsk: 243 | N. Central Asia Standard Time:001:Asia/Novosibirsk: 244 | Namibia Standard Time:NA:Africa/Windhoek: 245 | Namibia Standard Time:001:Africa/Windhoek: 246 | Nepal Standard Time:NP:Asia/Katmandu: 247 | Nepal Standard Time:001:Asia/Katmandu: 248 | New Zealand Standard Time:AQ:Antarctica/McMurdo: 249 | New Zealand Standard Time:NZ:Pacific/Auckland: 250 | New Zealand Standard Time:001:Pacific/Auckland: 251 | Newfoundland Standard Time:CA:America/St_Johns: 252 | Newfoundland Standard Time:001:America/St_Johns: 253 | Norfolk Standard Time:NF:Pacific/Norfolk: 254 | Norfolk Standard Time:001:Pacific/Norfolk: 255 | North Asia East Standard Time:RU:Asia/Irkutsk: 256 | North Asia East Standard Time:001:Asia/Irkutsk: 257 | North Asia Standard Time:RU:Asia/Krasnoyarsk: 258 | North Asia Standard Time:001:Asia/Krasnoyarsk: 259 | North Korea Standard Time:KP:Asia/Pyongyang: 260 | North Korea Standard Time:001:Asia/Pyongyang: 261 | Omsk Standard Time:RU:Asia/Omsk: 262 | Omsk Standard Time:001:Asia/Omsk: 263 | Pacific SA Standard Time:CL:America/Santiago: 264 | Pacific SA Standard Time:001:America/Santiago: 265 | Pacific Standard Time:CA:America/Vancouver: 266 | Pacific Standard Time:US:America/Los_Angeles: 267 | Pacific Standard Time:ZZ:PST8PDT: 268 | Pacific Standard Time:001:America/Los_Angeles: 269 | Pacific Standard Time (Mexico):MX:America/Tijuana: 270 | Pacific Standard Time (Mexico):001:America/Tijuana: 271 | Pakistan Standard Time:PK:Asia/Karachi: 272 | Pakistan Standard Time:001:Asia/Karachi: 273 | Paraguay Standard Time:PY:America/Asuncion: 274 | Paraguay Standard Time:001:America/Asuncion: 275 | Qyzylorda Standard Time:KZ:Asia/Qyzylorda: 276 | Qyzylorda Standard Time:001:Asia/Qyzylorda: 277 | Romance Standard Time:BE:Europe/Brussels: 278 | Romance Standard Time:DK:Europe/Copenhagen: 279 | Romance Standard Time:ES:Europe/Madrid: 280 | Romance Standard Time:FR:Europe/Paris: 281 | Romance Standard Time:001:Europe/Paris: 282 | Russia Time Zone 10:RU:Asia/Srednekolymsk: 283 | Russia Time Zone 10:001:Asia/Srednekolymsk: 284 | Russia Time Zone 11:RU:Asia/Kamchatka: 285 | Russia Time Zone 11:001:Asia/Kamchatka: 286 | Russia Time Zone 3:RU:Europe/Samara: 287 | Russia Time Zone 3:001:Europe/Samara: 288 | Russian Standard Time:RU:Europe/Moscow: 289 | Russian Standard Time:UA:Europe/Simferopol: 290 | Russian Standard Time:001:Europe/Moscow: 291 | SA Eastern Standard Time:AQ:Antarctica/Rothera: 292 | SA Eastern Standard Time:BR:America/Fortaleza: 293 | SA Eastern Standard Time:FK:Atlantic/Stanley: 294 | SA Eastern Standard Time:GF:America/Cayenne: 295 | SA Eastern Standard Time:SR:America/Paramaribo: 296 | SA Eastern Standard Time:ZZ:Etc/GMT+3: 297 | SA Eastern Standard Time:001:America/Cayenne: 298 | SA Pacific Standard Time:BR:America/Rio_Branco: 299 | SA Pacific Standard Time:CA:America/Coral_Harbour: 300 | SA Pacific Standard Time:CO:America/Bogota: 301 | SA Pacific Standard Time:EC:America/Guayaquil: 302 | SA Pacific Standard Time:JM:America/Jamaica: 303 | SA Pacific Standard Time:KY:America/Cayman: 304 | SA Pacific Standard Time:PA:America/Panama: 305 | SA Pacific Standard Time:PE:America/Lima: 306 | SA Pacific Standard Time:ZZ:Etc/GMT+5: 307 | SA Pacific Standard Time:001:America/Bogota: 308 | SA Western Standard Time:AG:America/Antigua: 309 | SA Western Standard Time:AI:America/Anguilla: 310 | SA Western Standard Time:AW:America/Aruba: 311 | SA Western Standard Time:BB:America/Barbados: 312 | SA Western Standard Time:BL:America/St_Barthelemy: 313 | SA Western Standard Time:BO:America/La_Paz: 314 | SA Western Standard Time:BQ:America/Kralendijk: 315 | SA Western Standard Time:BR:America/Manaus: 316 | SA Western Standard Time:CA:America/Blanc-Sablon: 317 | SA Western Standard Time:CW:America/Curacao: 318 | SA Western Standard Time:DM:America/Dominica: 319 | SA Western Standard Time:DO:America/Santo_Domingo: 320 | SA Western Standard Time:GD:America/Grenada: 321 | SA Western Standard Time:GP:America/Guadeloupe: 322 | SA Western Standard Time:GY:America/Guyana: 323 | SA Western Standard Time:KN:America/St_Kitts: 324 | SA Western Standard Time:LC:America/St_Lucia: 325 | SA Western Standard Time:MF:America/Marigot: 326 | SA Western Standard Time:MQ:America/Martinique: 327 | SA Western Standard Time:MS:America/Montserrat: 328 | SA Western Standard Time:PR:America/Puerto_Rico: 329 | SA Western Standard Time:SX:America/Lower_Princes: 330 | SA Western Standard Time:TT:America/Port_of_Spain: 331 | SA Western Standard Time:VC:America/St_Vincent: 332 | SA Western Standard Time:VG:America/Tortola: 333 | SA Western Standard Time:VI:America/St_Thomas: 334 | SA Western Standard Time:ZZ:Etc/GMT+4: 335 | SA Western Standard Time:001:America/La_Paz: 336 | SE Asia Standard Time:AQ:Antarctica/Davis: 337 | SE Asia Standard Time:CX:Indian/Christmas: 338 | SE Asia Standard Time:ID:Asia/Jakarta: 339 | SE Asia Standard Time:KH:Asia/Phnom_Penh: 340 | SE Asia Standard Time:LA:Asia/Vientiane: 341 | SE Asia Standard Time:TH:Asia/Bangkok: 342 | SE Asia Standard Time:VN:Asia/Saigon: 343 | SE Asia Standard Time:ZZ:Etc/GMT-7: 344 | SE Asia Standard Time:001:Asia/Bangkok: 345 | Saint Pierre Standard Time:PM:America/Miquelon: 346 | Saint Pierre Standard Time:001:America/Miquelon: 347 | Sakhalin Standard Time:RU:Asia/Sakhalin: 348 | Sakhalin Standard Time:001:Asia/Sakhalin: 349 | Samoa Standard Time:WS:Pacific/Apia: 350 | Samoa Standard Time:001:Pacific/Apia: 351 | Sao Tome Standard Time:ST:Africa/Sao_Tome: 352 | Sao Tome Standard Time:001:Africa/Sao_Tome: 353 | Saratov Standard Time:RU:Europe/Saratov: 354 | Saratov Standard Time:001:Europe/Saratov: 355 | Singapore Standard Time:BN:Asia/Brunei: 356 | Singapore Standard Time:ID:Asia/Makassar: 357 | Singapore Standard Time:MY:Asia/Kuala_Lumpur: 358 | Singapore Standard Time:PH:Asia/Manila: 359 | Singapore Standard Time:SG:Asia/Singapore: 360 | Singapore Standard Time:ZZ:Etc/GMT-8: 361 | Singapore Standard Time:001:Asia/Singapore: 362 | South Africa Standard Time:BI:Africa/Bujumbura: 363 | South Africa Standard Time:BW:Africa/Gaborone: 364 | South Africa Standard Time:CD:Africa/Lubumbashi: 365 | South Africa Standard Time:LS:Africa/Maseru: 366 | South Africa Standard Time:MW:Africa/Blantyre: 367 | South Africa Standard Time:MZ:Africa/Maputo: 368 | South Africa Standard Time:RW:Africa/Kigali: 369 | South Africa Standard Time:SS:Africa/Juba: 370 | South Africa Standard Time:SZ:Africa/Mbabane: 371 | South Africa Standard Time:ZA:Africa/Johannesburg: 372 | South Africa Standard Time:ZM:Africa/Lusaka: 373 | South Africa Standard Time:ZW:Africa/Harare: 374 | South Africa Standard Time:ZZ:Etc/GMT-2: 375 | South Africa Standard Time:001:Africa/Johannesburg: 376 | Sri Lanka Standard Time:LK:Asia/Colombo: 377 | Sri Lanka Standard Time:001:Asia/Colombo: 378 | Sudan Standard Time:SD:Africa/Khartoum: 379 | Sudan Standard Time:001:Africa/Khartoum: 380 | Syria Standard Time:SY:Asia/Damascus: 381 | Syria Standard Time:001:Asia/Damascus: 382 | Taipei Standard Time:TW:Asia/Taipei: 383 | Taipei Standard Time:001:Asia/Taipei: 384 | Tasmania Standard Time:AU:Australia/Hobart: 385 | Tasmania Standard Time:001:Australia/Hobart: 386 | Tocantins Standard Time:BR:America/Araguaina: 387 | Tocantins Standard Time:001:America/Araguaina: 388 | Tokyo Standard Time:ID:Asia/Jayapura: 389 | Tokyo Standard Time:JP:Asia/Tokyo: 390 | Tokyo Standard Time:PW:Pacific/Palau: 391 | Tokyo Standard Time:TL:Asia/Dili: 392 | Tokyo Standard Time:ZZ:Etc/GMT-9: 393 | Tokyo Standard Time:001:Asia/Tokyo: 394 | Tomsk Standard Time:RU:Asia/Tomsk: 395 | Tomsk Standard Time:001:Asia/Tomsk: 396 | Tonga Standard Time:TO:Pacific/Tongatapu: 397 | Tonga Standard Time:001:Pacific/Tongatapu: 398 | Transbaikal Standard Time:RU:Asia/Chita: 399 | Transbaikal Standard Time:001:Asia/Chita: 400 | Turkey Standard Time:TR:Europe/Istanbul: 401 | Turkey Standard Time:001:Europe/Istanbul: 402 | Turks And Caicos Standard Time:TC:America/Grand_Turk: 403 | Turks And Caicos Standard Time:001:America/Grand_Turk: 404 | US Eastern Standard Time:US:America/Indianapolis: 405 | US Eastern Standard Time:001:America/Indianapolis: 406 | US Mountain Standard Time:CA:America/Creston: 407 | US Mountain Standard Time:MX:America/Hermosillo: 408 | US Mountain Standard Time:US:America/Phoenix: 409 | US Mountain Standard Time:ZZ:Etc/GMT+7: 410 | US Mountain Standard Time:001:America/Phoenix: 411 | UTC:ZZ:Etc/UTC: 412 | UTC:001:Etc/UTC: 413 | UTC+12:KI:Pacific/Tarawa: 414 | UTC+12:MH:Pacific/Majuro: 415 | UTC+12:NR:Pacific/Nauru: 416 | UTC+12:TV:Pacific/Funafuti: 417 | UTC+12:UM:Pacific/Wake: 418 | UTC+12:WF:Pacific/Wallis: 419 | UTC+12:ZZ:Etc/GMT-12: 420 | UTC+12:001:Etc/GMT-12: 421 | UTC+13:KI:Pacific/Enderbury: 422 | UTC+13:TK:Pacific/Fakaofo: 423 | UTC+13:ZZ:Etc/GMT-13: 424 | UTC+13:001:Etc/GMT-13: 425 | UTC-02:BR:America/Noronha: 426 | UTC-02:GS:Atlantic/South_Georgia: 427 | UTC-02:ZZ:Etc/GMT+2: 428 | UTC-02:001:Etc/GMT+2: 429 | UTC-08:PN:Pacific/Pitcairn: 430 | UTC-08:ZZ:Etc/GMT+8: 431 | UTC-08:001:Etc/GMT+8: 432 | UTC-09:PF:Pacific/Gambier: 433 | UTC-09:ZZ:Etc/GMT+9: 434 | UTC-09:001:Etc/GMT+9: 435 | UTC-11:AS:Pacific/Pago_Pago: 436 | UTC-11:NU:Pacific/Niue: 437 | UTC-11:UM:Pacific/Midway: 438 | UTC-11:ZZ:Etc/GMT+11: 439 | UTC-11:001:Etc/GMT+11: 440 | Ulaanbaatar Standard Time:MN:Asia/Ulaanbaatar: 441 | Ulaanbaatar Standard Time:001:Asia/Ulaanbaatar: 442 | Venezuela Standard Time:VE:America/Caracas: 443 | Venezuela Standard Time:001:America/Caracas: 444 | Vladivostok Standard Time:RU:Asia/Vladivostok: 445 | Vladivostok Standard Time:001:Asia/Vladivostok: 446 | Volgograd Standard Time:RU:Europe/Volgograd: 447 | Volgograd Standard Time:001:Europe/Volgograd: 448 | W. Australia Standard Time:AU:Australia/Perth: 449 | W. Australia Standard Time:001:Australia/Perth: 450 | W. Central Africa Standard Time:AO:Africa/Luanda: 451 | W. Central Africa Standard Time:BJ:Africa/Porto-Novo: 452 | W. Central Africa Standard Time:CD:Africa/Kinshasa: 453 | W. Central Africa Standard Time:CF:Africa/Bangui: 454 | W. Central Africa Standard Time:CG:Africa/Brazzaville: 455 | W. Central Africa Standard Time:CM:Africa/Douala: 456 | W. Central Africa Standard Time:DZ:Africa/Algiers: 457 | W. Central Africa Standard Time:GA:Africa/Libreville: 458 | W. Central Africa Standard Time:GQ:Africa/Malabo: 459 | W. Central Africa Standard Time:NE:Africa/Niamey: 460 | W. Central Africa Standard Time:NG:Africa/Lagos: 461 | W. Central Africa Standard Time:TD:Africa/Ndjamena: 462 | W. Central Africa Standard Time:TN:Africa/Tunis: 463 | W. Central Africa Standard Time:ZZ:Etc/GMT-1: 464 | W. Central Africa Standard Time:001:Africa/Lagos: 465 | W. Europe Standard Time:AD:Europe/Andorra: 466 | W. Europe Standard Time:AT:Europe/Vienna: 467 | W. Europe Standard Time:CH:Europe/Zurich: 468 | W. Europe Standard Time:DE:Europe/Berlin: 469 | W. Europe Standard Time:GI:Europe/Gibraltar: 470 | W. Europe Standard Time:IT:Europe/Rome: 471 | W. Europe Standard Time:LI:Europe/Vaduz: 472 | W. Europe Standard Time:LU:Europe/Luxembourg: 473 | W. Europe Standard Time:MC:Europe/Monaco: 474 | W. Europe Standard Time:MT:Europe/Malta: 475 | W. Europe Standard Time:NL:Europe/Amsterdam: 476 | W. Europe Standard Time:NO:Europe/Oslo: 477 | W. Europe Standard Time:SE:Europe/Stockholm: 478 | W. Europe Standard Time:SJ:Arctic/Longyearbyen: 479 | W. Europe Standard Time:SM:Europe/San_Marino: 480 | W. Europe Standard Time:VA:Europe/Vatican: 481 | W. Europe Standard Time:001:Europe/Berlin: 482 | W. Mongolia Standard Time:MN:Asia/Hovd: 483 | W. Mongolia Standard Time:001:Asia/Hovd: 484 | West Asia Standard Time:AQ:Antarctica/Mawson: 485 | West Asia Standard Time:KZ:Asia/Oral: 486 | West Asia Standard Time:MV:Indian/Maldives: 487 | West Asia Standard Time:TF:Indian/Kerguelen: 488 | West Asia Standard Time:TJ:Asia/Dushanbe: 489 | West Asia Standard Time:TM:Asia/Ashgabat: 490 | West Asia Standard Time:UZ:Asia/Tashkent: 491 | West Asia Standard Time:ZZ:Etc/GMT-5: 492 | West Asia Standard Time:001:Asia/Tashkent: 493 | West Bank Standard Time:PS:Asia/Hebron: 494 | West Bank Standard Time:001:Asia/Hebron: 495 | West Pacific Standard Time:AQ:Antarctica/DumontDUrville: 496 | West Pacific Standard Time:FM:Pacific/Truk: 497 | West Pacific Standard Time:GU:Pacific/Guam: 498 | West Pacific Standard Time:MP:Pacific/Saipan: 499 | West Pacific Standard Time:PG:Pacific/Port_Moresby: 500 | West Pacific Standard Time:ZZ:Etc/GMT-10: 501 | West Pacific Standard Time:001:Pacific/Port_Moresby: 502 | Yakutsk Standard Time:RU:Asia/Yakutsk: 503 | Yakutsk Standard Time:001:Asia/Yakutsk: 504 | Yukon Standard Time:CA:America/Whitehorse: 505 | Yukon Standard Time:001:America/Whitehorse: 506 | -------------------------------------------------------------------------------- /release/Jstack Minecraft/jre_Windows/release: -------------------------------------------------------------------------------- 1 | JAVA_VERSION="17.0.7" 2 | MODULES="java.base java.logging jdk.internal.jvmstat jdk.attach" 3 | -------------------------------------------------------------------------------- /settings.gradle.kts: -------------------------------------------------------------------------------- 1 | rootProject.name = "JStack-Minecraft" -------------------------------------------------------------------------------- /src/main/java/net/burningtnt/jstackmc/GameDumpCreator.java: -------------------------------------------------------------------------------- 1 | package net.burningtnt.jstackmc; 2 | 3 | import net.burningtnt.tdparser.results.IThreadDumpAnalyzedResult; 4 | import net.burningtnt.tdparser.ThreadDumpAnalyzer; 5 | import net.burningtnt.tdparser.infos.ThreadInfo; 6 | import net.burningtnt.tdparser.infos.ThreadStateInfo; 7 | import net.burningtnt.tdparser.results.ThreadDumpReport; 8 | import net.burningtnt.tdparser.infos.stacktrace.AbstractStackTraceElement; 9 | 10 | import java.io.IOException; 11 | import java.io.PrintWriter; 12 | import java.io.Writer; 13 | import java.util.ArrayList; 14 | import java.util.List; 15 | import java.util.Map; 16 | import java.util.regex.Pattern; 17 | 18 | public final class GameDumpCreator { 19 | private static final Pattern ACCESS_TOKEN_HIDER = Pattern.compile("--accessToken [0-9a-f]*"); 20 | 21 | private static final int TOOL_VERSION = 9; 22 | 23 | private final int dumpTime; 24 | 25 | private final List> results; 26 | 27 | private GameDumpCreator(int dumpTime) { 28 | this.dumpTime = dumpTime; 29 | this.results = new ArrayList<>(dumpTime); 30 | } 31 | 32 | public static GameDumpCreator of(int dumpTime) { 33 | return new GameDumpCreator(dumpTime); 34 | } 35 | 36 | public void writeDumpTo(JVMCommandExecutor executor, Writer writer) throws IOException, InterruptedException { 37 | writeDumpHeadTo(executor, writer); 38 | 39 | writer.write('\n'); 40 | 41 | for (int i = 0; i < this.dumpTime; i++) { 42 | generateDump(executor); 43 | 44 | if (i < this.dumpTime - 1) { 45 | Thread.sleep(3000); 46 | } 47 | } 48 | 49 | writeAnalysisTo(writer); 50 | writer.write('\n'); 51 | for (int i = 0; i < this.dumpTime; i++) { 52 | writeDumpBodyTo(this.results.get(i).getKey(), writer); 53 | 54 | if (i < this.dumpTime - 1) { 55 | writer.write("====================\n"); 56 | } 57 | } 58 | } 59 | 60 | private void writeDumpHeadTo(JVMCommandExecutor executor, Writer writer) throws IOException { 61 | writer.write("===== Minecraft JStack Dump =====\n"); 62 | writeKeyValueTo("Tool Version", String.valueOf(TOOL_VERSION), writer, false); 63 | writeKeyValueTo("VM PID", executor.virtualMachine.id(), writer, false); 64 | writeKeyValueTo( 65 | "VM Command Line", 66 | ACCESS_TOKEN_HIDER.matcher(executor.executeCommandAsCharSequence("VM.command_line")).replaceAll("--accessToken "), 67 | writer, 68 | true 69 | ); 70 | writeKeyValueTo( 71 | "VM Version", 72 | executor.executeCommandAsCharSequence("VM.version").toString(), 73 | writer, 74 | true 75 | ); 76 | } 77 | 78 | public void writeKeyValueTo(String key, String value, Writer writer, boolean multilineMode) throws IOException { 79 | writer.write(key); 80 | writer.write(':'); 81 | writer.write(' '); 82 | 83 | if (multilineMode) { 84 | writer.write('{'); 85 | writer.write('\n'); 86 | 87 | String[] lines = value.split("\n"); 88 | 89 | for (int i = 0; i < lines.length; i++) { 90 | if (i != lines.length - 1) { 91 | writer.write(" "); 92 | writer.write(lines[i]); 93 | writer.write('\n'); 94 | } else { 95 | if (lines[i].length() == 0) { 96 | writer.write('}'); 97 | } else { 98 | writer.write(" "); 99 | writer.write(lines[i]); 100 | writer.write('\n'); 101 | writer.write('}'); 102 | } 103 | } 104 | } 105 | } else { 106 | writer.write(value); 107 | } 108 | writer.write('\n'); 109 | } 110 | 111 | private void generateDump(JVMCommandExecutor executor) throws IOException { 112 | String result = executor.executeCommandAsString("Thread.print"); 113 | this.results.add(Map.entry(result, ThreadDumpAnalyzer.safeAnalyze(result))); 114 | } 115 | 116 | private void writeAnalysisTo(Writer writer) throws IOException { 117 | writer.write("Analysis:\n"); 118 | List reports = new ArrayList<>(this.dumpTime); 119 | for (int i = 0; i < this.dumpTime; i++) { 120 | IThreadDumpAnalyzedResult result = this.results.get(i).getValue(); 121 | if (!result.success() || result.getResult() == null) { 122 | PrintWriter pw = new PrintWriter(writer); 123 | writer.write("Cannot analyze the report because one / some of the thread dump is invalid.\n"); 124 | printException(i, result, pw, writer); 125 | for (i++; i < this.dumpTime; i++) { 126 | result = this.results.get(i).getValue(); 127 | if (!result.success()) { 128 | printException(i, result, pw, writer); 129 | } 130 | } 131 | writer.write('\n'); 132 | return; 133 | } 134 | 135 | reports.add(result.getResult()); 136 | } 137 | 138 | for (String threadName : new String[]{"Client Thread", "Server Thread", "Render Thread", "JobScheduler FJ pool 0/3"}) { 139 | ThreadInfo first = reports.get(0).lookupThread(threadName); 140 | if (first == null) { 141 | continue; 142 | } 143 | if (first.state() != ThreadStateInfo.RUNNABLE) { 144 | writer.write(String.format("Thread '%s' is stuck!\n", threadName)); 145 | continue; 146 | } 147 | 148 | boolean isStuck = true; 149 | for (int i = 1; i < this.dumpTime; i++) { 150 | ThreadInfo ti = reports.get(i).lookupThread(threadName); 151 | if (ti == null) { 152 | break; 153 | } 154 | if (ti.state() != ThreadStateInfo.RUNNABLE) { 155 | break; 156 | } 157 | 158 | List fst = first.stackTraceElements(); 159 | List cst = ti.stackTraceElements(); 160 | 161 | if (fst == null || fst.isEmpty() || cst == null || cst.isEmpty()) { 162 | break; 163 | } 164 | 165 | if (!fst.get(0).equals(cst.get(0))) { 166 | isStuck = false; 167 | break; 168 | } 169 | } 170 | if (isStuck) { 171 | writer.write(String.format("Thread '%s' is stuck!\n", threadName)); 172 | } 173 | } 174 | } 175 | 176 | private static void printException(int index, IThreadDumpAnalyzedResult result, PrintWriter pw, Writer writer) throws IOException { 177 | writer.write('#'); 178 | writer.write(Integer.toString(index)); 179 | writer.write(": "); 180 | if (result.getException() == null) { 181 | writer.write("The result is in the failed status, however, the exception is null."); 182 | } else { 183 | result.getException().printStackTrace(pw); 184 | if (pw.checkError()) { 185 | throw new IOException("An exception is thrown while printing data into the PrintWriter."); 186 | } 187 | } 188 | } 189 | 190 | private static void writeDumpBodyTo(String result, Writer writer) throws IOException { 191 | writer.write(result); 192 | } 193 | } 194 | -------------------------------------------------------------------------------- /src/main/java/net/burningtnt/jstackmc/JVMCommandExecutor.java: -------------------------------------------------------------------------------- 1 | package net.burningtnt.jstackmc; 2 | 3 | import com.sun.tools.attach.AttachNotSupportedException; 4 | import com.sun.tools.attach.AttachOperationFailedException; 5 | import com.sun.tools.attach.VirtualMachine; 6 | import com.sun.tools.attach.VirtualMachineDescriptor; 7 | 8 | import java.io.IOException; 9 | import java.io.InputStream; 10 | import java.io.InputStreamReader; 11 | import java.nio.CharBuffer; 12 | 13 | public abstract class JVMCommandExecutor implements AutoCloseable { 14 | protected final VirtualMachine virtualMachine; 15 | 16 | protected JVMCommandExecutor(VirtualMachine virtualMachine) { 17 | this.virtualMachine = virtualMachine; 18 | } 19 | 20 | public abstract InputStream executeCommandAsInputStream(String command) throws IOException; 21 | 22 | public abstract CharSequence executeCommandAsCharSequence(String command) throws IOException; 23 | 24 | public abstract String executeCommandAsString(String command) throws IOException; 25 | 26 | public final void close() throws IOException { 27 | this.virtualMachine.detach(); 28 | } 29 | 30 | private static VirtualMachine attach(VirtualMachineDescriptor descriptor, int retryTime) throws IOException { 31 | Throwable[] errors = new Throwable[retryTime]; 32 | for (int i = 0; i < retryTime; i++) { 33 | try { 34 | return descriptor.provider().attachVirtualMachine(descriptor); 35 | } catch (IOException | AttachNotSupportedException e) { 36 | errors[i] = e; 37 | } 38 | } 39 | 40 | IOException exception = new IOException(String.format("Cannot attach VM %s.", descriptor.id())); 41 | for (Throwable t : errors) { 42 | exception.addSuppressed(t); 43 | } 44 | 45 | throw exception; 46 | } 47 | 48 | public static JVMCommandExecutor of(VirtualMachineDescriptor descriptor, int retryTime) throws IOException { 49 | VirtualMachine virtualMachine = attach(descriptor, retryTime); 50 | try { 51 | if (virtualMachine instanceof sun.tools.attach.HotSpotVirtualMachine) { 52 | return new JVMCommandExecutor(virtualMachine) { 53 | @Override 54 | public InputStream executeCommandAsInputStream(String command) throws IOException { 55 | return ((sun.tools.attach.HotSpotVirtualMachine) this.virtualMachine).executeJCmd(command); 56 | } 57 | 58 | @Override 59 | public CharSequence executeCommandAsCharSequence(String command) throws IOException { 60 | StringBuilder stringBuilder = new StringBuilder(1024); 61 | try (InputStreamReader reader = new InputStreamReader(this.executeCommandAsInputStream(command))) { 62 | CharBuffer buffer = CharBuffer.allocate(1024); 63 | 64 | while (reader.read(buffer) > 0) { 65 | buffer.flip(); 66 | stringBuilder.append(buffer); 67 | buffer.clear(); 68 | } 69 | } 70 | return stringBuilder; 71 | } 72 | 73 | @Override 74 | public String executeCommandAsString(String command) throws IOException { 75 | return this.executeCommandAsCharSequence(command).toString(); 76 | } 77 | }; 78 | } else { 79 | throw new AttachOperationFailedException(String.format("Unsupported implementation %s of com.sun.tools.attach.VirtualMachine.", virtualMachine.getClass().getName())); 80 | } 81 | } catch (Throwable t) { 82 | try { 83 | virtualMachine.detach(); 84 | } catch (IOException ignored) { 85 | } 86 | throw t; 87 | } 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /src/main/java/net/burningtnt/jstackmc/JVMDescriptorAnalyzer.java: -------------------------------------------------------------------------------- 1 | package net.burningtnt.jstackmc; 2 | 3 | import com.sun.tools.attach.VirtualMachineDescriptor; 4 | 5 | import java.io.IOException; 6 | import java.util.regex.Matcher; 7 | import java.util.regex.Pattern; 8 | 9 | public final class JVMDescriptorAnalyzer { 10 | private JVMDescriptorAnalyzer() { 11 | } 12 | 13 | private static final String[] MINECRAFT_PACKAGES = { 14 | "net.fabricmc", 15 | "net.minecraftforge", 16 | "net.minecraft", 17 | "cpw.mods", 18 | "org.jackhuang.hmcl", 19 | "oolloo.jlw.Wrapper", 20 | "com.intellij.idea" 21 | }; 22 | 23 | private static final String CURRENT_JVM = String.valueOf(ProcessHandle.current().pid()); 24 | 25 | private static final Pattern MAIN_CLASS_PATTERN = Pattern.compile("java_command: (([a-zA-Z][a-zA-Z0-9_]*\\.)+[a-zA-Z][a-zA-Z0-9_]*)"); 26 | 27 | public static boolean isMinecraftJVM(JVMCommandExecutor jvmCommandExecutor) throws IOException { 28 | Matcher m = MAIN_CLASS_PATTERN.matcher(jvmCommandExecutor.executeCommandAsCharSequence("VM.command_line")); 29 | if (m.find()) { 30 | String mainClass = m.group(1); 31 | 32 | for (String prefix : MINECRAFT_PACKAGES) { 33 | if (mainClass.startsWith(prefix)) { 34 | return true; 35 | } 36 | } 37 | } 38 | 39 | return false; 40 | } 41 | 42 | public static boolean isCurrentJVM(VirtualMachineDescriptor descriptor) { 43 | return descriptor.id().equals(CURRENT_JVM); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/net/burningtnt/jstackmc/Logging.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Hello Minecraft! Launcher 3 | * Copyright (C) 2021 huangyuhui and contributors 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | package net.burningtnt.jstackmc; 19 | 20 | import java.io.ByteArrayOutputStream; 21 | import java.io.PrintWriter; 22 | import java.io.StringWriter; 23 | import java.io.UnsupportedEncodingException; 24 | import java.text.MessageFormat; 25 | import java.util.Date; 26 | import java.util.logging.*; 27 | 28 | public final class Logging { 29 | private Logging() { 30 | } 31 | 32 | private static final Logger LOGGER = Logger.getLogger("JStack Minecraft"); 33 | private static final ByteArrayOutputStream storedLogs = new ByteArrayOutputStream(8 * 1024); 34 | private static final Formatter formatter = new Formatter() { 35 | @Override 36 | public String format(LogRecord record) { 37 | return record.getMessage(); 38 | } 39 | }; 40 | 41 | public static Logger getLogger() { 42 | return LOGGER; 43 | } 44 | 45 | static { 46 | LOGGER.setLevel(Level.ALL); 47 | LOGGER.setUseParentHandlers(false); 48 | LOGGER.setFilter(record -> { 49 | record.setMessage(format(record)); 50 | return true; 51 | }); 52 | 53 | ConsoleHandler consoleHandler = new ConsoleHandler(); 54 | consoleHandler.setFormatter(formatter); 55 | consoleHandler.setLevel(Level.FINER); 56 | LOGGER.addHandler(consoleHandler); 57 | 58 | StreamHandler streamHandler = new StreamHandler(storedLogs, formatter) { 59 | @Override 60 | public synchronized void publish(LogRecord record) { 61 | super.publish(record); 62 | flush(); 63 | } 64 | }; 65 | try { 66 | streamHandler.setEncoding("UTF-8"); 67 | } catch (UnsupportedEncodingException e) { 68 | e.printStackTrace(); 69 | } 70 | streamHandler.setLevel(Level.ALL); 71 | LOGGER.addHandler(streamHandler); 72 | } 73 | 74 | private static final MessageFormat FORMAT = new MessageFormat("[{0,date,HH:mm:ss}] [{1}.{2}/{3}] {4}\n"); 75 | 76 | private static String format(LogRecord record) { 77 | Throwable thrown = record.getThrown(); 78 | 79 | StringWriter writer; 80 | StringBuffer buffer; 81 | if (thrown == null) { 82 | writer = null; 83 | buffer = new StringBuffer(256); 84 | } else { 85 | writer = new StringWriter(1024); 86 | buffer = writer.getBuffer(); 87 | } 88 | 89 | FORMAT.format(new Object[]{ 90 | new Date(record.getMillis()), 91 | record.getSourceClassName(), record.getSourceMethodName(), record.getLevel().getName(), 92 | record.getMessage() 93 | }, buffer, null); 94 | 95 | if (thrown != null) { 96 | try (PrintWriter printWriter = new PrintWriter(writer)) { 97 | thrown.printStackTrace(printWriter); 98 | } 99 | } 100 | return buffer.toString(); 101 | } 102 | } 103 | -------------------------------------------------------------------------------- /src/main/java/net/burningtnt/jstackmc/Main.java: -------------------------------------------------------------------------------- 1 | package net.burningtnt.jstackmc; 2 | 3 | import com.sun.tools.attach.AttachNotSupportedException; 4 | import com.sun.tools.attach.VirtualMachine; 5 | import com.sun.tools.attach.VirtualMachineDescriptor; 6 | 7 | import java.io.IOException; 8 | import java.io.Writer; 9 | import java.nio.file.Files; 10 | import java.nio.file.Path; 11 | import java.time.LocalDateTime; 12 | import java.time.format.DateTimeFormatter; 13 | import java.util.logging.Level; 14 | 15 | public final class Main { 16 | private static final int DEFAULT_RETRY_TIME = 3; 17 | 18 | private static final int DEFAULT_DUMP_TIME = 5; 19 | 20 | private Main() { 21 | } 22 | 23 | private static int getSystemPropertyAsInt(String key, int defaultValue) { 24 | String value = System.getProperty(key); 25 | return value == null ? defaultValue : Integer.parseInt(value); 26 | } 27 | 28 | public static void main(String[] args) throws AttachNotSupportedException, IOException, InterruptedException { 29 | int retryTime = getSystemPropertyAsInt("jstackmc.attach.retrytime", DEFAULT_RETRY_TIME); 30 | int dumpTime = getSystemPropertyAsInt("jstackmc.threaddump.time", DEFAULT_DUMP_TIME); 31 | 32 | Path output = Path.of("dumps", String.format("minecraft-jstack-dump-%s.txt", LocalDateTime.now().format( 33 | DateTimeFormatter.ofPattern("yyyy-MM-dd-hh-mm-ss") 34 | ))).toAbsolutePath(); 35 | 36 | if (!Files.exists(output.getParent())) { 37 | Files.createDirectories(output.getParent()); 38 | } 39 | 40 | for (VirtualMachineDescriptor descriptor : VirtualMachine.list()) { 41 | if (JVMDescriptorAnalyzer.isCurrentJVM(descriptor)) { 42 | continue; 43 | } 44 | 45 | JVMCommandExecutor executor; 46 | try { 47 | executor = JVMCommandExecutor.of(descriptor, retryTime); 48 | } catch (IOException e) { 49 | Logging.getLogger().log(Level.WARNING, String.format("Cannot attach VM %s.", descriptor.id()), e); 50 | continue; 51 | } 52 | 53 | try { 54 | if (!JVMDescriptorAnalyzer.isMinecraftJVM(executor)) { 55 | continue; 56 | } 57 | 58 | Logging.getLogger().log(Level.INFO, String.format("Find Minecraft VM with id %s.", executor.virtualMachine.id())); 59 | 60 | try (Writer writer = Files.newBufferedWriter(output)) { 61 | GameDumpCreator.of(dumpTime).writeDumpTo(executor, writer); 62 | } 63 | } finally { 64 | executor.close(); 65 | } 66 | 67 | openOutputFile(output); 68 | 69 | return; 70 | } 71 | 72 | Logging.getLogger().log(Level.INFO, "No Minecraft VM detected."); 73 | throw new AttachNotSupportedException("No Minecraft VM detected"); 74 | } 75 | 76 | private static void openOutputFile(Path output) throws IOException { 77 | String systemInfo = System.getProperty("os.name"); 78 | if (systemInfo == null) { 79 | throw new UnsupportedOperationException(String.format("Cannot get system info because System.getProperty(\"os.name\") is null. Please manually open file at %s.", output.toString())); 80 | } 81 | 82 | 83 | new ProcessBuilder( 84 | systemInfo.toLowerCase().startsWith("windows") ? 85 | new String[]{"C:\\Windows\\explorer.exe", "/select,", output.toString()} : 86 | new String[]{"/usr/bin/open", "-R", output.toString()} 87 | ).inheritIO().start(); 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /src/main/java/net/burningtnt/tdparser/ThreadDumpAnalyzer.java: -------------------------------------------------------------------------------- 1 | package net.burningtnt.tdparser; 2 | 3 | import net.burningtnt.tdparser.infos.*; 4 | import net.burningtnt.tdparser.results.IThreadDumpAnalyzedResult; 5 | import net.burningtnt.tdparser.results.InvalidThreadDumpException; 6 | import net.burningtnt.tdparser.results.ThreadDumpReport; 7 | import net.burningtnt.tdparser.infos.stacktrace.*; 8 | 9 | import java.text.ParseException; 10 | import java.text.SimpleDateFormat; 11 | import java.util.*; 12 | import java.util.regex.Matcher; 13 | import java.util.regex.Pattern; 14 | import java.util.stream.Collectors; 15 | 16 | public final class ThreadDumpAnalyzer { 17 | private ThreadDumpAnalyzer() { 18 | } 19 | 20 | public static ThreadDumpReport analyze(CharSequence report) throws InvalidThreadDumpException { 21 | List> strings = processDump(report); 22 | 23 | if (strings.size() < 3) { 24 | throw new InvalidThreadDumpException("Cannot analyze the specific thread dump because the given text didn't contain enough data."); 25 | } 26 | 27 | DumpInfo dumpInfo = analyzeDumpInfo(strings.get(0)); 28 | SMRInfo smrInfo = analyzeSMRInfo(strings.get(1)); 29 | List threadInfos = new ArrayList<>(smrInfo.length()); 30 | for (int i = 2; i < strings.size() - 1; i++) { 31 | threadInfos.add(analyzeThreadInfo(strings.get(i))); 32 | } 33 | 34 | JNIRefInfo refInfo = analyzeJNIRefInfo(strings.get(strings.size() - 1)); 35 | return verifyResult(new ThreadDumpReport(dumpInfo, smrInfo, threadInfos, refInfo)); 36 | } 37 | 38 | public static IThreadDumpAnalyzedResult safeAnalyze(CharSequence report) { 39 | try { 40 | return analyze(report); 41 | } catch (InvalidThreadDumpException e) { 42 | return e; 43 | } 44 | } 45 | 46 | private static List> processDump(CharSequence report) { 47 | List> groups = new ArrayList<>(); 48 | 49 | List currentGroup = new ArrayList<>(); 50 | StringBuilder currentLine = new StringBuilder(); 51 | for (int i = 0; i < report.length(); i++) { 52 | char c = report.charAt(i); 53 | if (c == '\n') { 54 | if (currentLine.isEmpty()) { 55 | if (!currentGroup.isEmpty()) { 56 | groups.add(currentGroup); 57 | currentGroup = new ArrayList<>(); 58 | } 59 | } else { 60 | currentGroup.add(currentLine.toString()); 61 | } 62 | currentLine.setLength(0); 63 | } else { 64 | currentLine.append(c); 65 | } 66 | } 67 | 68 | return Collections.unmodifiableList(groups); 69 | } 70 | 71 | private static final SimpleDateFormat TIME_STAMP_LINE_PATTERN = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 72 | 73 | private static DumpInfo analyzeDumpInfo(List headGroup) throws InvalidThreadDumpException { 74 | if (headGroup.size() != 2) { 75 | throw new InvalidThreadDumpException("Cannot analyze the specific thread dump because the head group is invalid."); 76 | } 77 | String timeStampLine = headGroup.get(0); 78 | String vmInfoLine = headGroup.get(1); 79 | 80 | Date date; 81 | try { 82 | date = TIME_STAMP_LINE_PATTERN.parse(timeStampLine); 83 | } catch (ParseException e) { 84 | throw new InvalidThreadDumpException("Cannot analyze the specific thread dump because the time stamp is invalid.", e); 85 | } 86 | 87 | if (!vmInfoLine.startsWith("Full thread dump ") || !vmInfoLine.endsWith(":")) { 88 | throw new InvalidThreadDumpException("Cannot analyze the specific thread dump because the VM name is invalid."); 89 | } 90 | String vmInfo = vmInfoLine.substring("Full thread dump ".length(), vmInfoLine.length() - 1); 91 | 92 | return new DumpInfo(date, vmInfo); 93 | } 94 | 95 | private static final Pattern SMR_PATTERN = Pattern.compile("^_java_thread_list=0x([\\da-f]{16}), length=(\\d+), elements=\\{$"); 96 | 97 | private static final Pattern SMR_LINE_PATTERN = Pattern.compile("^0x([\\da-f]{16})(?:, 0x([\\da-f]{16})(?:, 0x([\\da-f]{16})(?:, 0x([\\da-f]{16}))?)?)?(,?)$"); 98 | 99 | private static SMRInfo analyzeSMRInfo(List smr) throws InvalidThreadDumpException { 100 | if (smr.size() < 3) { 101 | throw new InvalidThreadDumpException("Cannot analyze the specific thread dump because the SMR info is invalid."); 102 | } 103 | if (!smr.get(0).equals("Threads class SMR info:")) { 104 | throw new InvalidThreadDumpException("Cannot analyze the specific thread dump because the SMR info is invalid."); 105 | } 106 | if (!smr.get(smr.size() - 1).equals("}")) { 107 | throw new InvalidThreadDumpException("Cannot analyze the specific thread dump because the SMR info is invalid."); 108 | } 109 | Matcher matcher = SMR_PATTERN.matcher(smr.get(1)); 110 | if (!matcher.find()) { 111 | throw new InvalidThreadDumpException("Cannot analyze the specific thread dump because the SMR info is invalid."); 112 | } 113 | long threadList = Long.parseLong(matcher.group(1), 16); 114 | int threadLength = Integer.parseInt(matcher.group(2), 10); 115 | Set elements = new HashSet<>(threadLength); 116 | for (int i = 0; i < threadLength / 4; i++) { 117 | Matcher lineMatcher = SMR_LINE_PATTERN.matcher(smr.get(i + 2)); 118 | if (!lineMatcher.find()) { 119 | throw new InvalidThreadDumpException("Cannot analyze the specific thread dump because the SMR info is invalid."); 120 | } 121 | for (int j = 1; j < 5; j++) { 122 | String value = lineMatcher.group(j); 123 | if (value == null) { 124 | throw new InvalidThreadDumpException("Cannot analyze the specific thread dump because the SMR info is invalid."); 125 | } 126 | elements.add(Long.parseLong(value, 16)); 127 | } 128 | if (!",".equals(lineMatcher.group(5))) { 129 | throw new InvalidThreadDumpException("Cannot analyze the specific thread dump because the SMR info is invalid."); 130 | } 131 | } 132 | int rest = threadLength % 4; 133 | if (rest != 0) { 134 | Matcher lineMatcher = SMR_LINE_PATTERN.matcher(smr.get(smr.size() - 2)); 135 | if (!lineMatcher.find()) { 136 | throw new InvalidThreadDumpException("Cannot analyze the specific thread dump because the SMR info is invalid."); 137 | } 138 | for (int i = 1; i < rest + 1; i++) { 139 | String value = lineMatcher.group(i); 140 | if (value == null) { 141 | throw new InvalidThreadDumpException("Cannot analyze the specific thread dump because the SMR info is invalid."); 142 | } 143 | elements.add(Long.parseLong(value, 16)); 144 | } 145 | if (",".equals(lineMatcher.group(5))) { 146 | throw new InvalidThreadDumpException("Cannot analyze the specific thread dump because the SMR info is invalid."); 147 | } 148 | } 149 | return new SMRInfo(threadList, threadLength, elements); 150 | } 151 | 152 | private static final Pattern THREAD_INFO_HEAD_PATTERN = Pattern.compile("\"([^\"]*)\" (?:#(\\d+) )?(daemon )?(?:prio=(\\d+) )?os_prio=(-?\\d+) cpu=(\\d+\\.\\d+)ms elapsed=(\\d+\\.\\d+)s tid=0x([\\da-f]{16}) nid=0x([\\da-f]{0,4}) (?:runnable|waiting on condition|in Object\\.wait\\(\\)) {2}(?:\\[0x([\\da-f]{16})])?"); 153 | 154 | private static final Pattern THREAD_STATE_PATTERN = Pattern.compile("^ {3}java\\.lang\\.Thread\\.State: (RUNNABLE|WAITING \\(on object monitor\\)|TIMED_WAITING \\(on object monitor\\)|WAITING \\(parking\\)|TIMED_WAITING \\(parking\\))$"); 155 | 156 | private static final Pattern THREAD_STACK_PATTERN = Pattern.compile("\\t(?:at ((?:[^.\\n]+\\.)*[^.\\n]+)\\(([^)\\n\\r]*)\\)|- waiting on <([^>\\n]*)>|- locked <0x([\\da-f]{16})> \\((.*)\\)|- parking to wait for {2}<0x([\\da-f]{16})> \\((.*)\\))"); 157 | 158 | private static ThreadInfo analyzeThreadInfo(List threadinfos) throws InvalidThreadDumpException { 159 | if (threadinfos.size() == 0) { 160 | throw new InvalidThreadDumpException("Cannot analyze the specific thread dump because the thread info is invalid."); 161 | } 162 | Matcher infoMatcher = THREAD_INFO_HEAD_PATTERN.matcher(threadinfos.get(0)); 163 | if (!infoMatcher.find()) { 164 | throw new InvalidThreadDumpException("Cannot analyze the specific thread dump because the thread info is invalid."); 165 | } 166 | String threadName = infoMatcher.group(1); 167 | Long mainID = Optional.ofNullable(infoMatcher.group(2)).map(Long::parseLong).orElse(null); 168 | boolean isDaemon = "daemon ".equals(infoMatcher.group(3)); 169 | Integer priority = Optional.ofNullable(infoMatcher.group(4)).map(Integer::parseInt).orElse(null); 170 | int osPriority = Integer.parseInt(infoMatcher.group(5)); 171 | double cpu = Double.parseDouble(infoMatcher.group(6)); 172 | double elapsed = Double.parseDouble(infoMatcher.group(7)); 173 | long tid = Long.parseLong(infoMatcher.group(8), 16); 174 | Short nid = Optional.ofNullable(infoMatcher.group(9)).map(s -> Short.parseShort(s, 16)).orElse(null); 175 | Long threadID = Optional.ofNullable(infoMatcher.group(10)).map(s -> Long.parseLong(s, 16)).orElse(null); 176 | 177 | ThreadStateInfo stateInfo; 178 | if (threadinfos.size() == 1) { 179 | stateInfo = ThreadStateInfo.UNKNOWN_NATIVE; 180 | } else { 181 | Matcher stateMatcher = THREAD_STATE_PATTERN.matcher(threadinfos.get(1)); 182 | if (!stateMatcher.find()) { 183 | throw new InvalidThreadDumpException("Cannot analyze the specific thread dump because the thread state is invalid."); 184 | } 185 | stateInfo = ThreadStateInfo.getStates().get(stateMatcher.group(1)); 186 | if (stateInfo == null) { 187 | throw new InvalidThreadDumpException("Cannot analyze the specific thread dump because the thread state is invalid."); 188 | } 189 | } 190 | 191 | List stackTraceElements; 192 | if (threadID == null || threadID == 0L) { 193 | stackTraceElements = null; 194 | } else { 195 | stackTraceElements = new ArrayList<>(threadinfos.size() - 2); 196 | for (int i = 2; i < threadinfos.size(); i++) { 197 | Matcher stackMatcher = THREAD_STACK_PATTERN.matcher(threadinfos.get(i)); 198 | if (!stackMatcher.find()) { 199 | throw new InvalidThreadDumpException("Cannot analyze the specific thread dump because the thread trace stack is invalid."); 200 | } 201 | if (stackMatcher.group(1) != null) { 202 | stackTraceElements.add(new FunctionStackTraceElement(List.of(stackMatcher.group(1).split("\\.")), stackMatcher.group(2))); 203 | } else if (stackMatcher.group(3) != null) { 204 | stackTraceElements.add(new WaitingStackTraceElement(stackMatcher.group(3))); 205 | } else if (stackMatcher.group(4) != null) { 206 | stackTraceElements.add(new LockedStackTraceElement(Long.parseLong(stackMatcher.group(4), 16), stackMatcher.group(5))); 207 | } else if (stackMatcher.group(6) != null) { 208 | stackTraceElements.add(new ParkingStackTraceElement(Long.parseLong(stackMatcher.group(6), 16), stackMatcher.group(7))); 209 | } else { 210 | throw new InvalidThreadDumpException("Cannot analyze the specific thread dump because the thread trace stack is invalid."); 211 | } 212 | } 213 | } 214 | 215 | return new ThreadInfo(threadName, mainID, isDaemon, priority, osPriority, cpu, elapsed, tid, nid, threadID, stateInfo, stackTraceElements); 216 | } 217 | 218 | 219 | private static final Pattern JNI_REF_PATTERN = Pattern.compile("^JNI global refs: (\\d+), weak refs: (\\d+)$"); 220 | 221 | private static JNIRefInfo analyzeJNIRefInfo(List ref) throws InvalidThreadDumpException { 222 | if (ref.size() != 1) { 223 | throw new InvalidThreadDumpException("Cannot analyze the specific thread dump because the JNI ref info is invalid."); 224 | } 225 | Matcher matcher = JNI_REF_PATTERN.matcher(ref.get(0)); 226 | if (!matcher.find()) { 227 | throw new InvalidThreadDumpException("Cannot analyze the specific thread dump because the JNI ref info is invalid."); 228 | } 229 | int globalRefs = Integer.parseInt(matcher.group(1), 10); 230 | int weakRefs = Integer.parseInt(matcher.group(2), 10); 231 | return new JNIRefInfo(globalRefs, weakRefs); 232 | } 233 | 234 | private static ThreadDumpReport verifyResult(ThreadDumpReport result) throws InvalidThreadDumpException { 235 | Set threadIDs = result.threadInfos().stream().mapToLong(ThreadInfo::tid).filter(l -> l != 0L).boxed().collect(Collectors.toSet()); 236 | for (Long value : result.smrInfo().elements()) { 237 | if (value == null || value.doubleValue() == 0L) { 238 | continue; 239 | } 240 | 241 | if (!threadIDs.contains(value)) { 242 | throw new InvalidThreadDumpException(String.format("Cannot analyze the specific thread dump because the threadID '0x%s' which is specified in SMR info didn't exist.", HexFormat.of().toHexDigits(value))); 243 | } 244 | } 245 | 246 | return result; 247 | } 248 | } 249 | -------------------------------------------------------------------------------- /src/main/java/net/burningtnt/tdparser/infos/DumpInfo.java: -------------------------------------------------------------------------------- 1 | package net.burningtnt.tdparser.infos; 2 | 3 | import java.util.Date; 4 | 5 | public record DumpInfo(Date date, String vmInfo) { 6 | } 7 | -------------------------------------------------------------------------------- /src/main/java/net/burningtnt/tdparser/infos/JNIRefInfo.java: -------------------------------------------------------------------------------- 1 | package net.burningtnt.tdparser.infos; 2 | 3 | public record JNIRefInfo(long globalRefs, long weakRefs) { 4 | } 5 | -------------------------------------------------------------------------------- /src/main/java/net/burningtnt/tdparser/infos/SMRInfo.java: -------------------------------------------------------------------------------- 1 | package net.burningtnt.tdparser.infos; 2 | 3 | import java.util.Collections; 4 | import java.util.Set; 5 | 6 | public record SMRInfo(long threadList, int length, Set elements) { 7 | public SMRInfo(long threadList, int length, Set elements) { 8 | this.threadList = threadList; 9 | this.length = length; 10 | this.elements = Collections.unmodifiableSet(elements); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/net/burningtnt/tdparser/infos/ThreadInfo.java: -------------------------------------------------------------------------------- 1 | package net.burningtnt.tdparser.infos; 2 | 3 | import net.burningtnt.tdparser.infos.stacktrace.AbstractStackTraceElement; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | import java.util.Collections; 7 | import java.util.List; 8 | 9 | public record ThreadInfo(String threadName, @Nullable Long mainID, boolean isDaemon, @Nullable Integer priority, 10 | int osPriority, double cpu, double elapsed, long tid, @Nullable Short nid, 11 | @Nullable Long threadID, ThreadStateInfo state, 12 | @Nullable List stackTraceElements) { 13 | public ThreadInfo(String threadName, @Nullable Long mainID, boolean isDaemon, Integer priority, int osPriority, double cpu, double elapsed, long tid, @Nullable Short nid, @Nullable Long threadID, ThreadStateInfo state, @Nullable List stackTraceElements) { 14 | this.threadName = threadName; 15 | this.mainID = mainID; 16 | this.isDaemon = isDaemon; 17 | this.priority = priority; 18 | this.osPriority = osPriority; 19 | this.cpu = cpu; 20 | this.elapsed = elapsed; 21 | this.tid = tid; 22 | this.nid = nid; 23 | this.threadID = threadID; 24 | this.state = state; 25 | this.stackTraceElements = stackTraceElements == null ? null : Collections.unmodifiableList(stackTraceElements); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/net/burningtnt/tdparser/infos/ThreadStateInfo.java: -------------------------------------------------------------------------------- 1 | package net.burningtnt.tdparser.infos; 2 | 3 | import java.util.Map; 4 | 5 | public enum ThreadStateInfo { 6 | RUNNABLE, WAITING_ON_OBJECT_MONITOR, TIME_WAITING_ON_OBJECT_MONITOR, WAITING_PARKING, TIMED_WAITING_PARKING, UNKNOWN_NATIVE; 7 | 8 | private static final Map states = Map.of( 9 | "RUNNABLE", RUNNABLE, 10 | "WAITING (on object monitor)", WAITING_ON_OBJECT_MONITOR, 11 | "TIMED_WAITING (on object monitor)", TIME_WAITING_ON_OBJECT_MONITOR, 12 | "WAITING (parking)", WAITING_PARKING, 13 | "TIMED_WAITING (parking)", TIMED_WAITING_PARKING 14 | ); 15 | 16 | public static Map getStates() { 17 | return states; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/net/burningtnt/tdparser/infos/stacktrace/AbstractStackTraceElement.java: -------------------------------------------------------------------------------- 1 | package net.burningtnt.tdparser.infos.stacktrace; 2 | 3 | public abstract class AbstractStackTraceElement { 4 | } 5 | -------------------------------------------------------------------------------- /src/main/java/net/burningtnt/tdparser/infos/stacktrace/FunctionStackTraceElement.java: -------------------------------------------------------------------------------- 1 | package net.burningtnt.tdparser.infos.stacktrace; 2 | 3 | import java.util.List; 4 | 5 | public final class FunctionStackTraceElement extends AbstractStackTraceElement { 6 | private final List path; 7 | 8 | private final String source; 9 | 10 | public FunctionStackTraceElement(List path, String source) { 11 | this.path = path; 12 | this.source = source; 13 | } 14 | 15 | public List getPath() { 16 | return this.path; 17 | } 18 | 19 | public String getSource() { 20 | return this.source; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/net/burningtnt/tdparser/infos/stacktrace/LockedStackTraceElement.java: -------------------------------------------------------------------------------- 1 | package net.burningtnt.tdparser.infos.stacktrace; 2 | 3 | public class LockedStackTraceElement extends AbstractStackTraceElement { 4 | private final long position; 5 | 6 | private final String source; 7 | 8 | public LockedStackTraceElement(long position, String source) { 9 | this.position = position; 10 | this.source = source; 11 | } 12 | 13 | public long getPosition() { 14 | return this.position; 15 | } 16 | 17 | public String getSource() { 18 | return this.source; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/net/burningtnt/tdparser/infos/stacktrace/ParkingStackTraceElement.java: -------------------------------------------------------------------------------- 1 | package net.burningtnt.tdparser.infos.stacktrace; 2 | 3 | public final class ParkingStackTraceElement extends AbstractStackTraceElement { 4 | private final long position; 5 | 6 | private final String source; 7 | 8 | public ParkingStackTraceElement(long position, String source) { 9 | this.position = position; 10 | this.source = source; 11 | } 12 | 13 | public long getPosition() { 14 | return this.position; 15 | } 16 | 17 | public String getSource() { 18 | return this.source; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/net/burningtnt/tdparser/infos/stacktrace/WaitingStackTraceElement.java: -------------------------------------------------------------------------------- 1 | package net.burningtnt.tdparser.infos.stacktrace; 2 | 3 | public class WaitingStackTraceElement extends AbstractStackTraceElement { 4 | private final String target; 5 | 6 | public WaitingStackTraceElement(String target) { 7 | this.target = target; 8 | } 9 | 10 | public String getTarget() { 11 | return this.target; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/net/burningtnt/tdparser/results/IThreadDumpAnalyzedResult.java: -------------------------------------------------------------------------------- 1 | package net.burningtnt.tdparser.results; 2 | 3 | import org.jetbrains.annotations.Nullable; 4 | 5 | public interface IThreadDumpAnalyzedResult { 6 | boolean success(); 7 | 8 | @Nullable 9 | ThreadDumpReport getResult(); 10 | 11 | @Nullable 12 | InvalidThreadDumpException getException(); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/net/burningtnt/tdparser/results/InvalidThreadDumpException.java: -------------------------------------------------------------------------------- 1 | package net.burningtnt.tdparser.results; 2 | 3 | import org.jetbrains.annotations.Nullable; 4 | 5 | public class InvalidThreadDumpException extends Exception implements IThreadDumpAnalyzedResult { 6 | public InvalidThreadDumpException() { 7 | super(); 8 | } 9 | 10 | public InvalidThreadDumpException(String message) { 11 | super(message); 12 | } 13 | 14 | public InvalidThreadDumpException(String message, Throwable cause) { 15 | super(message, cause); 16 | } 17 | 18 | public InvalidThreadDumpException(Throwable cause) { 19 | super(cause); 20 | } 21 | 22 | @Override 23 | public boolean success() { 24 | return false; 25 | } 26 | 27 | @Override 28 | @Nullable 29 | public ThreadDumpReport getResult() { 30 | return null; 31 | } 32 | 33 | @Override 34 | @Nullable 35 | public InvalidThreadDumpException getException() { 36 | return this; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/net/burningtnt/tdparser/results/ThreadDumpReport.java: -------------------------------------------------------------------------------- 1 | package net.burningtnt.tdparser.results; 2 | 3 | import net.burningtnt.tdparser.infos.JNIRefInfo; 4 | import net.burningtnt.tdparser.infos.SMRInfo; 5 | import net.burningtnt.tdparser.infos.ThreadInfo; 6 | import net.burningtnt.tdparser.infos.DumpInfo; 7 | import org.jetbrains.annotations.NotNull; 8 | import org.jetbrains.annotations.Nullable; 9 | 10 | import java.util.*; 11 | 12 | public final class ThreadDumpReport implements IThreadDumpAnalyzedResult { 13 | private final DumpInfo dumpInfo; 14 | private final SMRInfo smrInfo; 15 | private final List threadInfos; 16 | private final JNIRefInfo refInfo; 17 | private final Map nameLookup; 18 | private final Map tidLookup; 19 | 20 | public ThreadDumpReport(DumpInfo dumpInfo, SMRInfo smrInfo, List threadInfos, JNIRefInfo refInfo) { 21 | this.dumpInfo = dumpInfo; 22 | this.smrInfo = smrInfo; 23 | this.threadInfos = Collections.unmodifiableList(threadInfos); 24 | this.refInfo = refInfo; 25 | 26 | Map nameLookup = new HashMap<>(); 27 | Map tidLookup = new HashMap<>(); 28 | for (ThreadInfo ti : threadInfos) { 29 | nameLookup.putIfAbsent(ti.threadName(), ti); 30 | tidLookup.putIfAbsent(ti.tid(), ti); 31 | } 32 | this.nameLookup = nameLookup; 33 | this.tidLookup = tidLookup; 34 | } 35 | 36 | @Override 37 | public boolean success() { 38 | return true; 39 | } 40 | 41 | @Override 42 | @NotNull 43 | public ThreadDumpReport getResult() { 44 | return this; 45 | } 46 | 47 | @Override 48 | @Nullable 49 | public InvalidThreadDumpException getException() { 50 | return null; 51 | } 52 | 53 | public ThreadInfo lookupThread(String name) { 54 | return this.nameLookup.get(name); 55 | } 56 | 57 | public ThreadInfo lookupThread(long tid) { 58 | return this.tidLookup.get(tid); 59 | } 60 | 61 | public DumpInfo dumpInfo() { 62 | return dumpInfo; 63 | } 64 | 65 | public SMRInfo smrInfo() { 66 | return smrInfo; 67 | } 68 | 69 | public List threadInfos() { 70 | return threadInfos; 71 | } 72 | 73 | public JNIRefInfo refInfo() { 74 | return refInfo; 75 | } 76 | 77 | @Override 78 | public boolean equals(Object obj) { 79 | if (obj == this) return true; 80 | if (obj == null || obj.getClass() != this.getClass()) return false; 81 | var that = (ThreadDumpReport) obj; 82 | return Objects.equals(this.dumpInfo, that.dumpInfo) && 83 | Objects.equals(this.smrInfo, that.smrInfo) && 84 | Objects.equals(this.threadInfos, that.threadInfos) && 85 | Objects.equals(this.refInfo, that.refInfo); 86 | } 87 | 88 | @Override 89 | public int hashCode() { 90 | return Objects.hash(dumpInfo, smrInfo, threadInfos, refInfo); 91 | } 92 | 93 | @Override 94 | public String toString() { 95 | return "ThreadDumpReport[" + 96 | "dumpInfo=" + dumpInfo + ", " + 97 | "smrInfo=" + smrInfo + ", " + 98 | "threadInfos=" + threadInfos + ", " + 99 | "refInfo=" + refInfo + ']'; 100 | } 101 | 102 | } 103 | --------------------------------------------------------------------------------