mirror of
				https://github.com/GayPizzaSpecifications/drywall.git
				synced 2025-11-03 15:59:38 +00:00 
			
		
		
		
	welcome to the world of javasound
This commit is contained in:
		
							
								
								
									
										42
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,42 @@
 | 
				
			|||||||
 | 
					.gradle
 | 
				
			||||||
 | 
					build/
 | 
				
			||||||
 | 
					!gradle/wrapper/gradle-wrapper.jar
 | 
				
			||||||
 | 
					!**/src/main/**/build/
 | 
				
			||||||
 | 
					!**/src/test/**/build/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### IntelliJ IDEA ###
 | 
				
			||||||
 | 
					.idea/modules.xml
 | 
				
			||||||
 | 
					.idea/jarRepositories.xml
 | 
				
			||||||
 | 
					.idea/compiler.xml
 | 
				
			||||||
 | 
					.idea/libraries/
 | 
				
			||||||
 | 
					*.iws
 | 
				
			||||||
 | 
					*.iml
 | 
				
			||||||
 | 
					*.ipr
 | 
				
			||||||
 | 
					out/
 | 
				
			||||||
 | 
					!**/src/main/**/out/
 | 
				
			||||||
 | 
					!**/src/test/**/out/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Eclipse ###
 | 
				
			||||||
 | 
					.apt_generated
 | 
				
			||||||
 | 
					.classpath
 | 
				
			||||||
 | 
					.factorypath
 | 
				
			||||||
 | 
					.project
 | 
				
			||||||
 | 
					.settings
 | 
				
			||||||
 | 
					.springBeans
 | 
				
			||||||
 | 
					.sts4-cache
 | 
				
			||||||
 | 
					bin/
 | 
				
			||||||
 | 
					!**/src/main/**/bin/
 | 
				
			||||||
 | 
					!**/src/test/**/bin/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### NetBeans ###
 | 
				
			||||||
 | 
					/nbproject/private/
 | 
				
			||||||
 | 
					/nbbuild/
 | 
				
			||||||
 | 
					/dist/
 | 
				
			||||||
 | 
					/nbdist/
 | 
				
			||||||
 | 
					/.nb-gradle/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### VS Code ###
 | 
				
			||||||
 | 
					.vscode/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Mac OS ###
 | 
				
			||||||
 | 
					.DS_Store
 | 
				
			||||||
							
								
								
									
										39
									
								
								build.gradle.kts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								build.gradle.kts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,39 @@
 | 
				
			|||||||
 | 
					plugins {
 | 
				
			||||||
 | 
						`kotlin-dsl`
 | 
				
			||||||
 | 
						kotlin("plugin.serialization") version "1.5.31"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					group = "gay.pizza.foundation"
 | 
				
			||||||
 | 
					version = "0.1.0-SNAPSHOT"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					repositories {
 | 
				
			||||||
 | 
						gradlePluginPortal()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					dependencies {
 | 
				
			||||||
 | 
						implementation("org.jetbrains.kotlinx", "kotlinx-serialization-json", "1.3.3")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						testImplementation(kotlin("test"))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tasks.test {
 | 
				
			||||||
 | 
						useJUnitPlatform()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					java {
 | 
				
			||||||
 | 
						sourceCompatibility = JavaVersion.VERSION_1_8
 | 
				
			||||||
 | 
						targetCompatibility = JavaVersion.VERSION_1_8
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tasks.compileKotlin {
 | 
				
			||||||
 | 
						kotlinOptions.jvmTarget = "1.8"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					gradlePlugin {
 | 
				
			||||||
 | 
						plugins {
 | 
				
			||||||
 | 
							create(name) {
 | 
				
			||||||
 | 
								id = "${group}.${name}"
 | 
				
			||||||
 | 
								implementationClass = "${id}.ResourcesGeneratorPlugin"
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										0
									
								
								gradle.properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								gradle.properties
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										
											BIN
										
									
								
								gradle/wrapper/gradle-wrapper.jar
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								gradle/wrapper/gradle-wrapper.jar
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										5
									
								
								gradle/wrapper/gradle-wrapper.properties
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								gradle/wrapper/gradle-wrapper.properties
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					distributionBase=GRADLE_USER_HOME
 | 
				
			||||||
 | 
					distributionPath=wrapper/dists
 | 
				
			||||||
 | 
					distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
 | 
				
			||||||
 | 
					zipStoreBase=GRADLE_USER_HOME
 | 
				
			||||||
 | 
					zipStorePath=wrapper/dists
 | 
				
			||||||
							
								
								
									
										234
									
								
								gradlew
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										234
									
								
								gradlew
									
									
									
									
										vendored
									
									
										Executable file
									
								
							@ -0,0 +1,234 @@
 | 
				
			|||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Copyright © 2015-2021 the original authors.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					# you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					# You may obtain a copy of the License at
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#      https://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					# distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					# See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					# limitations under the License.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					##############################################################################
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#   Gradle start up script for POSIX generated by Gradle.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#   Important for running:
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#   (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
 | 
				
			||||||
 | 
					#       noncompliant, but you have some other compliant shell such as ksh or
 | 
				
			||||||
 | 
					#       bash, then to run this script, type that shell name before the whole
 | 
				
			||||||
 | 
					#       command line, like:
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#           ksh Gradle
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#       Busybox and similar reduced shells will NOT work, because this script
 | 
				
			||||||
 | 
					#       requires all of these POSIX shell features:
 | 
				
			||||||
 | 
					#         * functions;
 | 
				
			||||||
 | 
					#         * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
 | 
				
			||||||
 | 
					#           «${var#prefix}», «${var%suffix}», and «$( cmd )»;
 | 
				
			||||||
 | 
					#         * compound commands having a testable exit status, especially «case»;
 | 
				
			||||||
 | 
					#         * various built-in commands including «command», «set», and «ulimit».
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#   Important for patching:
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#   (2) This script targets any POSIX shell, so it avoids extensions provided
 | 
				
			||||||
 | 
					#       by Bash, Ksh, etc; in particular arrays are avoided.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#       The "traditional" practice of packing multiple parameters into a
 | 
				
			||||||
 | 
					#       space-separated string is a well documented source of bugs and security
 | 
				
			||||||
 | 
					#       problems, so this is (mostly) avoided, by progressively accumulating
 | 
				
			||||||
 | 
					#       options in "$@", and eventually passing that to Java.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#       Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
 | 
				
			||||||
 | 
					#       and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
 | 
				
			||||||
 | 
					#       see the in-line comments for details.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#       There are tweaks for specific operating systems such as AIX, CygWin,
 | 
				
			||||||
 | 
					#       Darwin, MinGW, and NonStop.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#   (3) This script is generated from the Groovy template
 | 
				
			||||||
 | 
					#       https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
 | 
				
			||||||
 | 
					#       within the Gradle project.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#       You can find Gradle at https://github.com/gradle/gradle/.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					##############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Attempt to set APP_HOME
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Resolve links: $0 may be a link
 | 
				
			||||||
 | 
					app_path=$0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Need this for daisy-chained symlinks.
 | 
				
			||||||
 | 
					while
 | 
				
			||||||
 | 
					    APP_HOME=${app_path%"${app_path##*/}"}  # leaves a trailing /; empty if no leading path
 | 
				
			||||||
 | 
					    [ -h "$app_path" ]
 | 
				
			||||||
 | 
					do
 | 
				
			||||||
 | 
					    ls=$( ls -ld "$app_path" )
 | 
				
			||||||
 | 
					    link=${ls#*' -> '}
 | 
				
			||||||
 | 
					    case $link in             #(
 | 
				
			||||||
 | 
					      /*)   app_path=$link ;; #(
 | 
				
			||||||
 | 
					      *)    app_path=$APP_HOME$link ;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP_NAME="Gradle"
 | 
				
			||||||
 | 
					APP_BASE_NAME=${0##*/}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
 | 
				
			||||||
 | 
					DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Use the maximum available, or set MAX_FD != -1 to use that value.
 | 
				
			||||||
 | 
					MAX_FD=maximum
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					warn () {
 | 
				
			||||||
 | 
					    echo "$*"
 | 
				
			||||||
 | 
					} >&2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					die () {
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    echo "$*"
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					} >&2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# OS specific support (must be 'true' or 'false').
 | 
				
			||||||
 | 
					cygwin=false
 | 
				
			||||||
 | 
					msys=false
 | 
				
			||||||
 | 
					darwin=false
 | 
				
			||||||
 | 
					nonstop=false
 | 
				
			||||||
 | 
					case "$( uname )" in                #(
 | 
				
			||||||
 | 
					  CYGWIN* )         cygwin=true  ;; #(
 | 
				
			||||||
 | 
					  Darwin* )         darwin=true  ;; #(
 | 
				
			||||||
 | 
					  MSYS* | MINGW* )  msys=true    ;; #(
 | 
				
			||||||
 | 
					  NONSTOP* )        nonstop=true ;;
 | 
				
			||||||
 | 
					esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Determine the Java command to use to start the JVM.
 | 
				
			||||||
 | 
					if [ -n "$JAVA_HOME" ] ; then
 | 
				
			||||||
 | 
					    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
 | 
				
			||||||
 | 
					        # IBM's JDK on AIX uses strange locations for the executables
 | 
				
			||||||
 | 
					        JAVACMD=$JAVA_HOME/jre/sh/java
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        JAVACMD=$JAVA_HOME/bin/java
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    if [ ! -x "$JAVACMD" ] ; then
 | 
				
			||||||
 | 
					        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please set the JAVA_HOME variable in your environment to match the
 | 
				
			||||||
 | 
					location of your Java installation."
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    JAVACMD=java
 | 
				
			||||||
 | 
					    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please set the JAVA_HOME variable in your environment to match the
 | 
				
			||||||
 | 
					location of your Java installation."
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Increase the maximum file descriptors if we can.
 | 
				
			||||||
 | 
					if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
 | 
				
			||||||
 | 
					    case $MAX_FD in #(
 | 
				
			||||||
 | 
					      max*)
 | 
				
			||||||
 | 
					        MAX_FD=$( ulimit -H -n ) ||
 | 
				
			||||||
 | 
					            warn "Could not query maximum file descriptor limit"
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					    case $MAX_FD in  #(
 | 
				
			||||||
 | 
					      '' | soft) :;; #(
 | 
				
			||||||
 | 
					      *)
 | 
				
			||||||
 | 
					        ulimit -n "$MAX_FD" ||
 | 
				
			||||||
 | 
					            warn "Could not set maximum file descriptor limit to $MAX_FD"
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Collect all arguments for the java command, stacking in reverse order:
 | 
				
			||||||
 | 
					#   * args from the command line
 | 
				
			||||||
 | 
					#   * the main class name
 | 
				
			||||||
 | 
					#   * -classpath
 | 
				
			||||||
 | 
					#   * -D...appname settings
 | 
				
			||||||
 | 
					#   * --module-path (only if needed)
 | 
				
			||||||
 | 
					#   * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# For Cygwin or MSYS, switch paths to Windows format before running java
 | 
				
			||||||
 | 
					if "$cygwin" || "$msys" ; then
 | 
				
			||||||
 | 
					    APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
 | 
				
			||||||
 | 
					    CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    JAVACMD=$( cygpath --unix "$JAVACMD" )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Now convert the arguments - kludge to limit ourselves to /bin/sh
 | 
				
			||||||
 | 
					    for arg do
 | 
				
			||||||
 | 
					        if
 | 
				
			||||||
 | 
					            case $arg in                                #(
 | 
				
			||||||
 | 
					              -*)   false ;;                            # don't mess with options #(
 | 
				
			||||||
 | 
					              /?*)  t=${arg#/} t=/${t%%/*}              # looks like a POSIX filepath
 | 
				
			||||||
 | 
					                    [ -e "$t" ] ;;                      #(
 | 
				
			||||||
 | 
					              *)    false ;;
 | 
				
			||||||
 | 
					            esac
 | 
				
			||||||
 | 
					        then
 | 
				
			||||||
 | 
					            arg=$( cygpath --path --ignore --mixed "$arg" )
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					        # Roll the args list around exactly as many times as the number of
 | 
				
			||||||
 | 
					        # args, so each arg winds up back in the position where it started, but
 | 
				
			||||||
 | 
					        # possibly modified.
 | 
				
			||||||
 | 
					        #
 | 
				
			||||||
 | 
					        # NB: a `for` loop captures its iteration list before it begins, so
 | 
				
			||||||
 | 
					        # changing the positional parameters here affects neither the number of
 | 
				
			||||||
 | 
					        # iterations, nor the values presented in `arg`.
 | 
				
			||||||
 | 
					        shift                   # remove old arg
 | 
				
			||||||
 | 
					        set -- "$@" "$arg"      # push replacement arg
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Collect all arguments for the java command;
 | 
				
			||||||
 | 
					#   * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
 | 
				
			||||||
 | 
					#     shell script including quotes and variable substitutions, so put them in
 | 
				
			||||||
 | 
					#     double quotes to make sure that they get re-expanded; and
 | 
				
			||||||
 | 
					#   * put everything else in single quotes, so that it's not re-expanded.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -- \
 | 
				
			||||||
 | 
					        "-Dorg.gradle.appname=$APP_BASE_NAME" \
 | 
				
			||||||
 | 
					        -classpath "$CLASSPATH" \
 | 
				
			||||||
 | 
					        org.gradle.wrapper.GradleWrapperMain \
 | 
				
			||||||
 | 
					        "$@"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Use "xargs" to parse quoted args.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# In Bash we could simply go:
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#   readarray ARGS < <( xargs -n1 <<<"$var" ) &&
 | 
				
			||||||
 | 
					#   set -- "${ARGS[@]}" "$@"
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# but POSIX shell has neither arrays nor command substitution, so instead we
 | 
				
			||||||
 | 
					# post-process each arg (as a line of input to sed) to backslash-escape any
 | 
				
			||||||
 | 
					# character that might be a shell metacharacter, then use eval to reverse
 | 
				
			||||||
 | 
					# that process (while maintaining the separation between arguments), and wrap
 | 
				
			||||||
 | 
					# the whole thing up as a single "set" statement.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This will of course break if any of these variables contains a newline or
 | 
				
			||||||
 | 
					# an unmatched quote.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					eval "set -- $(
 | 
				
			||||||
 | 
					        printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
 | 
				
			||||||
 | 
					        xargs -n1 |
 | 
				
			||||||
 | 
					        sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
 | 
				
			||||||
 | 
					        tr '\n' ' '
 | 
				
			||||||
 | 
					    )" '"$@"'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exec "$JAVACMD" "$@"
 | 
				
			||||||
							
								
								
									
										89
									
								
								gradlew.bat
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								gradlew.bat
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,89 @@
 | 
				
			|||||||
 | 
					@rem
 | 
				
			||||||
 | 
					@rem Copyright 2015 the original author or authors.
 | 
				
			||||||
 | 
					@rem
 | 
				
			||||||
 | 
					@rem Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					@rem you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					@rem You may obtain a copy of the License at
 | 
				
			||||||
 | 
					@rem
 | 
				
			||||||
 | 
					@rem      https://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					@rem
 | 
				
			||||||
 | 
					@rem Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					@rem distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					@rem See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					@rem limitations under the License.
 | 
				
			||||||
 | 
					@rem
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@if "%DEBUG%" == "" @echo off
 | 
				
			||||||
 | 
					@rem ##########################################################################
 | 
				
			||||||
 | 
					@rem
 | 
				
			||||||
 | 
					@rem  Gradle startup script for Windows
 | 
				
			||||||
 | 
					@rem
 | 
				
			||||||
 | 
					@rem ##########################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@rem Set local scope for the variables with windows NT shell
 | 
				
			||||||
 | 
					if "%OS%"=="Windows_NT" setlocal
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set DIRNAME=%~dp0
 | 
				
			||||||
 | 
					if "%DIRNAME%" == "" set DIRNAME=.
 | 
				
			||||||
 | 
					set APP_BASE_NAME=%~n0
 | 
				
			||||||
 | 
					set APP_HOME=%DIRNAME%
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@rem Resolve any "." and ".." in APP_HOME to make it shorter.
 | 
				
			||||||
 | 
					for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
 | 
				
			||||||
 | 
					set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@rem Find java.exe
 | 
				
			||||||
 | 
					if defined JAVA_HOME goto findJavaFromJavaHome
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set JAVA_EXE=java.exe
 | 
				
			||||||
 | 
					%JAVA_EXE% -version >NUL 2>&1
 | 
				
			||||||
 | 
					if "%ERRORLEVEL%" == "0" goto execute
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo.
 | 
				
			||||||
 | 
					echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
 | 
				
			||||||
 | 
					echo.
 | 
				
			||||||
 | 
					echo Please set the JAVA_HOME variable in your environment to match the
 | 
				
			||||||
 | 
					echo location of your Java installation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					goto fail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:findJavaFromJavaHome
 | 
				
			||||||
 | 
					set JAVA_HOME=%JAVA_HOME:"=%
 | 
				
			||||||
 | 
					set JAVA_EXE=%JAVA_HOME%/bin/java.exe
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if exist "%JAVA_EXE%" goto execute
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo.
 | 
				
			||||||
 | 
					echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
 | 
				
			||||||
 | 
					echo.
 | 
				
			||||||
 | 
					echo Please set the JAVA_HOME variable in your environment to match the
 | 
				
			||||||
 | 
					echo location of your Java installation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					goto fail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:execute
 | 
				
			||||||
 | 
					@rem Setup the command line
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@rem Execute Gradle
 | 
				
			||||||
 | 
					"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:end
 | 
				
			||||||
 | 
					@rem End local scope for the variables with windows NT shell
 | 
				
			||||||
 | 
					if "%ERRORLEVEL%"=="0" goto mainEnd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:fail
 | 
				
			||||||
 | 
					rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
 | 
				
			||||||
 | 
					rem the _cmd.exe /c_ return code!
 | 
				
			||||||
 | 
					if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
 | 
				
			||||||
 | 
					exit /b 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:mainEnd
 | 
				
			||||||
 | 
					if "%OS%"=="Windows_NT" endlocal
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:omega
 | 
				
			||||||
							
								
								
									
										3
									
								
								settings.gradle.kts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								settings.gradle.kts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					rootProject.name = "drywall"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										171
									
								
								src/main/kotlin/gay/pizza/foundation/drywall/ResourceWriter.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										171
									
								
								src/main/kotlin/gay/pizza/foundation/drywall/ResourceWriter.kt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,171 @@
 | 
				
			|||||||
 | 
					package gay.pizza.foundation.drywall
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import gay.pizza.foundation.drywall.enums.Lang
 | 
				
			||||||
 | 
					import gay.pizza.foundation.drywall.settings.*
 | 
				
			||||||
 | 
					import gay.pizza.foundation.drywall.util.ResourcePath
 | 
				
			||||||
 | 
					import kotlinx.serialization.ExperimentalSerializationApi
 | 
				
			||||||
 | 
					import kotlinx.serialization.Serializable
 | 
				
			||||||
 | 
					import kotlinx.serialization.json.Json
 | 
				
			||||||
 | 
					import kotlinx.serialization.json.encodeToStream
 | 
				
			||||||
 | 
					import java.io.FileOutputStream
 | 
				
			||||||
 | 
					import java.nio.file.Files
 | 
				
			||||||
 | 
					import java.nio.file.Path
 | 
				
			||||||
 | 
					import kotlin.io.path.Path
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class ResourceWriter(private val modId: String)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						@Serializable
 | 
				
			||||||
 | 
						data class Tag(val replace: Boolean, val values: Collection<String>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private val langs: MutableMap<String, MutableMap<String, String>> = mutableMapOf()
 | 
				
			||||||
 | 
						private val mineables: MutableMap<String, MutableList<String>> = mutableMapOf()
 | 
				
			||||||
 | 
						private val needsTool: MutableMap<String, MutableList<String>> = mutableMapOf()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private val blockStates: MutableMap<String, BlockStateSettings.BlockState> = mutableMapOf()
 | 
				
			||||||
 | 
						private val blockModels: MutableMap<String, ModelSettings.Model> = mutableMapOf()
 | 
				
			||||||
 | 
						private val itemModels: MutableMap<String, ModelSettings.Model> = mutableMapOf()
 | 
				
			||||||
 | 
						private val lootTables: MutableMap<String, LootTableSettings.LootTable> = mutableMapOf()
 | 
				
			||||||
 | 
						private val recipes: MutableMap<String, AbstractRecipeSettings.Recipe> = mutableMapOf()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private var defaultBlockState: BlockStateSettings? = null
 | 
				
			||||||
 | 
						private var defaultBlockModel: ModelSettings? = null
 | 
				
			||||||
 | 
						private var defaultItemModel: ModelSettings? = null
 | 
				
			||||||
 | 
						private var defaultLootTable: LootTableSettings? = null
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private var fabricMod: FabricModSettings.FabricMod? = null
 | 
				
			||||||
 | 
						private val mixins: MutableMap<String, MixinSettings.Mixins> = mutableMapOf()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun defaultItemModel(settings: ModelSettings.() -> Unit)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							defaultItemModel(ModelSettings().apply(settings))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun defaultItemModel(settings: ModelSettings)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this.defaultItemModel = settings
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun defaultLootTable(settings: LootTableSettings.() -> Unit)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							defaultLootTable(LootTableSettings().apply(settings))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun defaultLootTable(settings: LootTableSettings)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this.defaultLootTable = settings
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun defaultBlockState(settings: BlockStateSettings.() -> Unit)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							defaultBlockState(BlockStateSettings().apply(settings))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun defaultBlockState(settings: BlockStateSettings)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this.defaultBlockState = settings
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun text(key: String, string: String, lang: Lang = Lang.US_ENGLISH)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							langs.getOrPut(lang.toString()) { mutableMapOf() }[key] = string
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun itemGroupName(name: String, lang: Lang = Lang.US_ENGLISH)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							text("itemGroup.$modId.$modId", name, lang)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun block(id: String, settings: BlockSettings.() -> Unit)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							block(BlockSettings(id).apply(settings))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun block(settings: BlockSettings)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							val blockId = settings.id
 | 
				
			||||||
 | 
							val jsonName = "${blockId}.json"
 | 
				
			||||||
 | 
							val resPath = ResourcePath.PATH_BLOCK.resolve(modId, blockId)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							settings.displayNames.forEach { text("block.$modId.${blockId}", it.value, it.key) }
 | 
				
			||||||
 | 
							settings.tool?.let { mineables.getOrPut(it) { mutableListOf() }.add(resPath) }
 | 
				
			||||||
 | 
							settings.level?.let { needsTool.getOrPut("needs_${it}_tool") { mutableListOf() }.add(resPath) }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							(settings.blockState ?: defaultBlockState)?.let { blockStates[jsonName] = it.serialisable(modId, blockId) }
 | 
				
			||||||
 | 
							(settings.model ?: defaultBlockModel)?.let { blockModels[jsonName] = it.serialisable(modId, blockId) }
 | 
				
			||||||
 | 
							(settings.itemModel ?: defaultItemModel)?.let { itemModels[jsonName] = it.serialisable(modId, blockId) }
 | 
				
			||||||
 | 
							(settings.lootTable ?: defaultLootTable)?.let { lootTables[jsonName] = it.serialisable(modId, blockId) }
 | 
				
			||||||
 | 
							settings.recipes.forEachIndexed { idx, it ->
 | 
				
			||||||
 | 
								val recipeName = if (idx > 0)
 | 
				
			||||||
 | 
									"${blockId}_${(idx).toString(16)}.json"
 | 
				
			||||||
 | 
								else jsonName
 | 
				
			||||||
 | 
								recipes[recipeName] = it.serialisable(modId, blockId)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun fabricMod(settings: FabricModSettings.() -> Unit)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							fabricMod(FabricModSettings().apply(settings))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun fabricMod(settings: FabricModSettings)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							fabricMod = settings.serialisable(modId)
 | 
				
			||||||
 | 
							settings.mixins.forEach {
 | 
				
			||||||
 | 
								if (it.value.packagePath != null)
 | 
				
			||||||
 | 
									mixins.put(it.key ?: "$modId.mixins.json", it.value.serialisable())
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun writeAll(dirResources: Path)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							val dirAssets      = dirResources.resolve(Path("assets", modId))
 | 
				
			||||||
 | 
							val dirBlockStates = dirAssets.resolve("blockstates")
 | 
				
			||||||
 | 
							val dirLang        = dirAssets.resolve("lang")
 | 
				
			||||||
 | 
							val dirBlockModel  = dirAssets.resolve(Path("models", "block"))
 | 
				
			||||||
 | 
							val dirItemModel   = dirAssets.resolve(Path("models", "item"))
 | 
				
			||||||
 | 
							var dirModData     = dirResources.resolve(Path("data", modId))
 | 
				
			||||||
 | 
							val dirLootBlocks  = dirModData.resolve(Path("loot_tables", "blocks"))
 | 
				
			||||||
 | 
							var dirRecipes     = dirModData.resolve(Path("recipes"))
 | 
				
			||||||
 | 
							val dirTagBlocks   = dirResources.resolve(Path("data", "minecraft", "tags", "blocks"))
 | 
				
			||||||
 | 
							val dirMcMineable  = dirTagBlocks.resolve("mineable")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							blockStates.forEach { encodeWrite(it.value, dirBlockStates.resolve(it.key)) }
 | 
				
			||||||
 | 
							blockModels.forEach { encodeWrite(it.value, dirBlockModel.resolve(it.key)) }
 | 
				
			||||||
 | 
							itemModels.forEach { encodeWrite(it.value, dirItemModel.resolve(it.key)) }
 | 
				
			||||||
 | 
							lootTables.forEach { encodeWrite(it.value, dirLootBlocks.resolve(it.key)) }
 | 
				
			||||||
 | 
							recipes.forEach { encodeWrite(it.value, dirRecipes.resolve(it.key)) }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							langs.forEach { encodeWrite(it.value, dirLang.resolve("${it.key}.json")) }
 | 
				
			||||||
 | 
							mineables.forEach { encodeWrite(Tag(false, it.value), dirMcMineable.resolve("${it.key}.json")) }
 | 
				
			||||||
 | 
							needsTool.forEach { encodeWrite(Tag(false, it.value), dirTagBlocks.resolve("${it.key}.json")) }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							fabricMod.let { encodeWrite(it, dirResources.resolve("fabric.mod.json")) }
 | 
				
			||||||
 | 
							mixins.forEach { encodeWrite(it.value, dirResources.resolve(it.key)) }
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@OptIn(ExperimentalSerializationApi::class)
 | 
				
			||||||
 | 
						private val json = Json {
 | 
				
			||||||
 | 
							encodeDefaults = true
 | 
				
			||||||
 | 
							explicitNulls = false
 | 
				
			||||||
 | 
							prettyPrint = true
 | 
				
			||||||
 | 
							prettyPrintIndent = "  "
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private fun openFile(filePath: Path): FileOutputStream
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							val dirPath = filePath.parent
 | 
				
			||||||
 | 
							if (!dirPath.toFile().isDirectory)
 | 
				
			||||||
 | 
								Files.createDirectories(dirPath)
 | 
				
			||||||
 | 
							return FileOutputStream(filePath.toFile())
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@OptIn(ExperimentalSerializationApi::class)
 | 
				
			||||||
 | 
						@SuppressWarnings("deprecation")
 | 
				
			||||||
 | 
						private inline fun <reified T> encodeWrite(obj: T, fileName: Path)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							val out = openFile(fileName)
 | 
				
			||||||
 | 
							json.encodeToStream(obj, out)
 | 
				
			||||||
 | 
							out.write('\n'.code)
 | 
				
			||||||
 | 
							out.flush()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					package gay.pizza.foundation.drywall
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.gradle.api.DefaultTask
 | 
				
			||||||
 | 
					import org.gradle.api.tasks.Input
 | 
				
			||||||
 | 
					import org.gradle.api.tasks.InputFile
 | 
				
			||||||
 | 
					import org.gradle.api.tasks.TaskAction
 | 
				
			||||||
 | 
					import java.io.File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					open class ResourcesGenerator : DefaultTask()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						@get:Input
 | 
				
			||||||
 | 
						var modId: String = ""
 | 
				
			||||||
 | 
						@get:Input
 | 
				
			||||||
 | 
						var configuration: ResourceWriter.() -> Unit = {}
 | 
				
			||||||
 | 
						@get:InputFile
 | 
				
			||||||
 | 
						var outputDirectory: File = File("")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@TaskAction
 | 
				
			||||||
 | 
						fun generateResources()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							val writer = ResourceWriter(modId).apply(configuration)
 | 
				
			||||||
 | 
							writer.writeAll(outputDirectory.toPath())
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					package gay.pizza.foundation.drywall
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.gradle.api.Plugin
 | 
				
			||||||
 | 
					import org.gradle.api.Project
 | 
				
			||||||
 | 
					import org.gradle.kotlin.dsl.create
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class ResourcesGeneratorPlugin: Plugin<Project>
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						override fun apply(target: Project)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							val genResources = target.tasks.create<ResourcesGenerator>("genResources")
 | 
				
			||||||
 | 
							target.afterEvaluate {
 | 
				
			||||||
 | 
								project.tasks.getByName("jar").dependsOn(genResources)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										910
									
								
								src/main/kotlin/gay/pizza/foundation/drywall/enums/Blocks.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										910
									
								
								src/main/kotlin/gay/pizza/foundation/drywall/enums/Blocks.kt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,910 @@
 | 
				
			|||||||
 | 
					package gay.pizza.foundation.drywall.enums
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import gay.pizza.foundation.drywall.util.ResourcePath
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum class Blocks(private val id: String)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						ACACIA_BUTTON("acacia_button"),
 | 
				
			||||||
 | 
						ACACIA_DOOR("acacia_door"),
 | 
				
			||||||
 | 
						ACACIA_FENCE("acacia_fence"),
 | 
				
			||||||
 | 
						ACACIA_FENCE_GATE("acacia_fence_gate"),
 | 
				
			||||||
 | 
						ACACIA_LEAVES("acacia_leaves"),
 | 
				
			||||||
 | 
						ACACIA_LOG("acacia_log"),
 | 
				
			||||||
 | 
						ACACIA_PLANKS("acacia_planks"),
 | 
				
			||||||
 | 
						ACACIA_PRESSURE_PLATE("acacia_pressure_plate"),
 | 
				
			||||||
 | 
						ACACIA_SAPLING("acacia_sapling"),
 | 
				
			||||||
 | 
						ACACIA_SIGN("acacia_sign"),
 | 
				
			||||||
 | 
						ACACIA_SLAB("acacia_slab"),
 | 
				
			||||||
 | 
						ACACIA_STAIRS("acacia_stairs"),
 | 
				
			||||||
 | 
						ACACIA_TRAPDOOR("acacia_trapdoor"),
 | 
				
			||||||
 | 
						ACACIA_WALL_SIGN("acacia_wall_sign"),
 | 
				
			||||||
 | 
						ACACIA_WOOD("acacia_wood"),
 | 
				
			||||||
 | 
						ACTIVATOR_RAIL("activator_rail"),
 | 
				
			||||||
 | 
						AIR("air"),
 | 
				
			||||||
 | 
						ALLIUM("allium"),
 | 
				
			||||||
 | 
						AMETHYST_BLOCK("amethyst_block"),
 | 
				
			||||||
 | 
						AMETHYST_CLUSTER("amethyst_cluster"),
 | 
				
			||||||
 | 
						ANCIENT_DEBRIS("ancient_debris"),
 | 
				
			||||||
 | 
						ANDESITE("andesite"),
 | 
				
			||||||
 | 
						ANDESITE_SLAB("andesite_slab"),
 | 
				
			||||||
 | 
						ANDESITE_STAIRS("andesite_stairs"),
 | 
				
			||||||
 | 
						ANDESITE_WALL("andesite_wall"),
 | 
				
			||||||
 | 
						ANVIL("anvil"),
 | 
				
			||||||
 | 
						ATTACHED_MELON_STEM("attached_melon_stem"),
 | 
				
			||||||
 | 
						ATTACHED_PUMPKIN_STEM("attached_pumpkin_stem"),
 | 
				
			||||||
 | 
						AZALEA("azalea"),
 | 
				
			||||||
 | 
						AZALEA_LEAVES("azalea_leaves"),
 | 
				
			||||||
 | 
						AZURE_BLUET("azure_bluet"),
 | 
				
			||||||
 | 
						BAMBOO("bamboo"),
 | 
				
			||||||
 | 
						BAMBOO_SAPLING("bamboo_sapling"),
 | 
				
			||||||
 | 
						BARREL("barrel"),
 | 
				
			||||||
 | 
						BARRIER("barrier"),
 | 
				
			||||||
 | 
						BASALT("basalt"),
 | 
				
			||||||
 | 
						BEACON("beacon"),
 | 
				
			||||||
 | 
						BEDROCK("bedrock"),
 | 
				
			||||||
 | 
						BEE_NEST("bee_nest"),
 | 
				
			||||||
 | 
						BEEHIVE("beehive"),
 | 
				
			||||||
 | 
						BEETROOTS("beetroots"),
 | 
				
			||||||
 | 
						BELL("bell"),
 | 
				
			||||||
 | 
						BIG_DRIPLEAF("big_dripleaf"),
 | 
				
			||||||
 | 
						BIG_DRIPLEAF_STEM("big_dripleaf_stem"),
 | 
				
			||||||
 | 
						BIRCH_BUTTON("birch_button"),
 | 
				
			||||||
 | 
						BIRCH_DOOR("birch_door"),
 | 
				
			||||||
 | 
						BIRCH_FENCE("birch_fence"),
 | 
				
			||||||
 | 
						BIRCH_FENCE_GATE("birch_fence_gate"),
 | 
				
			||||||
 | 
						BIRCH_LEAVES("birch_leaves"),
 | 
				
			||||||
 | 
						BIRCH_LOG("birch_log"),
 | 
				
			||||||
 | 
						BIRCH_PLANKS("birch_planks"),
 | 
				
			||||||
 | 
						BIRCH_PRESSURE_PLATE("birch_pressure_plate"),
 | 
				
			||||||
 | 
						BIRCH_SAPLING("birch_sapling"),
 | 
				
			||||||
 | 
						BIRCH_SIGN("birch_sign"),
 | 
				
			||||||
 | 
						BIRCH_SLAB("birch_slab"),
 | 
				
			||||||
 | 
						BIRCH_STAIRS("birch_stairs"),
 | 
				
			||||||
 | 
						BIRCH_TRAPDOOR("birch_trapdoor"),
 | 
				
			||||||
 | 
						BIRCH_WALL_SIGN("birch_wall_sign"),
 | 
				
			||||||
 | 
						BIRCH_WOOD("birch_wood"),
 | 
				
			||||||
 | 
						BLACK_BANNER("black_banner"),
 | 
				
			||||||
 | 
						BLACK_BED("black_bed"),
 | 
				
			||||||
 | 
						BLACK_CANDLE("black_candle"),
 | 
				
			||||||
 | 
						BLACK_CANDLE_CAKE("black_candle_cake"),
 | 
				
			||||||
 | 
						BLACK_CARPET("black_carpet"),
 | 
				
			||||||
 | 
						BLACK_CONCRETE("black_concrete"),
 | 
				
			||||||
 | 
						BLACK_CONCRETE_POWDER("black_concrete_powder"),
 | 
				
			||||||
 | 
						BLACK_GLAZED_TERRACOTTA("black_glazed_terracotta"),
 | 
				
			||||||
 | 
						BLACK_SHULKER_BOX("black_shulker_box"),
 | 
				
			||||||
 | 
						BLACK_STAINED_GLASS("black_stained_glass"),
 | 
				
			||||||
 | 
						BLACK_STAINED_GLASS_PANE("black_stained_glass_pane"),
 | 
				
			||||||
 | 
						BLACK_TERRACOTTA("black_terracotta"),
 | 
				
			||||||
 | 
						BLACK_WALL_BANNER("black_wall_banner"),
 | 
				
			||||||
 | 
						BLACK_WOOL("black_wool"),
 | 
				
			||||||
 | 
						BLACKSTONE("blackstone"),
 | 
				
			||||||
 | 
						BLACKSTONE_SLAB("blackstone_slab"),
 | 
				
			||||||
 | 
						BLACKSTONE_STAIRS("blackstone_stairs"),
 | 
				
			||||||
 | 
						BLACKSTONE_WALL("blackstone_wall"),
 | 
				
			||||||
 | 
						BLAST_FURNACE("blast_furnace"),
 | 
				
			||||||
 | 
						BLUE_BANNER("blue_banner"),
 | 
				
			||||||
 | 
						BLUE_BED("blue_bed"),
 | 
				
			||||||
 | 
						BLUE_CANDLE("blue_candle"),
 | 
				
			||||||
 | 
						BLUE_CANDLE_CAKE("blue_candle_cake"),
 | 
				
			||||||
 | 
						BLUE_CARPET("blue_carpet"),
 | 
				
			||||||
 | 
						BLUE_CONCRETE("blue_concrete"),
 | 
				
			||||||
 | 
						BLUE_CONCRETE_POWDER("blue_concrete_powder"),
 | 
				
			||||||
 | 
						BLUE_GLAZED_TERRACOTTA("blue_glazed_terracotta"),
 | 
				
			||||||
 | 
						BLUE_ICE("blue_ice"),
 | 
				
			||||||
 | 
						BLUE_ORCHID("blue_orchid"),
 | 
				
			||||||
 | 
						BLUE_SHULKER_BOX("blue_shulker_box"),
 | 
				
			||||||
 | 
						BLUE_STAINED_GLASS("blue_stained_glass"),
 | 
				
			||||||
 | 
						BLUE_STAINED_GLASS_PANE("blue_stained_glass_pane"),
 | 
				
			||||||
 | 
						BLUE_TERRACOTTA("blue_terracotta"),
 | 
				
			||||||
 | 
						BLUE_WALL_BANNER("blue_wall_banner"),
 | 
				
			||||||
 | 
						BLUE_WOOL("blue_wool"),
 | 
				
			||||||
 | 
						BONE_BLOCK("bone_block"),
 | 
				
			||||||
 | 
						BOOKSHELF("bookshelf"),
 | 
				
			||||||
 | 
						BRAIN_CORAL("brain_coral"),
 | 
				
			||||||
 | 
						BRAIN_CORAL_BLOCK("brain_coral_block"),
 | 
				
			||||||
 | 
						BRAIN_CORAL_FAN("brain_coral_fan"),
 | 
				
			||||||
 | 
						BRAIN_CORAL_WALL_FAN("brain_coral_wall_fan"),
 | 
				
			||||||
 | 
						BREWING_STAND("brewing_stand"),
 | 
				
			||||||
 | 
						BRICK_SLAB("brick_slab"),
 | 
				
			||||||
 | 
						BRICK_STAIRS("brick_stairs"),
 | 
				
			||||||
 | 
						BRICK_WALL("brick_wall"),
 | 
				
			||||||
 | 
						BRICKS("bricks"),
 | 
				
			||||||
 | 
						BROWN_BANNER("brown_banner"),
 | 
				
			||||||
 | 
						BROWN_BED("brown_bed"),
 | 
				
			||||||
 | 
						BROWN_CANDLE("brown_candle"),
 | 
				
			||||||
 | 
						BROWN_CANDLE_CAKE("brown_candle_cake"),
 | 
				
			||||||
 | 
						BROWN_CARPET("brown_carpet"),
 | 
				
			||||||
 | 
						BROWN_CONCRETE("brown_concrete"),
 | 
				
			||||||
 | 
						BROWN_CONCRETE_POWDER("brown_concrete_powder"),
 | 
				
			||||||
 | 
						BROWN_GLAZED_TERRACOTTA("brown_glazed_terracotta"),
 | 
				
			||||||
 | 
						BROWN_MUSHROOM("brown_mushroom"),
 | 
				
			||||||
 | 
						BROWN_MUSHROOM_BLOCK("brown_mushroom_block"),
 | 
				
			||||||
 | 
						BROWN_SHULKER_BOX("brown_shulker_box"),
 | 
				
			||||||
 | 
						BROWN_STAINED_GLASS("brown_stained_glass"),
 | 
				
			||||||
 | 
						BROWN_STAINED_GLASS_PANE("brown_stained_glass_pane"),
 | 
				
			||||||
 | 
						BROWN_TERRACOTTA("brown_terracotta"),
 | 
				
			||||||
 | 
						BROWN_WALL_BANNER("brown_wall_banner"),
 | 
				
			||||||
 | 
						BROWN_WOOL("brown_wool"),
 | 
				
			||||||
 | 
						BUBBLE_COLUMN("bubble_column"),
 | 
				
			||||||
 | 
						BUBBLE_CORAL("bubble_coral"),
 | 
				
			||||||
 | 
						BUBBLE_CORAL_BLOCK("bubble_coral_block"),
 | 
				
			||||||
 | 
						BUBBLE_CORAL_FAN("bubble_coral_fan"),
 | 
				
			||||||
 | 
						BUBBLE_CORAL_WALL_FAN("bubble_coral_wall_fan"),
 | 
				
			||||||
 | 
						BUDDING_AMETHYST("budding_amethyst"),
 | 
				
			||||||
 | 
						CACTUS("cactus"),
 | 
				
			||||||
 | 
						CAKE("cake"),
 | 
				
			||||||
 | 
						CALCITE("calcite"),
 | 
				
			||||||
 | 
						CAMPFIRE("campfire"),
 | 
				
			||||||
 | 
						CANDLE("candle"),
 | 
				
			||||||
 | 
						CANDLE_CAKE("candle_cake"),
 | 
				
			||||||
 | 
						CARROTS("carrots"),
 | 
				
			||||||
 | 
						CARTOGRAPHY_TABLE("cartography_table"),
 | 
				
			||||||
 | 
						CARVED_PUMPKIN("carved_pumpkin"),
 | 
				
			||||||
 | 
						CAULDRON("cauldron"),
 | 
				
			||||||
 | 
						CAVE_AIR("cave_air"),
 | 
				
			||||||
 | 
						CAVE_VINES("cave_vines"),
 | 
				
			||||||
 | 
						CAVE_VINES_PLANT("cave_vines_plant"),
 | 
				
			||||||
 | 
						CHAIN("chain"),
 | 
				
			||||||
 | 
						CHAIN_COMMAND_BLOCK("chain_command_block"),
 | 
				
			||||||
 | 
						CHEST("chest"),
 | 
				
			||||||
 | 
						CHIPPED_ANVIL("chipped_anvil"),
 | 
				
			||||||
 | 
						CHISELED_DEEPSLATE("chiseled_deepslate"),
 | 
				
			||||||
 | 
						CHISELED_NETHER_BRICKS("chiseled_nether_bricks"),
 | 
				
			||||||
 | 
						CHISELED_POLISHED_BLACKSTONE("chiseled_polished_blackstone"),
 | 
				
			||||||
 | 
						CHISELED_QUARTZ_BLOCK("chiseled_quartz_block"),
 | 
				
			||||||
 | 
						CHISELED_RED_SANDSTONE("chiseled_red_sandstone"),
 | 
				
			||||||
 | 
						CHISELED_SANDSTONE("chiseled_sandstone"),
 | 
				
			||||||
 | 
						CHISELED_STONE_BRICKS("chiseled_stone_bricks"),
 | 
				
			||||||
 | 
						CHORUS_FLOWER("chorus_flower"),
 | 
				
			||||||
 | 
						CHORUS_PLANT("chorus_plant"),
 | 
				
			||||||
 | 
						CLAY("clay"),
 | 
				
			||||||
 | 
						COAL_BLOCK("coal_block"),
 | 
				
			||||||
 | 
						COAL_ORE("coal_ore"),
 | 
				
			||||||
 | 
						COARSE_DIRT("coarse_dirt"),
 | 
				
			||||||
 | 
						COBBLED_DEEPSLATE("cobbled_deepslate"),
 | 
				
			||||||
 | 
						COBBLED_DEEPSLATE_SLAB("cobbled_deepslate_slab"),
 | 
				
			||||||
 | 
						COBBLED_DEEPSLATE_STAIRS("cobbled_deepslate_stairs"),
 | 
				
			||||||
 | 
						COBBLED_DEEPSLATE_WALL("cobbled_deepslate_wall"),
 | 
				
			||||||
 | 
						COBBLESTONE("cobblestone"),
 | 
				
			||||||
 | 
						COBBLESTONE_SLAB("cobblestone_slab"),
 | 
				
			||||||
 | 
						COBBLESTONE_STAIRS("cobblestone_stairs"),
 | 
				
			||||||
 | 
						COBBLESTONE_WALL("cobblestone_wall"),
 | 
				
			||||||
 | 
						COBWEB("cobweb"),
 | 
				
			||||||
 | 
						COCOA("cocoa"),
 | 
				
			||||||
 | 
						COMMAND_BLOCK("command_block"),
 | 
				
			||||||
 | 
						COMPARATOR("comparator"),
 | 
				
			||||||
 | 
						COMPOSTER("composter"),
 | 
				
			||||||
 | 
						CONDUIT("conduit"),
 | 
				
			||||||
 | 
						COPPER_BLOCK("copper_block"),
 | 
				
			||||||
 | 
						COPPER_ORE("copper_ore"),
 | 
				
			||||||
 | 
						CORNFLOWER("cornflower"),
 | 
				
			||||||
 | 
						CRACKED_DEEPSLATE_BRICKS("cracked_deepslate_bricks"),
 | 
				
			||||||
 | 
						CRACKED_DEEPSLATE_TILES("cracked_deepslate_tiles"),
 | 
				
			||||||
 | 
						CRACKED_NETHER_BRICKS("cracked_nether_bricks"),
 | 
				
			||||||
 | 
						CRACKED_POLISHED_BLACKSTONE_BRICKS("cracked_polished_blackstone_bricks"),
 | 
				
			||||||
 | 
						CRACKED_STONE_BRICKS("cracked_stone_bricks"),
 | 
				
			||||||
 | 
						CRAFTING_TABLE("crafting_table"),
 | 
				
			||||||
 | 
						CREEPER_HEAD("creeper_head"),
 | 
				
			||||||
 | 
						CREEPER_WALL_HEAD("creeper_wall_head"),
 | 
				
			||||||
 | 
						CRIMSON_BUTTON("crimson_button"),
 | 
				
			||||||
 | 
						CRIMSON_DOOR("crimson_door"),
 | 
				
			||||||
 | 
						CRIMSON_FENCE("crimson_fence"),
 | 
				
			||||||
 | 
						CRIMSON_FENCE_GATE("crimson_fence_gate"),
 | 
				
			||||||
 | 
						CRIMSON_FUNGUS("crimson_fungus"),
 | 
				
			||||||
 | 
						CRIMSON_HYPHAE("crimson_hyphae"),
 | 
				
			||||||
 | 
						CRIMSON_NYLIUM("crimson_nylium"),
 | 
				
			||||||
 | 
						CRIMSON_PLANKS("crimson_planks"),
 | 
				
			||||||
 | 
						CRIMSON_PRESSURE_PLATE("crimson_pressure_plate"),
 | 
				
			||||||
 | 
						CRIMSON_ROOTS("crimson_roots"),
 | 
				
			||||||
 | 
						CRIMSON_SIGN("crimson_sign"),
 | 
				
			||||||
 | 
						CRIMSON_SLAB("crimson_slab"),
 | 
				
			||||||
 | 
						CRIMSON_STAIRS("crimson_stairs"),
 | 
				
			||||||
 | 
						CRIMSON_STEM("crimson_stem"),
 | 
				
			||||||
 | 
						CRIMSON_TRAPDOOR("crimson_trapdoor"),
 | 
				
			||||||
 | 
						CRIMSON_WALL_SIGN("crimson_wall_sign"),
 | 
				
			||||||
 | 
						CRYING_OBSIDIAN("crying_obsidian"),
 | 
				
			||||||
 | 
						CUT_COPPER("cut_copper"),
 | 
				
			||||||
 | 
						CUT_COPPER_SLAB("cut_copper_slab"),
 | 
				
			||||||
 | 
						CUT_COPPER_STAIRS("cut_copper_stairs"),
 | 
				
			||||||
 | 
						CUT_RED_SANDSTONE("cut_red_sandstone"),
 | 
				
			||||||
 | 
						CUT_RED_SANDSTONE_SLAB("cut_red_sandstone_slab"),
 | 
				
			||||||
 | 
						CUT_SANDSTONE("cut_sandstone"),
 | 
				
			||||||
 | 
						CUT_SANDSTONE_SLAB("cut_sandstone_slab"),
 | 
				
			||||||
 | 
						CYAN_BANNER("cyan_banner"),
 | 
				
			||||||
 | 
						CYAN_BED("cyan_bed"),
 | 
				
			||||||
 | 
						CYAN_CANDLE("cyan_candle"),
 | 
				
			||||||
 | 
						CYAN_CANDLE_CAKE("cyan_candle_cake"),
 | 
				
			||||||
 | 
						CYAN_CARPET("cyan_carpet"),
 | 
				
			||||||
 | 
						CYAN_CONCRETE("cyan_concrete"),
 | 
				
			||||||
 | 
						CYAN_CONCRETE_POWDER("cyan_concrete_powder"),
 | 
				
			||||||
 | 
						CYAN_GLAZED_TERRACOTTA("cyan_glazed_terracotta"),
 | 
				
			||||||
 | 
						CYAN_SHULKER_BOX("cyan_shulker_box"),
 | 
				
			||||||
 | 
						CYAN_STAINED_GLASS("cyan_stained_glass"),
 | 
				
			||||||
 | 
						CYAN_STAINED_GLASS_PANE("cyan_stained_glass_pane"),
 | 
				
			||||||
 | 
						CYAN_TERRACOTTA("cyan_terracotta"),
 | 
				
			||||||
 | 
						CYAN_WALL_BANNER("cyan_wall_banner"),
 | 
				
			||||||
 | 
						CYAN_WOOL("cyan_wool"),
 | 
				
			||||||
 | 
						DAMAGED_ANVIL("damaged_anvil"),
 | 
				
			||||||
 | 
						DANDELION("dandelion"),
 | 
				
			||||||
 | 
						DARK_OAK_BUTTON("dark_oak_button"),
 | 
				
			||||||
 | 
						DARK_OAK_DOOR("dark_oak_door"),
 | 
				
			||||||
 | 
						DARK_OAK_FENCE("dark_oak_fence"),
 | 
				
			||||||
 | 
						DARK_OAK_FENCE_GATE("dark_oak_fence_gate"),
 | 
				
			||||||
 | 
						DARK_OAK_LEAVES("dark_oak_leaves"),
 | 
				
			||||||
 | 
						DARK_OAK_LOG("dark_oak_log"),
 | 
				
			||||||
 | 
						DARK_OAK_PLANKS("dark_oak_planks"),
 | 
				
			||||||
 | 
						DARK_OAK_PRESSURE_PLATE("dark_oak_pressure_plate"),
 | 
				
			||||||
 | 
						DARK_OAK_SAPLING("dark_oak_sapling"),
 | 
				
			||||||
 | 
						DARK_OAK_SIGN("dark_oak_sign"),
 | 
				
			||||||
 | 
						DARK_OAK_SLAB("dark_oak_slab"),
 | 
				
			||||||
 | 
						DARK_OAK_STAIRS("dark_oak_stairs"),
 | 
				
			||||||
 | 
						DARK_OAK_TRAPDOOR("dark_oak_trapdoor"),
 | 
				
			||||||
 | 
						DARK_OAK_WALL_SIGN("dark_oak_wall_sign"),
 | 
				
			||||||
 | 
						DARK_OAK_WOOD("dark_oak_wood"),
 | 
				
			||||||
 | 
						DARK_PRISMARINE("dark_prismarine"),
 | 
				
			||||||
 | 
						DARK_PRISMARINE_SLAB("dark_prismarine_slab"),
 | 
				
			||||||
 | 
						DARK_PRISMARINE_STAIRS("dark_prismarine_stairs"),
 | 
				
			||||||
 | 
						DAYLIGHT_DETECTOR("daylight_detector"),
 | 
				
			||||||
 | 
						DEAD_BRAIN_CORAL("dead_brain_coral"),
 | 
				
			||||||
 | 
						DEAD_BRAIN_CORAL_BLOCK("dead_brain_coral_block"),
 | 
				
			||||||
 | 
						DEAD_BRAIN_CORAL_FAN("dead_brain_coral_fan"),
 | 
				
			||||||
 | 
						DEAD_BRAIN_CORAL_WALL_FAN("dead_brain_coral_wall_fan"),
 | 
				
			||||||
 | 
						DEAD_BUBBLE_CORAL("dead_bubble_coral"),
 | 
				
			||||||
 | 
						DEAD_BUBBLE_CORAL_BLOCK("dead_bubble_coral_block"),
 | 
				
			||||||
 | 
						DEAD_BUBBLE_CORAL_FAN("dead_bubble_coral_fan"),
 | 
				
			||||||
 | 
						DEAD_BUBBLE_CORAL_WALL_FAN("dead_bubble_coral_wall_fan"),
 | 
				
			||||||
 | 
						DEAD_BUSH("dead_bush"),
 | 
				
			||||||
 | 
						DEAD_FIRE_CORAL("dead_fire_coral"),
 | 
				
			||||||
 | 
						DEAD_FIRE_CORAL_BLOCK("dead_fire_coral_block"),
 | 
				
			||||||
 | 
						DEAD_FIRE_CORAL_FAN("dead_fire_coral_fan"),
 | 
				
			||||||
 | 
						DEAD_FIRE_CORAL_WALL_FAN("dead_fire_coral_wall_fan"),
 | 
				
			||||||
 | 
						DEAD_HORN_CORAL("dead_horn_coral"),
 | 
				
			||||||
 | 
						DEAD_HORN_CORAL_BLOCK("dead_horn_coral_block"),
 | 
				
			||||||
 | 
						DEAD_HORN_CORAL_FAN("dead_horn_coral_fan"),
 | 
				
			||||||
 | 
						DEAD_HORN_CORAL_WALL_FAN("dead_horn_coral_wall_fan"),
 | 
				
			||||||
 | 
						DEAD_TUBE_CORAL("dead_tube_coral"),
 | 
				
			||||||
 | 
						DEAD_TUBE_CORAL_BLOCK("dead_tube_coral_block"),
 | 
				
			||||||
 | 
						DEAD_TUBE_CORAL_FAN("dead_tube_coral_fan"),
 | 
				
			||||||
 | 
						DEAD_TUBE_CORAL_WALL_FAN("dead_tube_coral_wall_fan"),
 | 
				
			||||||
 | 
						DEEPSLATE("deepslate"),
 | 
				
			||||||
 | 
						DEEPSLATE_BRICK_SLAB("deepslate_brick_slab"),
 | 
				
			||||||
 | 
						DEEPSLATE_BRICK_STAIRS("deepslate_brick_stairs"),
 | 
				
			||||||
 | 
						DEEPSLATE_BRICK_WALL("deepslate_brick_wall"),
 | 
				
			||||||
 | 
						DEEPSLATE_BRICKS("deepslate_bricks"),
 | 
				
			||||||
 | 
						DEEPSLATE_COAL_ORE("deepslate_coal_ore"),
 | 
				
			||||||
 | 
						DEEPSLATE_COPPER_ORE("deepslate_copper_ore"),
 | 
				
			||||||
 | 
						DEEPSLATE_DIAMOND_ORE("deepslate_diamond_ore"),
 | 
				
			||||||
 | 
						DEEPSLATE_EMERALD_ORE("deepslate_emerald_ore"),
 | 
				
			||||||
 | 
						DEEPSLATE_GOLD_ORE("deepslate_gold_ore"),
 | 
				
			||||||
 | 
						DEEPSLATE_IRON_ORE("deepslate_iron_ore"),
 | 
				
			||||||
 | 
						DEEPSLATE_LAPIS_ORE("deepslate_lapis_ore"),
 | 
				
			||||||
 | 
						DEEPSLATE_REDSTONE_ORE("deepslate_redstone_ore"),
 | 
				
			||||||
 | 
						DEEPSLATE_TILE_SLAB("deepslate_tile_slab"),
 | 
				
			||||||
 | 
						DEEPSLATE_TILE_STAIRS("deepslate_tile_stairs"),
 | 
				
			||||||
 | 
						DEEPSLATE_TILE_WALL("deepslate_tile_wall"),
 | 
				
			||||||
 | 
						DEEPSLATE_TILES("deepslate_tiles"),
 | 
				
			||||||
 | 
						DETECTOR_RAIL("detector_rail"),
 | 
				
			||||||
 | 
						DIAMOND_BLOCK("diamond_block"),
 | 
				
			||||||
 | 
						DIAMOND_ORE("diamond_ore"),
 | 
				
			||||||
 | 
						DIORITE("diorite"),
 | 
				
			||||||
 | 
						DIORITE_SLAB("diorite_slab"),
 | 
				
			||||||
 | 
						DIORITE_STAIRS("diorite_stairs"),
 | 
				
			||||||
 | 
						DIORITE_WALL("diorite_wall"),
 | 
				
			||||||
 | 
						DIRT("dirt"),
 | 
				
			||||||
 | 
						DIRT_PATH("dirt_path"),
 | 
				
			||||||
 | 
						DISPENSER("dispenser"),
 | 
				
			||||||
 | 
						DRAGON_EGG("dragon_egg"),
 | 
				
			||||||
 | 
						DRAGON_HEAD("dragon_head"),
 | 
				
			||||||
 | 
						DRAGON_WALL_HEAD("dragon_wall_head"),
 | 
				
			||||||
 | 
						DRIED_KELP_BLOCK("dried_kelp_block"),
 | 
				
			||||||
 | 
						DRIPSTONE_BLOCK("dripstone_block"),
 | 
				
			||||||
 | 
						DROPPER("dropper"),
 | 
				
			||||||
 | 
						EMERALD_BLOCK("emerald_block"),
 | 
				
			||||||
 | 
						EMERALD_ORE("emerald_ore"),
 | 
				
			||||||
 | 
						ENCHANTING_TABLE("enchanting_table"),
 | 
				
			||||||
 | 
						END_GATEWAY("end_gateway"),
 | 
				
			||||||
 | 
						END_PORTAL("end_portal"),
 | 
				
			||||||
 | 
						END_PORTAL_FRAME("end_portal_frame"),
 | 
				
			||||||
 | 
						END_ROD("end_rod"),
 | 
				
			||||||
 | 
						END_STONE("end_stone"),
 | 
				
			||||||
 | 
						END_STONE_BRICK_SLAB("end_stone_brick_slab"),
 | 
				
			||||||
 | 
						END_STONE_BRICK_STAIRS("end_stone_brick_stairs"),
 | 
				
			||||||
 | 
						END_STONE_BRICK_WALL("end_stone_brick_wall"),
 | 
				
			||||||
 | 
						END_STONE_BRICKS("end_stone_bricks"),
 | 
				
			||||||
 | 
						ENDER_CHEST("ender_chest"),
 | 
				
			||||||
 | 
						EXPOSED_COPPER("exposed_copper"),
 | 
				
			||||||
 | 
						EXPOSED_CUT_COPPER("exposed_cut_copper"),
 | 
				
			||||||
 | 
						EXPOSED_CUT_COPPER_SLAB("exposed_cut_copper_slab"),
 | 
				
			||||||
 | 
						EXPOSED_CUT_COPPER_STAIRS("exposed_cut_copper_stairs"),
 | 
				
			||||||
 | 
						FARMLAND("farmland"),
 | 
				
			||||||
 | 
						FERN("fern"),
 | 
				
			||||||
 | 
						FIRE("fire"),
 | 
				
			||||||
 | 
						FIRE_CORAL("fire_coral"),
 | 
				
			||||||
 | 
						FIRE_CORAL_BLOCK("fire_coral_block"),
 | 
				
			||||||
 | 
						FIRE_CORAL_FAN("fire_coral_fan"),
 | 
				
			||||||
 | 
						FIRE_CORAL_WALL_FAN("fire_coral_wall_fan"),
 | 
				
			||||||
 | 
						FLETCHING_TABLE("fletching_table"),
 | 
				
			||||||
 | 
						FLOWER_POT("flower_pot"),
 | 
				
			||||||
 | 
						FLOWERING_AZALEA("flowering_azalea"),
 | 
				
			||||||
 | 
						FLOWERING_AZALEA_LEAVES("flowering_azalea_leaves"),
 | 
				
			||||||
 | 
						FROSTED_ICE("frosted_ice"),
 | 
				
			||||||
 | 
						FURNACE("furnace"),
 | 
				
			||||||
 | 
						GILDED_BLACKSTONE("gilded_blackstone"),
 | 
				
			||||||
 | 
						GLASS("glass"),
 | 
				
			||||||
 | 
						GLASS_PANE("glass_pane"),
 | 
				
			||||||
 | 
						GLOW_LICHEN("glow_lichen"),
 | 
				
			||||||
 | 
						GLOWSTONE("glowstone"),
 | 
				
			||||||
 | 
						GOLD_BLOCK("gold_block"),
 | 
				
			||||||
 | 
						GOLD_ORE("gold_ore"),
 | 
				
			||||||
 | 
						GRANITE("granite"),
 | 
				
			||||||
 | 
						GRANITE_SLAB("granite_slab"),
 | 
				
			||||||
 | 
						GRANITE_STAIRS("granite_stairs"),
 | 
				
			||||||
 | 
						GRANITE_WALL("granite_wall"),
 | 
				
			||||||
 | 
						GRASS("grass"),
 | 
				
			||||||
 | 
						GRASS_BLOCK("grass_block"),
 | 
				
			||||||
 | 
						GRAVEL("gravel"),
 | 
				
			||||||
 | 
						GRAY_BANNER("gray_banner"),
 | 
				
			||||||
 | 
						GRAY_BED("gray_bed"),
 | 
				
			||||||
 | 
						GRAY_CANDLE("gray_candle"),
 | 
				
			||||||
 | 
						GRAY_CANDLE_CAKE("gray_candle_cake"),
 | 
				
			||||||
 | 
						GRAY_CARPET("gray_carpet"),
 | 
				
			||||||
 | 
						GRAY_CONCRETE("gray_concrete"),
 | 
				
			||||||
 | 
						GRAY_CONCRETE_POWDER("gray_concrete_powder"),
 | 
				
			||||||
 | 
						GRAY_GLAZED_TERRACOTTA("gray_glazed_terracotta"),
 | 
				
			||||||
 | 
						GRAY_SHULKER_BOX("gray_shulker_box"),
 | 
				
			||||||
 | 
						GRAY_STAINED_GLASS("gray_stained_glass"),
 | 
				
			||||||
 | 
						GRAY_STAINED_GLASS_PANE("gray_stained_glass_pane"),
 | 
				
			||||||
 | 
						GRAY_TERRACOTTA("gray_terracotta"),
 | 
				
			||||||
 | 
						GRAY_WALL_BANNER("gray_wall_banner"),
 | 
				
			||||||
 | 
						GRAY_WOOL("gray_wool"),
 | 
				
			||||||
 | 
						GREEN_BANNER("green_banner"),
 | 
				
			||||||
 | 
						GREEN_BED("green_bed"),
 | 
				
			||||||
 | 
						GREEN_CANDLE("green_candle"),
 | 
				
			||||||
 | 
						GREEN_CANDLE_CAKE("green_candle_cake"),
 | 
				
			||||||
 | 
						GREEN_CARPET("green_carpet"),
 | 
				
			||||||
 | 
						GREEN_CONCRETE("green_concrete"),
 | 
				
			||||||
 | 
						GREEN_CONCRETE_POWDER("green_concrete_powder"),
 | 
				
			||||||
 | 
						GREEN_GLAZED_TERRACOTTA("green_glazed_terracotta"),
 | 
				
			||||||
 | 
						GREEN_SHULKER_BOX("green_shulker_box"),
 | 
				
			||||||
 | 
						GREEN_STAINED_GLASS("green_stained_glass"),
 | 
				
			||||||
 | 
						GREEN_STAINED_GLASS_PANE("green_stained_glass_pane"),
 | 
				
			||||||
 | 
						GREEN_TERRACOTTA("green_terracotta"),
 | 
				
			||||||
 | 
						GREEN_WALL_BANNER("green_wall_banner"),
 | 
				
			||||||
 | 
						GREEN_WOOL("green_wool"),
 | 
				
			||||||
 | 
						GRINDSTONE("grindstone"),
 | 
				
			||||||
 | 
						HANGING_ROOTS("hanging_roots"),
 | 
				
			||||||
 | 
						HAY_BLOCK("hay_block"),
 | 
				
			||||||
 | 
						HEAVY_WEIGHTED_PRESSURE_PLATE("heavy_weighted_pressure_plate"),
 | 
				
			||||||
 | 
						HONEY_BLOCK("honey_block"),
 | 
				
			||||||
 | 
						HONEYCOMB_BLOCK("honeycomb_block"),
 | 
				
			||||||
 | 
						HOPPER("hopper"),
 | 
				
			||||||
 | 
						HORN_CORAL("horn_coral"),
 | 
				
			||||||
 | 
						HORN_CORAL_BLOCK("horn_coral_block"),
 | 
				
			||||||
 | 
						HORN_CORAL_FAN("horn_coral_fan"),
 | 
				
			||||||
 | 
						HORN_CORAL_WALL_FAN("horn_coral_wall_fan"),
 | 
				
			||||||
 | 
						ICE("ice"),
 | 
				
			||||||
 | 
						INFESTED_CHISELED_STONE_BRICKS("infested_chiseled_stone_bricks"),
 | 
				
			||||||
 | 
						INFESTED_COBBLESTONE("infested_cobblestone"),
 | 
				
			||||||
 | 
						INFESTED_CRACKED_STONE_BRICKS("infested_cracked_stone_bricks"),
 | 
				
			||||||
 | 
						INFESTED_DEEPSLATE("infested_deepslate"),
 | 
				
			||||||
 | 
						INFESTED_MOSSY_STONE_BRICKS("infested_mossy_stone_bricks"),
 | 
				
			||||||
 | 
						INFESTED_STONE("infested_stone"),
 | 
				
			||||||
 | 
						INFESTED_STONE_BRICKS("infested_stone_bricks"),
 | 
				
			||||||
 | 
						IRON_BARS("iron_bars"),
 | 
				
			||||||
 | 
						IRON_BLOCK("iron_block"),
 | 
				
			||||||
 | 
						IRON_DOOR("iron_door"),
 | 
				
			||||||
 | 
						IRON_ORE("iron_ore"),
 | 
				
			||||||
 | 
						IRON_TRAPDOOR("iron_trapdoor"),
 | 
				
			||||||
 | 
						JACK_O_LANTERN("jack_o_lantern"),
 | 
				
			||||||
 | 
						JIGSAW("jigsaw"),
 | 
				
			||||||
 | 
						JUKEBOX("jukebox"),
 | 
				
			||||||
 | 
						JUNGLE_BUTTON("jungle_button"),
 | 
				
			||||||
 | 
						JUNGLE_DOOR("jungle_door"),
 | 
				
			||||||
 | 
						JUNGLE_FENCE("jungle_fence"),
 | 
				
			||||||
 | 
						JUNGLE_FENCE_GATE("jungle_fence_gate"),
 | 
				
			||||||
 | 
						JUNGLE_LEAVES("jungle_leaves"),
 | 
				
			||||||
 | 
						JUNGLE_LOG("jungle_log"),
 | 
				
			||||||
 | 
						JUNGLE_PLANKS("jungle_planks"),
 | 
				
			||||||
 | 
						JUNGLE_PRESSURE_PLATE("jungle_pressure_plate"),
 | 
				
			||||||
 | 
						JUNGLE_SAPLING("jungle_sapling"),
 | 
				
			||||||
 | 
						JUNGLE_SIGN("jungle_sign"),
 | 
				
			||||||
 | 
						JUNGLE_SLAB("jungle_slab"),
 | 
				
			||||||
 | 
						JUNGLE_STAIRS("jungle_stairs"),
 | 
				
			||||||
 | 
						JUNGLE_TRAPDOOR("jungle_trapdoor"),
 | 
				
			||||||
 | 
						JUNGLE_WALL_SIGN("jungle_wall_sign"),
 | 
				
			||||||
 | 
						JUNGLE_WOOD("jungle_wood"),
 | 
				
			||||||
 | 
						KELP("kelp"),
 | 
				
			||||||
 | 
						KELP_PLANT("kelp_plant"),
 | 
				
			||||||
 | 
						LADDER("ladder"),
 | 
				
			||||||
 | 
						LANTERN("lantern"),
 | 
				
			||||||
 | 
						LAPIS_BLOCK("lapis_block"),
 | 
				
			||||||
 | 
						LAPIS_ORE("lapis_ore"),
 | 
				
			||||||
 | 
						LARGE_AMETHYST_BUD("large_amethyst_bud"),
 | 
				
			||||||
 | 
						LARGE_FERN("large_fern"),
 | 
				
			||||||
 | 
						LAVA("lava"),
 | 
				
			||||||
 | 
						LAVA_CAULDRON("lava_cauldron"),
 | 
				
			||||||
 | 
						LECTERN("lectern"),
 | 
				
			||||||
 | 
						LEVER("lever"),
 | 
				
			||||||
 | 
						LIGHT("light"),
 | 
				
			||||||
 | 
						LIGHT_BLUE_BANNER("light_blue_banner"),
 | 
				
			||||||
 | 
						LIGHT_BLUE_BED("light_blue_bed"),
 | 
				
			||||||
 | 
						LIGHT_BLUE_CANDLE("light_blue_candle"),
 | 
				
			||||||
 | 
						LIGHT_BLUE_CANDLE_CAKE("light_blue_candle_cake"),
 | 
				
			||||||
 | 
						LIGHT_BLUE_CARPET("light_blue_carpet"),
 | 
				
			||||||
 | 
						LIGHT_BLUE_CONCRETE("light_blue_concrete"),
 | 
				
			||||||
 | 
						LIGHT_BLUE_CONCRETE_POWDER("light_blue_concrete_powder"),
 | 
				
			||||||
 | 
						LIGHT_BLUE_GLAZED_TERRACOTTA("light_blue_glazed_terracotta"),
 | 
				
			||||||
 | 
						LIGHT_BLUE_SHULKER_BOX("light_blue_shulker_box"),
 | 
				
			||||||
 | 
						LIGHT_BLUE_STAINED_GLASS("light_blue_stained_glass"),
 | 
				
			||||||
 | 
						LIGHT_BLUE_STAINED_GLASS_PANE("light_blue_stained_glass_pane"),
 | 
				
			||||||
 | 
						LIGHT_BLUE_TERRACOTTA("light_blue_terracotta"),
 | 
				
			||||||
 | 
						LIGHT_BLUE_WALL_BANNER("light_blue_wall_banner"),
 | 
				
			||||||
 | 
						LIGHT_BLUE_WOOL("light_blue_wool"),
 | 
				
			||||||
 | 
						LIGHT_GRAY_BANNER("light_gray_banner"),
 | 
				
			||||||
 | 
						LIGHT_GRAY_BED("light_gray_bed"),
 | 
				
			||||||
 | 
						LIGHT_GRAY_CANDLE("light_gray_candle"),
 | 
				
			||||||
 | 
						LIGHT_GRAY_CANDLE_CAKE("light_gray_candle_cake"),
 | 
				
			||||||
 | 
						LIGHT_GRAY_CARPET("light_gray_carpet"),
 | 
				
			||||||
 | 
						LIGHT_GRAY_CONCRETE("light_gray_concrete"),
 | 
				
			||||||
 | 
						LIGHT_GRAY_CONCRETE_POWDER("light_gray_concrete_powder"),
 | 
				
			||||||
 | 
						LIGHT_GRAY_GLAZED_TERRACOTTA("light_gray_glazed_terracotta"),
 | 
				
			||||||
 | 
						LIGHT_GRAY_SHULKER_BOX("light_gray_shulker_box"),
 | 
				
			||||||
 | 
						LIGHT_GRAY_STAINED_GLASS("light_gray_stained_glass"),
 | 
				
			||||||
 | 
						LIGHT_GRAY_STAINED_GLASS_PANE("light_gray_stained_glass_pane"),
 | 
				
			||||||
 | 
						LIGHT_GRAY_TERRACOTTA("light_gray_terracotta"),
 | 
				
			||||||
 | 
						LIGHT_GRAY_WALL_BANNER("light_gray_wall_banner"),
 | 
				
			||||||
 | 
						LIGHT_GRAY_WOOL("light_gray_wool"),
 | 
				
			||||||
 | 
						LIGHT_WEIGHTED_PRESSURE_PLATE("light_weighted_pressure_plate"),
 | 
				
			||||||
 | 
						LIGHTNING_ROD("lightning_rod"),
 | 
				
			||||||
 | 
						LILAC("lilac"),
 | 
				
			||||||
 | 
						LILY_OF_THE_VALLEY("lily_of_the_valley"),
 | 
				
			||||||
 | 
						LILY_PAD("lily_pad"),
 | 
				
			||||||
 | 
						LIME_BANNER("lime_banner"),
 | 
				
			||||||
 | 
						LIME_BED("lime_bed"),
 | 
				
			||||||
 | 
						LIME_CANDLE("lime_candle"),
 | 
				
			||||||
 | 
						LIME_CANDLE_CAKE("lime_candle_cake"),
 | 
				
			||||||
 | 
						LIME_CARPET("lime_carpet"),
 | 
				
			||||||
 | 
						LIME_CONCRETE("lime_concrete"),
 | 
				
			||||||
 | 
						LIME_CONCRETE_POWDER("lime_concrete_powder"),
 | 
				
			||||||
 | 
						LIME_GLAZED_TERRACOTTA("lime_glazed_terracotta"),
 | 
				
			||||||
 | 
						LIME_SHULKER_BOX("lime_shulker_box"),
 | 
				
			||||||
 | 
						LIME_STAINED_GLASS("lime_stained_glass"),
 | 
				
			||||||
 | 
						LIME_STAINED_GLASS_PANE("lime_stained_glass_pane"),
 | 
				
			||||||
 | 
						LIME_TERRACOTTA("lime_terracotta"),
 | 
				
			||||||
 | 
						LIME_WALL_BANNER("lime_wall_banner"),
 | 
				
			||||||
 | 
						LIME_WOOL("lime_wool"),
 | 
				
			||||||
 | 
						LODESTONE("lodestone"),
 | 
				
			||||||
 | 
						LOOM("loom"),
 | 
				
			||||||
 | 
						MAGENTA_BANNER("magenta_banner"),
 | 
				
			||||||
 | 
						MAGENTA_BED("magenta_bed"),
 | 
				
			||||||
 | 
						MAGENTA_CANDLE("magenta_candle"),
 | 
				
			||||||
 | 
						MAGENTA_CANDLE_CAKE("magenta_candle_cake"),
 | 
				
			||||||
 | 
						MAGENTA_CARPET("magenta_carpet"),
 | 
				
			||||||
 | 
						MAGENTA_CONCRETE("magenta_concrete"),
 | 
				
			||||||
 | 
						MAGENTA_CONCRETE_POWDER("magenta_concrete_powder"),
 | 
				
			||||||
 | 
						MAGENTA_GLAZED_TERRACOTTA("magenta_glazed_terracotta"),
 | 
				
			||||||
 | 
						MAGENTA_SHULKER_BOX("magenta_shulker_box"),
 | 
				
			||||||
 | 
						MAGENTA_STAINED_GLASS("magenta_stained_glass"),
 | 
				
			||||||
 | 
						MAGENTA_STAINED_GLASS_PANE("magenta_stained_glass_pane"),
 | 
				
			||||||
 | 
						MAGENTA_TERRACOTTA("magenta_terracotta"),
 | 
				
			||||||
 | 
						MAGENTA_WALL_BANNER("magenta_wall_banner"),
 | 
				
			||||||
 | 
						MAGENTA_WOOL("magenta_wool"),
 | 
				
			||||||
 | 
						MAGMA_BLOCK("magma_block"),
 | 
				
			||||||
 | 
						MEDIUM_AMETHYST_BUD("medium_amethyst_bud"),
 | 
				
			||||||
 | 
						MELON("melon"),
 | 
				
			||||||
 | 
						MELON_STEM("melon_stem"),
 | 
				
			||||||
 | 
						MOSS_BLOCK("moss_block"),
 | 
				
			||||||
 | 
						MOSS_CARPET("moss_carpet"),
 | 
				
			||||||
 | 
						MOSSY_COBBLESTONE("mossy_cobblestone"),
 | 
				
			||||||
 | 
						MOSSY_COBBLESTONE_SLAB("mossy_cobblestone_slab"),
 | 
				
			||||||
 | 
						MOSSY_COBBLESTONE_STAIRS("mossy_cobblestone_stairs"),
 | 
				
			||||||
 | 
						MOSSY_COBBLESTONE_WALL("mossy_cobblestone_wall"),
 | 
				
			||||||
 | 
						MOSSY_STONE_BRICK_SLAB("mossy_stone_brick_slab"),
 | 
				
			||||||
 | 
						MOSSY_STONE_BRICK_STAIRS("mossy_stone_brick_stairs"),
 | 
				
			||||||
 | 
						MOSSY_STONE_BRICK_WALL("mossy_stone_brick_wall"),
 | 
				
			||||||
 | 
						MOSSY_STONE_BRICKS("mossy_stone_bricks"),
 | 
				
			||||||
 | 
						MOVING_PISTON("moving_piston"),
 | 
				
			||||||
 | 
						MUSHROOM_STEM("mushroom_stem"),
 | 
				
			||||||
 | 
						MYCELIUM("mycelium"),
 | 
				
			||||||
 | 
						NETHER_BRICK_FENCE("nether_brick_fence"),
 | 
				
			||||||
 | 
						NETHER_BRICK_SLAB("nether_brick_slab"),
 | 
				
			||||||
 | 
						NETHER_BRICK_STAIRS("nether_brick_stairs"),
 | 
				
			||||||
 | 
						NETHER_BRICK_WALL("nether_brick_wall"),
 | 
				
			||||||
 | 
						NETHER_BRICKS("nether_bricks"),
 | 
				
			||||||
 | 
						NETHER_GOLD_ORE("nether_gold_ore"),
 | 
				
			||||||
 | 
						NETHER_PORTAL("nether_portal"),
 | 
				
			||||||
 | 
						NETHER_QUARTZ_ORE("nether_quartz_ore"),
 | 
				
			||||||
 | 
						NETHER_SPROUTS("nether_sprouts"),
 | 
				
			||||||
 | 
						NETHER_WART("nether_wart"),
 | 
				
			||||||
 | 
						NETHER_WART_BLOCK("nether_wart_block"),
 | 
				
			||||||
 | 
						NETHERITE_BLOCK("netherite_block"),
 | 
				
			||||||
 | 
						NETHERRACK("netherrack"),
 | 
				
			||||||
 | 
						NOTE_BLOCK("note_block"),
 | 
				
			||||||
 | 
						OAK_BUTTON("oak_button"),
 | 
				
			||||||
 | 
						OAK_DOOR("oak_door"),
 | 
				
			||||||
 | 
						OAK_FENCE("oak_fence"),
 | 
				
			||||||
 | 
						OAK_FENCE_GATE("oak_fence_gate"),
 | 
				
			||||||
 | 
						OAK_LEAVES("oak_leaves"),
 | 
				
			||||||
 | 
						OAK_LOG("oak_log"),
 | 
				
			||||||
 | 
						OAK_PLANKS("oak_planks"),
 | 
				
			||||||
 | 
						OAK_PRESSURE_PLATE("oak_pressure_plate"),
 | 
				
			||||||
 | 
						OAK_SAPLING("oak_sapling"),
 | 
				
			||||||
 | 
						OAK_SIGN("oak_sign"),
 | 
				
			||||||
 | 
						OAK_SLAB("oak_slab"),
 | 
				
			||||||
 | 
						OAK_STAIRS("oak_stairs"),
 | 
				
			||||||
 | 
						OAK_TRAPDOOR("oak_trapdoor"),
 | 
				
			||||||
 | 
						OAK_WALL_SIGN("oak_wall_sign"),
 | 
				
			||||||
 | 
						OAK_WOOD("oak_wood"),
 | 
				
			||||||
 | 
						OBSERVER("observer"),
 | 
				
			||||||
 | 
						OBSIDIAN("obsidian"),
 | 
				
			||||||
 | 
						ORANGE_BANNER("orange_banner"),
 | 
				
			||||||
 | 
						ORANGE_BED("orange_bed"),
 | 
				
			||||||
 | 
						ORANGE_CANDLE("orange_candle"),
 | 
				
			||||||
 | 
						ORANGE_CANDLE_CAKE("orange_candle_cake"),
 | 
				
			||||||
 | 
						ORANGE_CARPET("orange_carpet"),
 | 
				
			||||||
 | 
						ORANGE_CONCRETE("orange_concrete"),
 | 
				
			||||||
 | 
						ORANGE_CONCRETE_POWDER("orange_concrete_powder"),
 | 
				
			||||||
 | 
						ORANGE_GLAZED_TERRACOTTA("orange_glazed_terracotta"),
 | 
				
			||||||
 | 
						ORANGE_SHULKER_BOX("orange_shulker_box"),
 | 
				
			||||||
 | 
						ORANGE_STAINED_GLASS("orange_stained_glass"),
 | 
				
			||||||
 | 
						ORANGE_STAINED_GLASS_PANE("orange_stained_glass_pane"),
 | 
				
			||||||
 | 
						ORANGE_TERRACOTTA("orange_terracotta"),
 | 
				
			||||||
 | 
						ORANGE_TULIP("orange_tulip"),
 | 
				
			||||||
 | 
						ORANGE_WALL_BANNER("orange_wall_banner"),
 | 
				
			||||||
 | 
						ORANGE_WOOL("orange_wool"),
 | 
				
			||||||
 | 
						OXEYE_DAISY("oxeye_daisy"),
 | 
				
			||||||
 | 
						OXIDIZED_COPPER("oxidized_copper"),
 | 
				
			||||||
 | 
						OXIDIZED_CUT_COPPER("oxidized_cut_copper"),
 | 
				
			||||||
 | 
						OXIDIZED_CUT_COPPER_SLAB("oxidized_cut_copper_slab"),
 | 
				
			||||||
 | 
						OXIDIZED_CUT_COPPER_STAIRS("oxidized_cut_copper_stairs"),
 | 
				
			||||||
 | 
						PACKED_ICE("packed_ice"),
 | 
				
			||||||
 | 
						PEONY("peony"),
 | 
				
			||||||
 | 
						PETRIFIED_OAK_SLAB("petrified_oak_slab"),
 | 
				
			||||||
 | 
						PINK_BANNER("pink_banner"),
 | 
				
			||||||
 | 
						PINK_BED("pink_bed"),
 | 
				
			||||||
 | 
						PINK_CANDLE("pink_candle"),
 | 
				
			||||||
 | 
						PINK_CANDLE_CAKE("pink_candle_cake"),
 | 
				
			||||||
 | 
						PINK_CARPET("pink_carpet"),
 | 
				
			||||||
 | 
						PINK_CONCRETE("pink_concrete"),
 | 
				
			||||||
 | 
						PINK_CONCRETE_POWDER("pink_concrete_powder"),
 | 
				
			||||||
 | 
						PINK_GLAZED_TERRACOTTA("pink_glazed_terracotta"),
 | 
				
			||||||
 | 
						PINK_SHULKER_BOX("pink_shulker_box"),
 | 
				
			||||||
 | 
						PINK_STAINED_GLASS("pink_stained_glass"),
 | 
				
			||||||
 | 
						PINK_STAINED_GLASS_PANE("pink_stained_glass_pane"),
 | 
				
			||||||
 | 
						PINK_TERRACOTTA("pink_terracotta"),
 | 
				
			||||||
 | 
						PINK_TULIP("pink_tulip"),
 | 
				
			||||||
 | 
						PINK_WALL_BANNER("pink_wall_banner"),
 | 
				
			||||||
 | 
						PINK_WOOL("pink_wool"),
 | 
				
			||||||
 | 
						PISTON("piston"),
 | 
				
			||||||
 | 
						PISTON_HEAD("piston_head"),
 | 
				
			||||||
 | 
						PLAYER_HEAD("player_head"),
 | 
				
			||||||
 | 
						PLAYER_WALL_HEAD("player_wall_head"),
 | 
				
			||||||
 | 
						PODZOL("podzol"),
 | 
				
			||||||
 | 
						POINTED_DRIPSTONE("pointed_dripstone"),
 | 
				
			||||||
 | 
						POLISHED_ANDESITE("polished_andesite"),
 | 
				
			||||||
 | 
						POLISHED_ANDESITE_SLAB("polished_andesite_slab"),
 | 
				
			||||||
 | 
						POLISHED_ANDESITE_STAIRS("polished_andesite_stairs"),
 | 
				
			||||||
 | 
						POLISHED_BASALT("polished_basalt"),
 | 
				
			||||||
 | 
						POLISHED_BLACKSTONE("polished_blackstone"),
 | 
				
			||||||
 | 
						POLISHED_BLACKSTONE_BRICK_SLAB("polished_blackstone_brick_slab"),
 | 
				
			||||||
 | 
						POLISHED_BLACKSTONE_BRICK_STAIRS("polished_blackstone_brick_stairs"),
 | 
				
			||||||
 | 
						POLISHED_BLACKSTONE_BRICK_WALL("polished_blackstone_brick_wall"),
 | 
				
			||||||
 | 
						POLISHED_BLACKSTONE_BRICKS("polished_blackstone_bricks"),
 | 
				
			||||||
 | 
						POLISHED_BLACKSTONE_BUTTON("polished_blackstone_button"),
 | 
				
			||||||
 | 
						POLISHED_BLACKSTONE_PRESSURE_PLATE("polished_blackstone_pressure_plate"),
 | 
				
			||||||
 | 
						POLISHED_BLACKSTONE_SLAB("polished_blackstone_slab"),
 | 
				
			||||||
 | 
						POLISHED_BLACKSTONE_STAIRS("polished_blackstone_stairs"),
 | 
				
			||||||
 | 
						POLISHED_BLACKSTONE_WALL("polished_blackstone_wall"),
 | 
				
			||||||
 | 
						POLISHED_DEEPSLATE("polished_deepslate"),
 | 
				
			||||||
 | 
						POLISHED_DEEPSLATE_SLAB("polished_deepslate_slab"),
 | 
				
			||||||
 | 
						POLISHED_DEEPSLATE_STAIRS("polished_deepslate_stairs"),
 | 
				
			||||||
 | 
						POLISHED_DEEPSLATE_WALL("polished_deepslate_wall"),
 | 
				
			||||||
 | 
						POLISHED_DIORITE("polished_diorite"),
 | 
				
			||||||
 | 
						POLISHED_DIORITE_SLAB("polished_diorite_slab"),
 | 
				
			||||||
 | 
						POLISHED_DIORITE_STAIRS("polished_diorite_stairs"),
 | 
				
			||||||
 | 
						POLISHED_GRANITE("polished_granite"),
 | 
				
			||||||
 | 
						POLISHED_GRANITE_SLAB("polished_granite_slab"),
 | 
				
			||||||
 | 
						POLISHED_GRANITE_STAIRS("polished_granite_stairs"),
 | 
				
			||||||
 | 
						POPPY("poppy"),
 | 
				
			||||||
 | 
						POTATOES("potatoes"),
 | 
				
			||||||
 | 
						POTTED_ACACIA_SAPLING("potted_acacia_sapling"),
 | 
				
			||||||
 | 
						POTTED_ALLIUM("potted_allium"),
 | 
				
			||||||
 | 
						POTTED_AZALEA_BUSH("potted_azalea_bush"),
 | 
				
			||||||
 | 
						POTTED_AZURE_BLUET("potted_azure_bluet"),
 | 
				
			||||||
 | 
						POTTED_BAMBOO("potted_bamboo"),
 | 
				
			||||||
 | 
						POTTED_BIRCH_SAPLING("potted_birch_sapling"),
 | 
				
			||||||
 | 
						POTTED_BLUE_ORCHID("potted_blue_orchid"),
 | 
				
			||||||
 | 
						POTTED_BROWN_MUSHROOM("potted_brown_mushroom"),
 | 
				
			||||||
 | 
						POTTED_CACTUS("potted_cactus"),
 | 
				
			||||||
 | 
						POTTED_CORNFLOWER("potted_cornflower"),
 | 
				
			||||||
 | 
						POTTED_CRIMSON_FUNGUS("potted_crimson_fungus"),
 | 
				
			||||||
 | 
						POTTED_CRIMSON_ROOTS("potted_crimson_roots"),
 | 
				
			||||||
 | 
						POTTED_DANDELION("potted_dandelion"),
 | 
				
			||||||
 | 
						POTTED_DARK_OAK_SAPLING("potted_dark_oak_sapling"),
 | 
				
			||||||
 | 
						POTTED_DEAD_BUSH("potted_dead_bush"),
 | 
				
			||||||
 | 
						POTTED_FERN("potted_fern"),
 | 
				
			||||||
 | 
						POTTED_FLOWERING_AZALEA_BUSH("potted_flowering_azalea_bush"),
 | 
				
			||||||
 | 
						POTTED_JUNGLE_SAPLING("potted_jungle_sapling"),
 | 
				
			||||||
 | 
						POTTED_LILY_OF_THE_VALLEY("potted_lily_of_the_valley"),
 | 
				
			||||||
 | 
						POTTED_OAK_SAPLING("potted_oak_sapling"),
 | 
				
			||||||
 | 
						POTTED_ORANGE_TULIP("potted_orange_tulip"),
 | 
				
			||||||
 | 
						POTTED_OXEYE_DAISY("potted_oxeye_daisy"),
 | 
				
			||||||
 | 
						POTTED_PINK_TULIP("potted_pink_tulip"),
 | 
				
			||||||
 | 
						POTTED_POPPY("potted_poppy"),
 | 
				
			||||||
 | 
						POTTED_RED_MUSHROOM("potted_red_mushroom"),
 | 
				
			||||||
 | 
						POTTED_RED_TULIP("potted_red_tulip"),
 | 
				
			||||||
 | 
						POTTED_SPRUCE_SAPLING("potted_spruce_sapling"),
 | 
				
			||||||
 | 
						POTTED_WARPED_FUNGUS("potted_warped_fungus"),
 | 
				
			||||||
 | 
						POTTED_WARPED_ROOTS("potted_warped_roots"),
 | 
				
			||||||
 | 
						POTTED_WHITE_TULIP("potted_white_tulip"),
 | 
				
			||||||
 | 
						POTTED_WITHER_ROSE("potted_wither_rose"),
 | 
				
			||||||
 | 
						POWDER_SNOW("powder_snow"),
 | 
				
			||||||
 | 
						POWDER_SNOW_CAULDRON("powder_snow_cauldron"),
 | 
				
			||||||
 | 
						POWERED_RAIL("powered_rail"),
 | 
				
			||||||
 | 
						PRISMARINE("prismarine"),
 | 
				
			||||||
 | 
						PRISMARINE_BRICK_SLAB("prismarine_brick_slab"),
 | 
				
			||||||
 | 
						PRISMARINE_BRICK_STAIRS("prismarine_brick_stairs"),
 | 
				
			||||||
 | 
						PRISMARINE_BRICKS("prismarine_bricks"),
 | 
				
			||||||
 | 
						PRISMARINE_SLAB("prismarine_slab"),
 | 
				
			||||||
 | 
						PRISMARINE_STAIRS("prismarine_stairs"),
 | 
				
			||||||
 | 
						PRISMARINE_WALL("prismarine_wall"),
 | 
				
			||||||
 | 
						PUMPKIN("pumpkin"),
 | 
				
			||||||
 | 
						PUMPKIN_STEM("pumpkin_stem"),
 | 
				
			||||||
 | 
						PURPLE_BANNER("purple_banner"),
 | 
				
			||||||
 | 
						PURPLE_BED("purple_bed"),
 | 
				
			||||||
 | 
						PURPLE_CANDLE("purple_candle"),
 | 
				
			||||||
 | 
						PURPLE_CANDLE_CAKE("purple_candle_cake"),
 | 
				
			||||||
 | 
						PURPLE_CARPET("purple_carpet"),
 | 
				
			||||||
 | 
						PURPLE_CONCRETE("purple_concrete"),
 | 
				
			||||||
 | 
						PURPLE_CONCRETE_POWDER("purple_concrete_powder"),
 | 
				
			||||||
 | 
						PURPLE_GLAZED_TERRACOTTA("purple_glazed_terracotta"),
 | 
				
			||||||
 | 
						PURPLE_SHULKER_BOX("purple_shulker_box"),
 | 
				
			||||||
 | 
						PURPLE_STAINED_GLASS("purple_stained_glass"),
 | 
				
			||||||
 | 
						PURPLE_STAINED_GLASS_PANE("purple_stained_glass_pane"),
 | 
				
			||||||
 | 
						PURPLE_TERRACOTTA("purple_terracotta"),
 | 
				
			||||||
 | 
						PURPLE_WALL_BANNER("purple_wall_banner"),
 | 
				
			||||||
 | 
						PURPLE_WOOL("purple_wool"),
 | 
				
			||||||
 | 
						PURPUR_BLOCK("purpur_block"),
 | 
				
			||||||
 | 
						PURPUR_PILLAR("purpur_pillar"),
 | 
				
			||||||
 | 
						PURPUR_SLAB("purpur_slab"),
 | 
				
			||||||
 | 
						PURPUR_STAIRS("purpur_stairs"),
 | 
				
			||||||
 | 
						QUARTZ_BLOCK("quartz_block"),
 | 
				
			||||||
 | 
						QUARTZ_BRICKS("quartz_bricks"),
 | 
				
			||||||
 | 
						QUARTZ_PILLAR("quartz_pillar"),
 | 
				
			||||||
 | 
						QUARTZ_SLAB("quartz_slab"),
 | 
				
			||||||
 | 
						QUARTZ_STAIRS("quartz_stairs"),
 | 
				
			||||||
 | 
						RAIL("rail"),
 | 
				
			||||||
 | 
						RAW_COPPER_BLOCK("raw_copper_block"),
 | 
				
			||||||
 | 
						RAW_GOLD_BLOCK("raw_gold_block"),
 | 
				
			||||||
 | 
						RAW_IRON_BLOCK("raw_iron_block"),
 | 
				
			||||||
 | 
						RED_BANNER("red_banner"),
 | 
				
			||||||
 | 
						RED_BED("red_bed"),
 | 
				
			||||||
 | 
						RED_CANDLE("red_candle"),
 | 
				
			||||||
 | 
						RED_CANDLE_CAKE("red_candle_cake"),
 | 
				
			||||||
 | 
						RED_CARPET("red_carpet"),
 | 
				
			||||||
 | 
						RED_CONCRETE("red_concrete"),
 | 
				
			||||||
 | 
						RED_CONCRETE_POWDER("red_concrete_powder"),
 | 
				
			||||||
 | 
						RED_GLAZED_TERRACOTTA("red_glazed_terracotta"),
 | 
				
			||||||
 | 
						RED_MUSHROOM("red_mushroom"),
 | 
				
			||||||
 | 
						RED_MUSHROOM_BLOCK("red_mushroom_block"),
 | 
				
			||||||
 | 
						RED_NETHER_BRICK_SLAB("red_nether_brick_slab"),
 | 
				
			||||||
 | 
						RED_NETHER_BRICK_STAIRS("red_nether_brick_stairs"),
 | 
				
			||||||
 | 
						RED_NETHER_BRICK_WALL("red_nether_brick_wall"),
 | 
				
			||||||
 | 
						RED_NETHER_BRICKS("red_nether_bricks"),
 | 
				
			||||||
 | 
						RED_SAND("red_sand"),
 | 
				
			||||||
 | 
						RED_SANDSTONE("red_sandstone"),
 | 
				
			||||||
 | 
						RED_SANDSTONE_SLAB("red_sandstone_slab"),
 | 
				
			||||||
 | 
						RED_SANDSTONE_STAIRS("red_sandstone_stairs"),
 | 
				
			||||||
 | 
						RED_SANDSTONE_WALL("red_sandstone_wall"),
 | 
				
			||||||
 | 
						RED_SHULKER_BOX("red_shulker_box"),
 | 
				
			||||||
 | 
						RED_STAINED_GLASS("red_stained_glass"),
 | 
				
			||||||
 | 
						RED_STAINED_GLASS_PANE("red_stained_glass_pane"),
 | 
				
			||||||
 | 
						RED_TERRACOTTA("red_terracotta"),
 | 
				
			||||||
 | 
						RED_TULIP("red_tulip"),
 | 
				
			||||||
 | 
						RED_WALL_BANNER("red_wall_banner"),
 | 
				
			||||||
 | 
						RED_WOOL("red_wool"),
 | 
				
			||||||
 | 
						REDSTONE_BLOCK("redstone_block"),
 | 
				
			||||||
 | 
						REDSTONE_LAMP("redstone_lamp"),
 | 
				
			||||||
 | 
						REDSTONE_ORE("redstone_ore"),
 | 
				
			||||||
 | 
						REDSTONE_TORCH("redstone_torch"),
 | 
				
			||||||
 | 
						REDSTONE_WALL_TORCH("redstone_wall_torch"),
 | 
				
			||||||
 | 
						REDSTONE_WIRE("redstone_wire"),
 | 
				
			||||||
 | 
						REPEATER("repeater"),
 | 
				
			||||||
 | 
						REPEATING_COMMAND_BLOCK("repeating_command_block"),
 | 
				
			||||||
 | 
						RESPAWN_ANCHOR("respawn_anchor"),
 | 
				
			||||||
 | 
						ROOTED_DIRT("rooted_dirt"),
 | 
				
			||||||
 | 
						ROSE_BUSH("rose_bush"),
 | 
				
			||||||
 | 
						SAND("sand"),
 | 
				
			||||||
 | 
						SANDSTONE("sandstone"),
 | 
				
			||||||
 | 
						SANDSTONE_SLAB("sandstone_slab"),
 | 
				
			||||||
 | 
						SANDSTONE_STAIRS("sandstone_stairs"),
 | 
				
			||||||
 | 
						SANDSTONE_WALL("sandstone_wall"),
 | 
				
			||||||
 | 
						SCAFFOLDING("scaffolding"),
 | 
				
			||||||
 | 
						SCULK_SENSOR("sculk_sensor"),
 | 
				
			||||||
 | 
						SEA_LANTERN("sea_lantern"),
 | 
				
			||||||
 | 
						SEA_PICKLE("sea_pickle"),
 | 
				
			||||||
 | 
						SEAGRASS("seagrass"),
 | 
				
			||||||
 | 
						SHROOMLIGHT("shroomlight"),
 | 
				
			||||||
 | 
						SHULKER_BOX("shulker_box"),
 | 
				
			||||||
 | 
						SKELETON_SKULL("skeleton_skull"),
 | 
				
			||||||
 | 
						SKELETON_WALL_SKULL("skeleton_wall_skull"),
 | 
				
			||||||
 | 
						SLIME_BLOCK("slime_block"),
 | 
				
			||||||
 | 
						SMALL_AMETHYST_BUD("small_amethyst_bud"),
 | 
				
			||||||
 | 
						SMALL_DRIPLEAF("small_dripleaf"),
 | 
				
			||||||
 | 
						SMITHING_TABLE("smithing_table"),
 | 
				
			||||||
 | 
						SMOKER("smoker"),
 | 
				
			||||||
 | 
						SMOOTH_BASALT("smooth_basalt"),
 | 
				
			||||||
 | 
						SMOOTH_QUARTZ("smooth_quartz"),
 | 
				
			||||||
 | 
						SMOOTH_QUARTZ_SLAB("smooth_quartz_slab"),
 | 
				
			||||||
 | 
						SMOOTH_QUARTZ_STAIRS("smooth_quartz_stairs"),
 | 
				
			||||||
 | 
						SMOOTH_RED_SANDSTONE("smooth_red_sandstone"),
 | 
				
			||||||
 | 
						SMOOTH_RED_SANDSTONE_SLAB("smooth_red_sandstone_slab"),
 | 
				
			||||||
 | 
						SMOOTH_RED_SANDSTONE_STAIRS("smooth_red_sandstone_stairs"),
 | 
				
			||||||
 | 
						SMOOTH_SANDSTONE("smooth_sandstone"),
 | 
				
			||||||
 | 
						SMOOTH_SANDSTONE_SLAB("smooth_sandstone_slab"),
 | 
				
			||||||
 | 
						SMOOTH_SANDSTONE_STAIRS("smooth_sandstone_stairs"),
 | 
				
			||||||
 | 
						SMOOTH_STONE("smooth_stone"),
 | 
				
			||||||
 | 
						SMOOTH_STONE_SLAB("smooth_stone_slab"),
 | 
				
			||||||
 | 
						SNOW("snow"),
 | 
				
			||||||
 | 
						SNOW_BLOCK("snow_block"),
 | 
				
			||||||
 | 
						SOUL_CAMPFIRE("soul_campfire"),
 | 
				
			||||||
 | 
						SOUL_FIRE("soul_fire"),
 | 
				
			||||||
 | 
						SOUL_LANTERN("soul_lantern"),
 | 
				
			||||||
 | 
						SOUL_SAND("soul_sand"),
 | 
				
			||||||
 | 
						SOUL_SOIL("soul_soil"),
 | 
				
			||||||
 | 
						SOUL_TORCH("soul_torch"),
 | 
				
			||||||
 | 
						SOUL_WALL_TORCH("soul_wall_torch"),
 | 
				
			||||||
 | 
						SPAWNER("spawner"),
 | 
				
			||||||
 | 
						SPONGE("sponge"),
 | 
				
			||||||
 | 
						SPORE_BLOSSOM("spore_blossom"),
 | 
				
			||||||
 | 
						SPRUCE_BUTTON("spruce_button"),
 | 
				
			||||||
 | 
						SPRUCE_DOOR("spruce_door"),
 | 
				
			||||||
 | 
						SPRUCE_FENCE("spruce_fence"),
 | 
				
			||||||
 | 
						SPRUCE_FENCE_GATE("spruce_fence_gate"),
 | 
				
			||||||
 | 
						SPRUCE_LEAVES("spruce_leaves"),
 | 
				
			||||||
 | 
						SPRUCE_LOG("spruce_log"),
 | 
				
			||||||
 | 
						SPRUCE_PLANKS("spruce_planks"),
 | 
				
			||||||
 | 
						SPRUCE_PRESSURE_PLATE("spruce_pressure_plate"),
 | 
				
			||||||
 | 
						SPRUCE_SAPLING("spruce_sapling"),
 | 
				
			||||||
 | 
						SPRUCE_SIGN("spruce_sign"),
 | 
				
			||||||
 | 
						SPRUCE_SLAB("spruce_slab"),
 | 
				
			||||||
 | 
						SPRUCE_STAIRS("spruce_stairs"),
 | 
				
			||||||
 | 
						SPRUCE_TRAPDOOR("spruce_trapdoor"),
 | 
				
			||||||
 | 
						SPRUCE_WALL_SIGN("spruce_wall_sign"),
 | 
				
			||||||
 | 
						SPRUCE_WOOD("spruce_wood"),
 | 
				
			||||||
 | 
						STICKY_PISTON("sticky_piston"),
 | 
				
			||||||
 | 
						STONE("stone"),
 | 
				
			||||||
 | 
						STONE_BRICK_SLAB("stone_brick_slab"),
 | 
				
			||||||
 | 
						STONE_BRICK_STAIRS("stone_brick_stairs"),
 | 
				
			||||||
 | 
						STONE_BRICK_WALL("stone_brick_wall"),
 | 
				
			||||||
 | 
						STONE_BRICKS("stone_bricks"),
 | 
				
			||||||
 | 
						STONE_BUTTON("stone_button"),
 | 
				
			||||||
 | 
						STONE_PRESSURE_PLATE("stone_pressure_plate"),
 | 
				
			||||||
 | 
						STONE_SLAB("stone_slab"),
 | 
				
			||||||
 | 
						STONE_STAIRS("stone_stairs"),
 | 
				
			||||||
 | 
						STONECUTTER("stonecutter"),
 | 
				
			||||||
 | 
						STRIPPED_ACACIA_LOG("stripped_acacia_log"),
 | 
				
			||||||
 | 
						STRIPPED_ACACIA_WOOD("stripped_acacia_wood"),
 | 
				
			||||||
 | 
						STRIPPED_BIRCH_LOG("stripped_birch_log"),
 | 
				
			||||||
 | 
						STRIPPED_BIRCH_WOOD("stripped_birch_wood"),
 | 
				
			||||||
 | 
						STRIPPED_CRIMSON_HYPHAE("stripped_crimson_hyphae"),
 | 
				
			||||||
 | 
						STRIPPED_CRIMSON_STEM("stripped_crimson_stem"),
 | 
				
			||||||
 | 
						STRIPPED_DARK_OAK_LOG("stripped_dark_oak_log"),
 | 
				
			||||||
 | 
						STRIPPED_DARK_OAK_WOOD("stripped_dark_oak_wood"),
 | 
				
			||||||
 | 
						STRIPPED_JUNGLE_LOG("stripped_jungle_log"),
 | 
				
			||||||
 | 
						STRIPPED_JUNGLE_WOOD("stripped_jungle_wood"),
 | 
				
			||||||
 | 
						STRIPPED_OAK_LOG("stripped_oak_log"),
 | 
				
			||||||
 | 
						STRIPPED_OAK_WOOD("stripped_oak_wood"),
 | 
				
			||||||
 | 
						STRIPPED_SPRUCE_LOG("stripped_spruce_log"),
 | 
				
			||||||
 | 
						STRIPPED_SPRUCE_WOOD("stripped_spruce_wood"),
 | 
				
			||||||
 | 
						STRIPPED_WARPED_HYPHAE("stripped_warped_hyphae"),
 | 
				
			||||||
 | 
						STRIPPED_WARPED_STEM("stripped_warped_stem"),
 | 
				
			||||||
 | 
						STRUCTURE_BLOCK("structure_block"),
 | 
				
			||||||
 | 
						STRUCTURE_VOID("structure_void"),
 | 
				
			||||||
 | 
						SUGAR_CANE("sugar_cane"),
 | 
				
			||||||
 | 
						SUNFLOWER("sunflower"),
 | 
				
			||||||
 | 
						SWEET_BERRY_BUSH("sweet_berry_bush"),
 | 
				
			||||||
 | 
						TALL_GRASS("tall_grass"),
 | 
				
			||||||
 | 
						TALL_SEAGRASS("tall_seagrass"),
 | 
				
			||||||
 | 
						TARGET("target"),
 | 
				
			||||||
 | 
						TERRACOTTA("terracotta"),
 | 
				
			||||||
 | 
						TINTED_GLASS("tinted_glass"),
 | 
				
			||||||
 | 
						TNT("tnt"),
 | 
				
			||||||
 | 
						TORCH("torch"),
 | 
				
			||||||
 | 
						TRAPPED_CHEST("trapped_chest"),
 | 
				
			||||||
 | 
						TRIPWIRE("tripwire"),
 | 
				
			||||||
 | 
						TRIPWIRE_HOOK("tripwire_hook"),
 | 
				
			||||||
 | 
						TUBE_CORAL("tube_coral"),
 | 
				
			||||||
 | 
						TUBE_CORAL_BLOCK("tube_coral_block"),
 | 
				
			||||||
 | 
						TUBE_CORAL_FAN("tube_coral_fan"),
 | 
				
			||||||
 | 
						TUBE_CORAL_WALL_FAN("tube_coral_wall_fan"),
 | 
				
			||||||
 | 
						TUFF("tuff"),
 | 
				
			||||||
 | 
						TURTLE_EGG("turtle_egg"),
 | 
				
			||||||
 | 
						TWISTING_VINES("twisting_vines"),
 | 
				
			||||||
 | 
						TWISTING_VINES_PLANT("twisting_vines_plant"),
 | 
				
			||||||
 | 
						VINE("vine"),
 | 
				
			||||||
 | 
						VOID_AIR("void_air"),
 | 
				
			||||||
 | 
						WALL_TORCH("wall_torch"),
 | 
				
			||||||
 | 
						WARPED_BUTTON("warped_button"),
 | 
				
			||||||
 | 
						WARPED_DOOR("warped_door"),
 | 
				
			||||||
 | 
						WARPED_FENCE("warped_fence"),
 | 
				
			||||||
 | 
						WARPED_FENCE_GATE("warped_fence_gate"),
 | 
				
			||||||
 | 
						WARPED_FUNGUS("warped_fungus"),
 | 
				
			||||||
 | 
						WARPED_HYPHAE("warped_hyphae"),
 | 
				
			||||||
 | 
						WARPED_NYLIUM("warped_nylium"),
 | 
				
			||||||
 | 
						WARPED_PLANKS("warped_planks"),
 | 
				
			||||||
 | 
						WARPED_PRESSURE_PLATE("warped_pressure_plate"),
 | 
				
			||||||
 | 
						WARPED_ROOTS("warped_roots"),
 | 
				
			||||||
 | 
						WARPED_SIGN("warped_sign"),
 | 
				
			||||||
 | 
						WARPED_SLAB("warped_slab"),
 | 
				
			||||||
 | 
						WARPED_STAIRS("warped_stairs"),
 | 
				
			||||||
 | 
						WARPED_STEM("warped_stem"),
 | 
				
			||||||
 | 
						WARPED_TRAPDOOR("warped_trapdoor"),
 | 
				
			||||||
 | 
						WARPED_WALL_SIGN("warped_wall_sign"),
 | 
				
			||||||
 | 
						WARPED_WART_BLOCK("warped_wart_block"),
 | 
				
			||||||
 | 
						WATER("water"),
 | 
				
			||||||
 | 
						WATER_CAULDRON("water_cauldron"),
 | 
				
			||||||
 | 
						WAXED_COPPER_BLOCK("waxed_copper_block"),
 | 
				
			||||||
 | 
						WAXED_CUT_COPPER("waxed_cut_copper"),
 | 
				
			||||||
 | 
						WAXED_CUT_COPPER_SLAB("waxed_cut_copper_slab"),
 | 
				
			||||||
 | 
						WAXED_CUT_COPPER_STAIRS("waxed_cut_copper_stairs"),
 | 
				
			||||||
 | 
						WAXED_EXPOSED_COPPER("waxed_exposed_copper"),
 | 
				
			||||||
 | 
						WAXED_EXPOSED_CUT_COPPER("waxed_exposed_cut_copper"),
 | 
				
			||||||
 | 
						WAXED_EXPOSED_CUT_COPPER_SLAB("waxed_exposed_cut_copper_slab"),
 | 
				
			||||||
 | 
						WAXED_EXPOSED_CUT_COPPER_STAIRS("waxed_exposed_cut_copper_stairs"),
 | 
				
			||||||
 | 
						WAXED_OXIDIZED_COPPER("waxed_oxidized_copper"),
 | 
				
			||||||
 | 
						WAXED_OXIDIZED_CUT_COPPER("waxed_oxidized_cut_copper"),
 | 
				
			||||||
 | 
						WAXED_OXIDIZED_CUT_COPPER_SLAB("waxed_oxidized_cut_copper_slab"),
 | 
				
			||||||
 | 
						WAXED_OXIDIZED_CUT_COPPER_STAIRS("waxed_oxidized_cut_copper_stairs"),
 | 
				
			||||||
 | 
						WAXED_WEATHERED_COPPER("waxed_weathered_copper"),
 | 
				
			||||||
 | 
						WAXED_WEATHERED_CUT_COPPER("waxed_weathered_cut_copper"),
 | 
				
			||||||
 | 
						WAXED_WEATHERED_CUT_COPPER_SLAB("waxed_weathered_cut_copper_slab"),
 | 
				
			||||||
 | 
						WAXED_WEATHERED_CUT_COPPER_STAIRS("waxed_weathered_cut_copper_stairs"),
 | 
				
			||||||
 | 
						WEATHERED_COPPER("weathered_copper"),
 | 
				
			||||||
 | 
						WEATHERED_CUT_COPPER("weathered_cut_copper"),
 | 
				
			||||||
 | 
						WEATHERED_CUT_COPPER_SLAB("weathered_cut_copper_slab"),
 | 
				
			||||||
 | 
						WEATHERED_CUT_COPPER_STAIRS("weathered_cut_copper_stairs"),
 | 
				
			||||||
 | 
						WEEPING_VINES("weeping_vines"),
 | 
				
			||||||
 | 
						WEEPING_VINES_PLANT("weeping_vines_plant"),
 | 
				
			||||||
 | 
						WET_SPONGE("wet_sponge"),
 | 
				
			||||||
 | 
						WHEAT("wheat"),
 | 
				
			||||||
 | 
						WHITE_BANNER("white_banner"),
 | 
				
			||||||
 | 
						WHITE_BED("white_bed"),
 | 
				
			||||||
 | 
						WHITE_CANDLE("white_candle"),
 | 
				
			||||||
 | 
						WHITE_CANDLE_CAKE("white_candle_cake"),
 | 
				
			||||||
 | 
						WHITE_CARPET("white_carpet"),
 | 
				
			||||||
 | 
						WHITE_CONCRETE("white_concrete"),
 | 
				
			||||||
 | 
						WHITE_CONCRETE_POWDER("white_concrete_powder"),
 | 
				
			||||||
 | 
						WHITE_GLAZED_TERRACOTTA("white_glazed_terracotta"),
 | 
				
			||||||
 | 
						WHITE_SHULKER_BOX("white_shulker_box"),
 | 
				
			||||||
 | 
						WHITE_STAINED_GLASS("white_stained_glass"),
 | 
				
			||||||
 | 
						WHITE_STAINED_GLASS_PANE("white_stained_glass_pane"),
 | 
				
			||||||
 | 
						WHITE_TERRACOTTA("white_terracotta"),
 | 
				
			||||||
 | 
						WHITE_TULIP("white_tulip"),
 | 
				
			||||||
 | 
						WHITE_WALL_BANNER("white_wall_banner"),
 | 
				
			||||||
 | 
						WHITE_WOOL("white_wool"),
 | 
				
			||||||
 | 
						WITHER_ROSE("wither_rose"),
 | 
				
			||||||
 | 
						WITHER_SKELETON_SKULL("wither_skeleton_skull"),
 | 
				
			||||||
 | 
						WITHER_SKELETON_WALL_SKULL("wither_skeleton_wall_skull"),
 | 
				
			||||||
 | 
						YELLOW_BANNER("yellow_banner"),
 | 
				
			||||||
 | 
						YELLOW_BED("yellow_bed"),
 | 
				
			||||||
 | 
						YELLOW_CANDLE("yellow_candle"),
 | 
				
			||||||
 | 
						YELLOW_CANDLE_CAKE("yellow_candle_cake"),
 | 
				
			||||||
 | 
						YELLOW_CARPET("yellow_carpet"),
 | 
				
			||||||
 | 
						YELLOW_CONCRETE("yellow_concrete"),
 | 
				
			||||||
 | 
						YELLOW_CONCRETE_POWDER("yellow_concrete_powder"),
 | 
				
			||||||
 | 
						YELLOW_GLAZED_TERRACOTTA("yellow_glazed_terracotta"),
 | 
				
			||||||
 | 
						YELLOW_SHULKER_BOX("yellow_shulker_box"),
 | 
				
			||||||
 | 
						YELLOW_STAINED_GLASS("yellow_stained_glass"),
 | 
				
			||||||
 | 
						YELLOW_STAINED_GLASS_PANE("yellow_stained_glass_pane"),
 | 
				
			||||||
 | 
						YELLOW_TERRACOTTA("yellow_terracotta"),
 | 
				
			||||||
 | 
						YELLOW_WALL_BANNER("yellow_wall_banner"),
 | 
				
			||||||
 | 
						YELLOW_WOOL("yellow_wool"),
 | 
				
			||||||
 | 
						ZOMBIE_HEAD("zombie_head"),
 | 
				
			||||||
 | 
						ZOMBIE_WALL_HEAD("zombie_wall_head");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun toPath(): ResourcePath
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return ResourcePath.ofNamespace("minecraft", id)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					package gay.pizza.foundation.drywall.enums
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum class ConditionType(private val value: String)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						SURVIVES_EXPLOSION("survives_explosion");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						override fun toString(): String
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return "minecraft:$value"
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					package gay.pizza.foundation.drywall.enums
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					data class EntryPoint(val name: String)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						companion object
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							final val MAIN = EntryPoint("main")
 | 
				
			||||||
 | 
							final val CLIENT = EntryPoint("client")
 | 
				
			||||||
 | 
							final val SERVER = EntryPoint("server")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					package gay.pizza.foundation.drywall.enums
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum class EnvironmentType(private val value: String)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						EVERYWHERE("*"),
 | 
				
			||||||
 | 
						CLIENT("client"),
 | 
				
			||||||
 | 
						SERVER("server");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						override fun toString(): String
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return value
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										342
									
								
								src/main/kotlin/gay/pizza/foundation/drywall/enums/Items.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										342
									
								
								src/main/kotlin/gay/pizza/foundation/drywall/enums/Items.kt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,342 @@
 | 
				
			|||||||
 | 
					package gay.pizza.foundation.drywall.enums
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import gay.pizza.foundation.drywall.util.ResourcePath
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum class Items(private val id: String)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						ACACIA_BOAT("acacia_boat"),
 | 
				
			||||||
 | 
						AMETHYST_SHARD("amethyst_shard"),
 | 
				
			||||||
 | 
						APPLE("apple"),
 | 
				
			||||||
 | 
						ARMOR_STAND("armor_stand"),
 | 
				
			||||||
 | 
						ARROW("arrow"),
 | 
				
			||||||
 | 
						AXOLOTL_BUCKET("axolotl_bucket"),
 | 
				
			||||||
 | 
						AXOLOTL_SPAWN_EGG("axolotl_spawn_egg"),
 | 
				
			||||||
 | 
						BAKED_POTATO("baked_potato"),
 | 
				
			||||||
 | 
						BAT_SPAWN_EGG("bat_spawn_egg"),
 | 
				
			||||||
 | 
						BEE_SPAWN_EGG("bee_spawn_egg"),
 | 
				
			||||||
 | 
						BEEF("beef"),
 | 
				
			||||||
 | 
						BEETROOT("beetroot"),
 | 
				
			||||||
 | 
						BEETROOT_SEEDS("beetroot_seeds"),
 | 
				
			||||||
 | 
						BEETROOT_SOUP("beetroot_soup"),
 | 
				
			||||||
 | 
						BIRCH_BOAT("birch_boat"),
 | 
				
			||||||
 | 
						BLACK_DYE("black_dye"),
 | 
				
			||||||
 | 
						BLAZE_POWDER("blaze_powder"),
 | 
				
			||||||
 | 
						BLAZE_ROD("blaze_rod"),
 | 
				
			||||||
 | 
						BLAZE_SPAWN_EGG("blaze_spawn_egg"),
 | 
				
			||||||
 | 
						BLUE_DYE("blue_dye"),
 | 
				
			||||||
 | 
						BONE("bone"),
 | 
				
			||||||
 | 
						BONE_MEAL("bone_meal"),
 | 
				
			||||||
 | 
						BOOK("book"),
 | 
				
			||||||
 | 
						BOW("bow"),
 | 
				
			||||||
 | 
						BOWL("bowl"),
 | 
				
			||||||
 | 
						BREAD("bread"),
 | 
				
			||||||
 | 
						BRICK("brick"),
 | 
				
			||||||
 | 
						BROWN_DYE("brown_dye"),
 | 
				
			||||||
 | 
						BUCKET("bucket"),
 | 
				
			||||||
 | 
						BUNDLE("bundle"),
 | 
				
			||||||
 | 
						CARROT("carrot"),
 | 
				
			||||||
 | 
						CARROT_ON_A_STICK("carrot_on_a_stick"),
 | 
				
			||||||
 | 
						CAT_SPAWN_EGG("cat_spawn_egg"),
 | 
				
			||||||
 | 
						CAVE_SPIDER_SPAWN_EGG("cave_spider_spawn_egg"),
 | 
				
			||||||
 | 
						CHAINMAIL_BOOTS("chainmail_boots"),
 | 
				
			||||||
 | 
						CHAINMAIL_CHESTPLATE("chainmail_chestplate"),
 | 
				
			||||||
 | 
						CHAINMAIL_HELMET("chainmail_helmet"),
 | 
				
			||||||
 | 
						CHAINMAIL_LEGGINGS("chainmail_leggings"),
 | 
				
			||||||
 | 
						CHARCOAL("charcoal"),
 | 
				
			||||||
 | 
						CHEST_MINECART("chest_minecart"),
 | 
				
			||||||
 | 
						CHICKEN("chicken"),
 | 
				
			||||||
 | 
						CHICKEN_SPAWN_EGG("chicken_spawn_egg"),
 | 
				
			||||||
 | 
						CHORUS_FRUIT("chorus_fruit"),
 | 
				
			||||||
 | 
						CLAY_BALL("clay_ball"),
 | 
				
			||||||
 | 
						CLOCK("clock"),
 | 
				
			||||||
 | 
						COAL("coal"),
 | 
				
			||||||
 | 
						COCOA_BEANS("cocoa_beans"),
 | 
				
			||||||
 | 
						COD("cod"),
 | 
				
			||||||
 | 
						COD_BUCKET("cod_bucket"),
 | 
				
			||||||
 | 
						COD_SPAWN_EGG("cod_spawn_egg"),
 | 
				
			||||||
 | 
						COMMAND_BLOCK_MINECART("command_block_minecart"),
 | 
				
			||||||
 | 
						COMPASS("compass"),
 | 
				
			||||||
 | 
						COOKED_BEEF("cooked_beef"),
 | 
				
			||||||
 | 
						COOKED_CHICKEN("cooked_chicken"),
 | 
				
			||||||
 | 
						COOKED_COD("cooked_cod"),
 | 
				
			||||||
 | 
						COOKED_MUTTON("cooked_mutton"),
 | 
				
			||||||
 | 
						COOKED_PORKCHOP("cooked_porkchop"),
 | 
				
			||||||
 | 
						COOKED_RABBIT("cooked_rabbit"),
 | 
				
			||||||
 | 
						COOKED_SALMON("cooked_salmon"),
 | 
				
			||||||
 | 
						COOKIE("cookie"),
 | 
				
			||||||
 | 
						COPPER_INGOT("copper_ingot"),
 | 
				
			||||||
 | 
						COW_SPAWN_EGG("cow_spawn_egg"),
 | 
				
			||||||
 | 
						CREEPER_BANNER_PATTERN("creeper_banner_pattern"),
 | 
				
			||||||
 | 
						CREEPER_SPAWN_EGG("creeper_spawn_egg"),
 | 
				
			||||||
 | 
						CROSSBOW("crossbow"),
 | 
				
			||||||
 | 
						CYAN_DYE("cyan_dye"),
 | 
				
			||||||
 | 
						DARK_OAK_BOAT("dark_oak_boat"),
 | 
				
			||||||
 | 
						DEBUG_STICK("debug_stick"),
 | 
				
			||||||
 | 
						DIAMOND("diamond"),
 | 
				
			||||||
 | 
						DIAMOND_AXE("diamond_axe"),
 | 
				
			||||||
 | 
						DIAMOND_BOOTS("diamond_boots"),
 | 
				
			||||||
 | 
						DIAMOND_CHESTPLATE("diamond_chestplate"),
 | 
				
			||||||
 | 
						DIAMOND_HELMET("diamond_helmet"),
 | 
				
			||||||
 | 
						DIAMOND_HOE("diamond_hoe"),
 | 
				
			||||||
 | 
						DIAMOND_HORSE_ARMOR("diamond_horse_armor"),
 | 
				
			||||||
 | 
						DIAMOND_LEGGINGS("diamond_leggings"),
 | 
				
			||||||
 | 
						DIAMOND_PICKAXE("diamond_pickaxe"),
 | 
				
			||||||
 | 
						DIAMOND_SHOVEL("diamond_shovel"),
 | 
				
			||||||
 | 
						DIAMOND_SWORD("diamond_sword"),
 | 
				
			||||||
 | 
						DOLPHIN_SPAWN_EGG("dolphin_spawn_egg"),
 | 
				
			||||||
 | 
						DONKEY_SPAWN_EGG("donkey_spawn_egg"),
 | 
				
			||||||
 | 
						DRAGON_BREATH("dragon_breath"),
 | 
				
			||||||
 | 
						DRIED_KELP("dried_kelp"),
 | 
				
			||||||
 | 
						DROWNED_SPAWN_EGG("drowned_spawn_egg"),
 | 
				
			||||||
 | 
						EGG("egg"),
 | 
				
			||||||
 | 
						ELDER_GUARDIAN_SPAWN_EGG("elder_guardian_spawn_egg"),
 | 
				
			||||||
 | 
						ELYTRA("elytra"),
 | 
				
			||||||
 | 
						EMERALD("emerald"),
 | 
				
			||||||
 | 
						ENCHANTED_BOOK("enchanted_book"),
 | 
				
			||||||
 | 
						ENCHANTED_GOLDEN_APPLE("enchanted_golden_apple"),
 | 
				
			||||||
 | 
						END_CRYSTAL("end_crystal"),
 | 
				
			||||||
 | 
						ENDER_EYE("ender_eye"),
 | 
				
			||||||
 | 
						ENDER_PEARL("ender_pearl"),
 | 
				
			||||||
 | 
						ENDERMAN_SPAWN_EGG("enderman_spawn_egg"),
 | 
				
			||||||
 | 
						ENDERMITE_SPAWN_EGG("endermite_spawn_egg"),
 | 
				
			||||||
 | 
						EVOKER_SPAWN_EGG("evoker_spawn_egg"),
 | 
				
			||||||
 | 
						EXPERIENCE_BOTTLE("experience_bottle"),
 | 
				
			||||||
 | 
						FEATHER("feather"),
 | 
				
			||||||
 | 
						FERMENTED_SPIDER_EYE("fermented_spider_eye"),
 | 
				
			||||||
 | 
						FILLED_MAP("filled_map"),
 | 
				
			||||||
 | 
						FIRE_CHARGE("fire_charge"),
 | 
				
			||||||
 | 
						FIREWORK_ROCKET("firework_rocket"),
 | 
				
			||||||
 | 
						FIREWORK_STAR("firework_star"),
 | 
				
			||||||
 | 
						FISHING_ROD("fishing_rod"),
 | 
				
			||||||
 | 
						FLINT("flint"),
 | 
				
			||||||
 | 
						FLINT_AND_STEEL("flint_and_steel"),
 | 
				
			||||||
 | 
						FLOWER_BANNER_PATTERN("flower_banner_pattern"),
 | 
				
			||||||
 | 
						FOX_SPAWN_EGG("fox_spawn_egg"),
 | 
				
			||||||
 | 
						FURNACE_MINECART("furnace_minecart"),
 | 
				
			||||||
 | 
						GHAST_SPAWN_EGG("ghast_spawn_egg"),
 | 
				
			||||||
 | 
						GHAST_TEAR("ghast_tear"),
 | 
				
			||||||
 | 
						GLASS_BOTTLE("glass_bottle"),
 | 
				
			||||||
 | 
						GLISTERING_MELON_SLICE("glistering_melon_slice"),
 | 
				
			||||||
 | 
						GLOBE_BANNER_PATTERN("globe_banner_pattern"),
 | 
				
			||||||
 | 
						GLOW_BERRIES("glow_berries"),
 | 
				
			||||||
 | 
						GLOW_INK_SAC("glow_ink_sac"),
 | 
				
			||||||
 | 
						GLOW_ITEM_FRAME("glow_item_frame"),
 | 
				
			||||||
 | 
						GLOW_SQUID_SPAWN_EGG("glow_squid_spawn_egg"),
 | 
				
			||||||
 | 
						GLOWSTONE_DUST("glowstone_dust"),
 | 
				
			||||||
 | 
						GOAT_SPAWN_EGG("goat_spawn_egg"),
 | 
				
			||||||
 | 
						GOLD_INGOT("gold_ingot"),
 | 
				
			||||||
 | 
						GOLD_NUGGET("gold_nugget"),
 | 
				
			||||||
 | 
						GOLDEN_APPLE("golden_apple"),
 | 
				
			||||||
 | 
						GOLDEN_AXE("golden_axe"),
 | 
				
			||||||
 | 
						GOLDEN_BOOTS("golden_boots"),
 | 
				
			||||||
 | 
						GOLDEN_CARROT("golden_carrot"),
 | 
				
			||||||
 | 
						GOLDEN_CHESTPLATE("golden_chestplate"),
 | 
				
			||||||
 | 
						GOLDEN_HELMET("golden_helmet"),
 | 
				
			||||||
 | 
						GOLDEN_HOE("golden_hoe"),
 | 
				
			||||||
 | 
						GOLDEN_HORSE_ARMOR("golden_horse_armor"),
 | 
				
			||||||
 | 
						GOLDEN_LEGGINGS("golden_leggings"),
 | 
				
			||||||
 | 
						GOLDEN_PICKAXE("golden_pickaxe"),
 | 
				
			||||||
 | 
						GOLDEN_SHOVEL("golden_shovel"),
 | 
				
			||||||
 | 
						GOLDEN_SWORD("golden_sword"),
 | 
				
			||||||
 | 
						GRAY_DYE("gray_dye"),
 | 
				
			||||||
 | 
						GREEN_DYE("green_dye"),
 | 
				
			||||||
 | 
						GUARDIAN_SPAWN_EGG("guardian_spawn_egg"),
 | 
				
			||||||
 | 
						GUNPOWDER("gunpowder"),
 | 
				
			||||||
 | 
						HEART_OF_THE_SEA("heart_of_the_sea"),
 | 
				
			||||||
 | 
						HOGLIN_SPAWN_EGG("hoglin_spawn_egg"),
 | 
				
			||||||
 | 
						HONEY_BOTTLE("honey_bottle"),
 | 
				
			||||||
 | 
						HONEYCOMB("honeycomb"),
 | 
				
			||||||
 | 
						HOPPER_MINECART("hopper_minecart"),
 | 
				
			||||||
 | 
						HORSE_SPAWN_EGG("horse_spawn_egg"),
 | 
				
			||||||
 | 
						HUSK_SPAWN_EGG("husk_spawn_egg"),
 | 
				
			||||||
 | 
						INK_SAC("ink_sac"),
 | 
				
			||||||
 | 
						IRON_AXE("iron_axe"),
 | 
				
			||||||
 | 
						IRON_BOOTS("iron_boots"),
 | 
				
			||||||
 | 
						IRON_CHESTPLATE("iron_chestplate"),
 | 
				
			||||||
 | 
						IRON_HELMET("iron_helmet"),
 | 
				
			||||||
 | 
						IRON_HOE("iron_hoe"),
 | 
				
			||||||
 | 
						IRON_HORSE_ARMOR("iron_horse_armor"),
 | 
				
			||||||
 | 
						IRON_INGOT("iron_ingot"),
 | 
				
			||||||
 | 
						IRON_LEGGINGS("iron_leggings"),
 | 
				
			||||||
 | 
						IRON_NUGGET("iron_nugget"),
 | 
				
			||||||
 | 
						IRON_PICKAXE("iron_pickaxe"),
 | 
				
			||||||
 | 
						IRON_SHOVEL("iron_shovel"),
 | 
				
			||||||
 | 
						IRON_SWORD("iron_sword"),
 | 
				
			||||||
 | 
						ITEM_FRAME("item_frame"),
 | 
				
			||||||
 | 
						JUNGLE_BOAT("jungle_boat"),
 | 
				
			||||||
 | 
						KNOWLEDGE_BOOK("knowledge_book"),
 | 
				
			||||||
 | 
						LAPIS_LAZULI("lapis_lazuli"),
 | 
				
			||||||
 | 
						LAVA_BUCKET("lava_bucket"),
 | 
				
			||||||
 | 
						LEAD("lead"),
 | 
				
			||||||
 | 
						LEATHER("leather"),
 | 
				
			||||||
 | 
						LEATHER_BOOTS("leather_boots"),
 | 
				
			||||||
 | 
						LEATHER_CHESTPLATE("leather_chestplate"),
 | 
				
			||||||
 | 
						LEATHER_HELMET("leather_helmet"),
 | 
				
			||||||
 | 
						LEATHER_HORSE_ARMOR("leather_horse_armor"),
 | 
				
			||||||
 | 
						LEATHER_LEGGINGS("leather_leggings"),
 | 
				
			||||||
 | 
						LIGHT_BLUE_DYE("light_blue_dye"),
 | 
				
			||||||
 | 
						LIGHT_GRAY_DYE("light_gray_dye"),
 | 
				
			||||||
 | 
						LIME_DYE("lime_dye"),
 | 
				
			||||||
 | 
						LINGERING_POTION("lingering_potion"),
 | 
				
			||||||
 | 
						LLAMA_SPAWN_EGG("llama_spawn_egg"),
 | 
				
			||||||
 | 
						MAGENTA_DYE("magenta_dye"),
 | 
				
			||||||
 | 
						MAGMA_CREAM("magma_cream"),
 | 
				
			||||||
 | 
						MAGMA_CUBE_SPAWN_EGG("magma_cube_spawn_egg"),
 | 
				
			||||||
 | 
						MAP("map"),
 | 
				
			||||||
 | 
						MELON_SEEDS("melon_seeds"),
 | 
				
			||||||
 | 
						MELON_SLICE("melon_slice"),
 | 
				
			||||||
 | 
						MILK_BUCKET("milk_bucket"),
 | 
				
			||||||
 | 
						MINECART("minecart"),
 | 
				
			||||||
 | 
						MOJANG_BANNER_PATTERN("mojang_banner_pattern"),
 | 
				
			||||||
 | 
						MOOSHROOM_SPAWN_EGG("mooshroom_spawn_egg"),
 | 
				
			||||||
 | 
						MULE_SPAWN_EGG("mule_spawn_egg"),
 | 
				
			||||||
 | 
						MUSHROOM_STEW("mushroom_stew"),
 | 
				
			||||||
 | 
						MUSIC_DISC_11("music_disc_11"),
 | 
				
			||||||
 | 
						MUSIC_DISC_13("music_disc_13"),
 | 
				
			||||||
 | 
						MUSIC_DISC_BLOCKS("music_disc_blocks"),
 | 
				
			||||||
 | 
						MUSIC_DISC_CAT("music_disc_cat"),
 | 
				
			||||||
 | 
						MUSIC_DISC_CHIRP("music_disc_chirp"),
 | 
				
			||||||
 | 
						MUSIC_DISC_FAR("music_disc_far"),
 | 
				
			||||||
 | 
						MUSIC_DISC_MALL("music_disc_mall"),
 | 
				
			||||||
 | 
						MUSIC_DISC_MELLOHI("music_disc_mellohi"),
 | 
				
			||||||
 | 
						MUSIC_DISC_OTHERSIDE("music_disc_otherside"),
 | 
				
			||||||
 | 
						MUSIC_DISC_PIGSTEP("music_disc_pigstep"),
 | 
				
			||||||
 | 
						MUSIC_DISC_STAL("music_disc_stal"),
 | 
				
			||||||
 | 
						MUSIC_DISC_STRAD("music_disc_strad"),
 | 
				
			||||||
 | 
						MUSIC_DISC_WAIT("music_disc_wait"),
 | 
				
			||||||
 | 
						MUSIC_DISC_WARD("music_disc_ward"),
 | 
				
			||||||
 | 
						MUTTON("mutton"),
 | 
				
			||||||
 | 
						NAME_TAG("name_tag"),
 | 
				
			||||||
 | 
						NAUTILUS_SHELL("nautilus_shell"),
 | 
				
			||||||
 | 
						NETHER_BRICK("nether_brick"),
 | 
				
			||||||
 | 
						NETHER_STAR("nether_star"),
 | 
				
			||||||
 | 
						NETHERITE_AXE("netherite_axe"),
 | 
				
			||||||
 | 
						NETHERITE_BOOTS("netherite_boots"),
 | 
				
			||||||
 | 
						NETHERITE_CHESTPLATE("netherite_chestplate"),
 | 
				
			||||||
 | 
						NETHERITE_HELMET("netherite_helmet"),
 | 
				
			||||||
 | 
						NETHERITE_HOE("netherite_hoe"),
 | 
				
			||||||
 | 
						NETHERITE_INGOT("netherite_ingot"),
 | 
				
			||||||
 | 
						NETHERITE_LEGGINGS("netherite_leggings"),
 | 
				
			||||||
 | 
						NETHERITE_PICKAXE("netherite_pickaxe"),
 | 
				
			||||||
 | 
						NETHERITE_SCRAP("netherite_scrap"),
 | 
				
			||||||
 | 
						NETHERITE_SHOVEL("netherite_shovel"),
 | 
				
			||||||
 | 
						NETHERITE_SWORD("netherite_sword"),
 | 
				
			||||||
 | 
						OAK_BOAT("oak_boat"),
 | 
				
			||||||
 | 
						OCELOT_SPAWN_EGG("ocelot_spawn_egg"),
 | 
				
			||||||
 | 
						ORANGE_DYE("orange_dye"),
 | 
				
			||||||
 | 
						PAINTING("painting"),
 | 
				
			||||||
 | 
						PANDA_SPAWN_EGG("panda_spawn_egg"),
 | 
				
			||||||
 | 
						PAPER("paper"),
 | 
				
			||||||
 | 
						PARROT_SPAWN_EGG("parrot_spawn_egg"),
 | 
				
			||||||
 | 
						PHANTOM_MEMBRANE("phantom_membrane"),
 | 
				
			||||||
 | 
						PHANTOM_SPAWN_EGG("phantom_spawn_egg"),
 | 
				
			||||||
 | 
						PIG_SPAWN_EGG("pig_spawn_egg"),
 | 
				
			||||||
 | 
						PIGLIN_BRUTE_SPAWN_EGG("piglin_brute_spawn_egg"),
 | 
				
			||||||
 | 
						PIGLIN_SPAWN_EGG("piglin_spawn_egg"),
 | 
				
			||||||
 | 
						PILLAGER_SPAWN_EGG("pillager_spawn_egg"),
 | 
				
			||||||
 | 
						PINK_DYE("pink_dye"),
 | 
				
			||||||
 | 
						POISONOUS_POTATO("poisonous_potato"),
 | 
				
			||||||
 | 
						POLAR_BEAR_SPAWN_EGG("polar_bear_spawn_egg"),
 | 
				
			||||||
 | 
						POPPED_CHORUS_FRUIT("popped_chorus_fruit"),
 | 
				
			||||||
 | 
						PORKCHOP("porkchop"),
 | 
				
			||||||
 | 
						POTATO("potato"),
 | 
				
			||||||
 | 
						POTION("potion"),
 | 
				
			||||||
 | 
						POWDER_SNOW_BUCKET("powder_snow_bucket"),
 | 
				
			||||||
 | 
						PRISMARINE_CRYSTALS("prismarine_crystals"),
 | 
				
			||||||
 | 
						PRISMARINE_SHARD("prismarine_shard"),
 | 
				
			||||||
 | 
						PUFFERFISH("pufferfish"),
 | 
				
			||||||
 | 
						PUFFERFISH_BUCKET("pufferfish_bucket"),
 | 
				
			||||||
 | 
						PUFFERFISH_SPAWN_EGG("pufferfish_spawn_egg"),
 | 
				
			||||||
 | 
						PUMPKIN_PIE("pumpkin_pie"),
 | 
				
			||||||
 | 
						PUMPKIN_SEEDS("pumpkin_seeds"),
 | 
				
			||||||
 | 
						PURPLE_DYE("purple_dye"),
 | 
				
			||||||
 | 
						QUARTZ("quartz"),
 | 
				
			||||||
 | 
						RABBIT("rabbit"),
 | 
				
			||||||
 | 
						RABBIT_FOOT("rabbit_foot"),
 | 
				
			||||||
 | 
						RABBIT_HIDE("rabbit_hide"),
 | 
				
			||||||
 | 
						RABBIT_SPAWN_EGG("rabbit_spawn_egg"),
 | 
				
			||||||
 | 
						RABBIT_STEW("rabbit_stew"),
 | 
				
			||||||
 | 
						RAVAGER_SPAWN_EGG("ravager_spawn_egg"),
 | 
				
			||||||
 | 
						RAW_COPPER("raw_copper"),
 | 
				
			||||||
 | 
						RAW_GOLD("raw_gold"),
 | 
				
			||||||
 | 
						RAW_IRON("raw_iron"),
 | 
				
			||||||
 | 
						RED_DYE("red_dye"),
 | 
				
			||||||
 | 
						REDSTONE("redstone"),
 | 
				
			||||||
 | 
						ROTTEN_FLESH("rotten_flesh"),
 | 
				
			||||||
 | 
						SADDLE("saddle"),
 | 
				
			||||||
 | 
						SALMON("salmon"),
 | 
				
			||||||
 | 
						SALMON_BUCKET("salmon_bucket"),
 | 
				
			||||||
 | 
						SALMON_SPAWN_EGG("salmon_spawn_egg"),
 | 
				
			||||||
 | 
						SCUTE("scute"),
 | 
				
			||||||
 | 
						SHEARS("shears"),
 | 
				
			||||||
 | 
						SHEEP_SPAWN_EGG("sheep_spawn_egg"),
 | 
				
			||||||
 | 
						SHIELD("shield"),
 | 
				
			||||||
 | 
						SHULKER_SHELL("shulker_shell"),
 | 
				
			||||||
 | 
						SHULKER_SPAWN_EGG("shulker_spawn_egg"),
 | 
				
			||||||
 | 
						SILVERFISH_SPAWN_EGG("silverfish_spawn_egg"),
 | 
				
			||||||
 | 
						SKELETON_HORSE_SPAWN_EGG("skeleton_horse_spawn_egg"),
 | 
				
			||||||
 | 
						SKELETON_SPAWN_EGG("skeleton_spawn_egg"),
 | 
				
			||||||
 | 
						SKULL_BANNER_PATTERN("skull_banner_pattern"),
 | 
				
			||||||
 | 
						SLIME_BALL("slime_ball"),
 | 
				
			||||||
 | 
						SLIME_SPAWN_EGG("slime_spawn_egg"),
 | 
				
			||||||
 | 
						SNOWBALL("snowball"),
 | 
				
			||||||
 | 
						SPECTRAL_ARROW("spectral_arrow"),
 | 
				
			||||||
 | 
						SPIDER_EYE("spider_eye"),
 | 
				
			||||||
 | 
						SPIDER_SPAWN_EGG("spider_spawn_egg"),
 | 
				
			||||||
 | 
						SPLASH_POTION("splash_potion"),
 | 
				
			||||||
 | 
						SPRUCE_BOAT("spruce_boat"),
 | 
				
			||||||
 | 
						SPYGLASS("spyglass"),
 | 
				
			||||||
 | 
						SQUID_SPAWN_EGG("squid_spawn_egg"),
 | 
				
			||||||
 | 
						STICK("stick"),
 | 
				
			||||||
 | 
						STONE_AXE("stone_axe"),
 | 
				
			||||||
 | 
						STONE_HOE("stone_hoe"),
 | 
				
			||||||
 | 
						STONE_PICKAXE("stone_pickaxe"),
 | 
				
			||||||
 | 
						STONE_SHOVEL("stone_shovel"),
 | 
				
			||||||
 | 
						STONE_SWORD("stone_sword"),
 | 
				
			||||||
 | 
						STRAY_SPAWN_EGG("stray_spawn_egg"),
 | 
				
			||||||
 | 
						STRIDER_SPAWN_EGG("strider_spawn_egg"),
 | 
				
			||||||
 | 
						STRING("string"),
 | 
				
			||||||
 | 
						SUGAR("sugar"),
 | 
				
			||||||
 | 
						SUSPICIOUS_STEW("suspicious_stew"),
 | 
				
			||||||
 | 
						SWEET_BERRIES("sweet_berries"),
 | 
				
			||||||
 | 
						TIPPED_ARROW("tipped_arrow"),
 | 
				
			||||||
 | 
						TNT_MINECART("tnt_minecart"),
 | 
				
			||||||
 | 
						TOTEM_OF_UNDYING("totem_of_undying"),
 | 
				
			||||||
 | 
						TRADER_LLAMA_SPAWN_EGG("trader_llama_spawn_egg"),
 | 
				
			||||||
 | 
						TRIDENT("trident"),
 | 
				
			||||||
 | 
						TROPICAL_FISH("tropical_fish"),
 | 
				
			||||||
 | 
						TROPICAL_FISH_BUCKET("tropical_fish_bucket"),
 | 
				
			||||||
 | 
						TROPICAL_FISH_SPAWN_EGG("tropical_fish_spawn_egg"),
 | 
				
			||||||
 | 
						TURTLE_HELMET("turtle_helmet"),
 | 
				
			||||||
 | 
						TURTLE_SPAWN_EGG("turtle_spawn_egg"),
 | 
				
			||||||
 | 
						VEX_SPAWN_EGG("vex_spawn_egg"),
 | 
				
			||||||
 | 
						VILLAGER_SPAWN_EGG("villager_spawn_egg"),
 | 
				
			||||||
 | 
						VINDICATOR_SPAWN_EGG("vindicator_spawn_egg"),
 | 
				
			||||||
 | 
						WANDERING_TRADER_SPAWN_EGG("wandering_trader_spawn_egg"),
 | 
				
			||||||
 | 
						WARPED_FUNGUS_ON_A_STICK("warped_fungus_on_a_stick"),
 | 
				
			||||||
 | 
						WATER_BUCKET("water_bucket"),
 | 
				
			||||||
 | 
						WHEAT("wheat"),
 | 
				
			||||||
 | 
						WHEAT_SEEDS("wheat_seeds"),
 | 
				
			||||||
 | 
						WHITE_DYE("white_dye"),
 | 
				
			||||||
 | 
						WITCH_SPAWN_EGG("witch_spawn_egg"),
 | 
				
			||||||
 | 
						WITHER_SKELETON_SPAWN_EGG("wither_skeleton_spawn_egg"),
 | 
				
			||||||
 | 
						WOLF_SPAWN_EGG("wolf_spawn_egg"),
 | 
				
			||||||
 | 
						WOODEN_AXE("wooden_axe"),
 | 
				
			||||||
 | 
						WOODEN_HOE("wooden_hoe"),
 | 
				
			||||||
 | 
						WOODEN_PICKAXE("wooden_pickaxe"),
 | 
				
			||||||
 | 
						WOODEN_SHOVEL("wooden_shovel"),
 | 
				
			||||||
 | 
						WOODEN_SWORD("wooden_sword"),
 | 
				
			||||||
 | 
						WRITABLE_BOOK("writable_book"),
 | 
				
			||||||
 | 
						WRITTEN_BOOK("written_book"),
 | 
				
			||||||
 | 
						YELLOW_DYE("yellow_dye"),
 | 
				
			||||||
 | 
						ZOGLIN_SPAWN_EGG("zoglin_spawn_egg"),
 | 
				
			||||||
 | 
						ZOMBIE_HORSE_SPAWN_EGG("zombie_horse_spawn_egg"),
 | 
				
			||||||
 | 
						ZOMBIE_SPAWN_EGG("zombie_spawn_egg"),
 | 
				
			||||||
 | 
						ZOMBIE_VILLAGER_SPAWN_EGG("zombie_villager_spawn_egg"),
 | 
				
			||||||
 | 
						ZOMBIFIED_PIGLIN_SPAWN_EGG("zombified_piglin_spawn_egg");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun toPath(): ResourcePath
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return ResourcePath.ofNamespace("minecraft", id)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										12
									
								
								src/main/kotlin/gay/pizza/foundation/drywall/enums/Lang.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/main/kotlin/gay/pizza/foundation/drywall/enums/Lang.kt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					package gay.pizza.foundation.drywall.enums
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public enum class Lang(val value: String)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						US_ENGLISH("en_us"),
 | 
				
			||||||
 | 
						FRENCH("fr_fr");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						override fun toString(): String
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return value
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,22 @@
 | 
				
			|||||||
 | 
					package gay.pizza.foundation.drywall.enums
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum class LootContextType(val value: String)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						EMPTY("empty"),
 | 
				
			||||||
 | 
						CHEST("chest"),
 | 
				
			||||||
 | 
						COMMAND("command"),
 | 
				
			||||||
 | 
						SELECTOR("selector"),
 | 
				
			||||||
 | 
						FISHING("fishing"),
 | 
				
			||||||
 | 
						ENTITY("entity"),
 | 
				
			||||||
 | 
						GIFT("gift"),
 | 
				
			||||||
 | 
						BARTER("barter"),
 | 
				
			||||||
 | 
						ADVANCEMENT_REWARD("advancement_reward"),
 | 
				
			||||||
 | 
						ADVANCEMENT_ENTITY("advancement_entity"),
 | 
				
			||||||
 | 
						GENERIC("generic"),
 | 
				
			||||||
 | 
						BLOCK("block");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						override fun toString(): String
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return "minecraft:$value"
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					package gay.pizza.foundation.drywall.enums
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum class LootEntryType(val value: String)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						ITEM("item"),
 | 
				
			||||||
 | 
						TAG("tag"),
 | 
				
			||||||
 | 
						LOOT_TABLE("loot_table"),
 | 
				
			||||||
 | 
						GROUP("group"),
 | 
				
			||||||
 | 
						ALTERNATIVES("alternatives"),
 | 
				
			||||||
 | 
						SEQUENCE("sequence"),
 | 
				
			||||||
 | 
						DYNAMIC("dynamic"),
 | 
				
			||||||
 | 
						EMPTY("empty");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						override fun toString(): String
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return "minecraft:$value"
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					package gay.pizza.foundation.drywall.enums
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum class MixinCompatibilityLevel
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						JAVA_6,
 | 
				
			||||||
 | 
						JAVA_7,
 | 
				
			||||||
 | 
						JAVA_8,
 | 
				
			||||||
 | 
						JAVA_9,
 | 
				
			||||||
 | 
						JAVA_10,
 | 
				
			||||||
 | 
						JAVA_11,
 | 
				
			||||||
 | 
						JAVA_12,
 | 
				
			||||||
 | 
						JAVA_13,
 | 
				
			||||||
 | 
						JAVA_14,
 | 
				
			||||||
 | 
						JAVA_15,
 | 
				
			||||||
 | 
						JAVA_16,
 | 
				
			||||||
 | 
						JAVA_17,
 | 
				
			||||||
 | 
						JAVA_18
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					package gay.pizza.foundation.drywall.enums
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum class RecipeType(val value: String, val special: String? = null)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						BLASTING("blasting"),
 | 
				
			||||||
 | 
						COOKING("campfire_cooking"),
 | 
				
			||||||
 | 
						SHAPED("crafting_shaped"),
 | 
				
			||||||
 | 
						SHAPELESS("crafting_shapeless"),
 | 
				
			||||||
 | 
						SMELTING("smelting"),
 | 
				
			||||||
 | 
						SMITHING("smithing"),
 | 
				
			||||||
 | 
						SMOKING("smoking"),
 | 
				
			||||||
 | 
						STONECUTTING("stonecutting"),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						SPECIAL_ARMORDYE("crafting_special_", "armordye"),
 | 
				
			||||||
 | 
						SPECIAL_BANNERDUPLICATE("crafting_special_", "bannerduplicate"),
 | 
				
			||||||
 | 
						SPECIAL_BOOKCLONING("crafting_special_", "bookcloning"),
 | 
				
			||||||
 | 
						SPECIAL_FIREWORK_ROCKET("crafting_special_", "firework_rocket"),
 | 
				
			||||||
 | 
						SPECIAL_FIREWORK_STAR("crafting_special_", "firework_star"),
 | 
				
			||||||
 | 
						SPECIAL_FIREWORK_STAR_FADE("crafting_special_", "firework_star_fade"),
 | 
				
			||||||
 | 
						SPECIAL_MAPCLONING("crafting_special_", "mapcloning"),
 | 
				
			||||||
 | 
						SPECIAL_MAPEXTENDING("crafting_special_", "mapextending"),
 | 
				
			||||||
 | 
						SPECIAL_REPAIRITEM("crafting_special_", "repairitem"),
 | 
				
			||||||
 | 
						SPECIAL_SHIELDDECORATION("crafting_special_", "shielddecoration"),
 | 
				
			||||||
 | 
						SPECIAL_SHULKERBOXCOLORING("crafting_special_", "shulkerboxcoloring"),
 | 
				
			||||||
 | 
						SPECIAL_TIPPEDARROW("crafting_special_", "tippedarrow"),
 | 
				
			||||||
 | 
						SPECIAL_SUSPICIOUSSTEW("crafting_special_", "suspiciousstew");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						override fun toString(): String
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return special?.let { "minecraft:$value$special" } ?: "minecraft:$value"
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					package gay.pizza.foundation.drywall.settings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import gay.pizza.foundation.drywall.enums.RecipeType
 | 
				
			||||||
 | 
					import kotlinx.serialization.Serializable
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					abstract class AbstractRecipeSettings(protected val type: RecipeType)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						@Serializable
 | 
				
			||||||
 | 
						data class Recipe(
 | 
				
			||||||
 | 
							val type: String,
 | 
				
			||||||
 | 
							val group: String? = null,
 | 
				
			||||||
 | 
							val pattern: List<String>?,
 | 
				
			||||||
 | 
							val key: Map<String, Item>?,
 | 
				
			||||||
 | 
							val ingredients: List<Item>?,
 | 
				
			||||||
 | 
							val result: Result)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							@Serializable
 | 
				
			||||||
 | 
							data class Item(
 | 
				
			||||||
 | 
								val item: String,
 | 
				
			||||||
 | 
								val tag: String? = null)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//TODO: this looks different in non crafting recipes
 | 
				
			||||||
 | 
							@Serializable
 | 
				
			||||||
 | 
							data class Result(
 | 
				
			||||||
 | 
								val count: Int? = null,
 | 
				
			||||||
 | 
								val item: String)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						abstract fun serialisable(namespace: String, id: String): Recipe
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,110 @@
 | 
				
			|||||||
 | 
					package gay.pizza.foundation.drywall.settings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import gay.pizza.foundation.drywall.enums.Lang
 | 
				
			||||||
 | 
					import gay.pizza.foundation.drywall.enums.RecipeType
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class BlockSettings(val id: String)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						private val _displayNames: MutableMap<Lang, String> = mutableMapOf()
 | 
				
			||||||
 | 
						private var _tool: String? = null
 | 
				
			||||||
 | 
						private var _level: String? = null
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private var _model: ModelSettings? = null
 | 
				
			||||||
 | 
						private var _itemModel: ModelSettings? = null
 | 
				
			||||||
 | 
						private var _blockState: BlockStateSettings? = null
 | 
				
			||||||
 | 
						private var _lootTable: LootTableSettings? = null
 | 
				
			||||||
 | 
						private var _recipes: MutableList<AbstractRecipeSettings> = mutableListOf()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						val displayNames: Map<Lang, String> get() = _displayNames.toMap()
 | 
				
			||||||
 | 
						val tool: String? get() = _tool
 | 
				
			||||||
 | 
						val level: String? get() = _level
 | 
				
			||||||
 | 
						val model: ModelSettings? get() = _model
 | 
				
			||||||
 | 
						val itemModel: ModelSettings? get() = _itemModel
 | 
				
			||||||
 | 
						val blockState: BlockStateSettings? get() = _blockState
 | 
				
			||||||
 | 
						val lootTable: LootTableSettings? get() = _lootTable
 | 
				
			||||||
 | 
						val recipes: List<AbstractRecipeSettings> get() = _recipes.toList()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun displayName(text: String, lang: Lang = Lang.US_ENGLISH): BlockSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this._displayNames[lang] = text
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun needsTool(tool: String): BlockSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this._tool = tool
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun needsToolLevel(level: String): BlockSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this._level = level
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun model(settings: ModelSettings.() -> Unit): BlockSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return model(ModelSettings().apply(settings))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun model(settings: ModelSettings): BlockSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this._model = settings
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun itemModel(settings: ModelSettings.() -> Unit): BlockSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return itemModel(ModelSettings().apply(settings))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun itemModel(settings: ModelSettings): BlockSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this._itemModel = settings
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun blockState(settings: BlockStateSettings.() -> Unit): BlockSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return blockState(BlockStateSettings().apply(settings))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun blockState(settings: BlockStateSettings): BlockSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this._blockState = settings
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun lootTable(settings: LootTableSettings.() -> Unit): BlockSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return lootTable(LootTableSettings().apply(settings))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun lootTable(settings: LootTableSettings): BlockSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this._lootTable = settings
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun shapedRecipe(settings: ShapedRecipeSettings.() -> Unit): BlockSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return shapedRecipe(ShapedRecipeSettings().apply(settings))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun shapedRecipe(settings: ShapedRecipeSettings): BlockSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this._recipes.add(settings)
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun shapelessRecipe(settings: ShapelessRecipeSettings.() -> Unit): BlockSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return shapelessRecipe(ShapelessRecipeSettings().apply(settings))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun shapelessRecipe(settings: ShapelessRecipeSettings): BlockSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this._recipes.add(settings)
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,105 @@
 | 
				
			|||||||
 | 
					package gay.pizza.foundation.drywall.settings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import gay.pizza.foundation.drywall.util.ResourcePath
 | 
				
			||||||
 | 
					import kotlinx.serialization.Serializable
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class BlockStateSettings
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						private data class Variant(
 | 
				
			||||||
 | 
							val model: ResourcePath,
 | 
				
			||||||
 | 
							val x: Int,
 | 
				
			||||||
 | 
							val y: Int,
 | 
				
			||||||
 | 
							val uvlock: Boolean)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						companion object
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							const val STATE_NORMAL = ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							val DEFAULT_BLOCK_MODEL = BlockStateSettings()
 | 
				
			||||||
 | 
								.variant(model = ResourcePath.PATH_BLOCK_MODEL)
 | 
				
			||||||
 | 
							val DEFAULT_HORIZONTAL_FACING_VARIANTS = BlockStateSettings()
 | 
				
			||||||
 | 
								.horizontalFacingVariants()
 | 
				
			||||||
 | 
							val DEFAULT_AXIS_VARIANTS = BlockStateSettings()
 | 
				
			||||||
 | 
								.axisVariants()
 | 
				
			||||||
 | 
							val DEFAULT_HORIZONTAL_AXIS_VARIANTS = BlockStateSettings()
 | 
				
			||||||
 | 
								.horizontalAxisVariants()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private val variants: MutableMap<String, Variant> = mutableMapOf()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun variant(state: String = STATE_NORMAL,
 | 
				
			||||||
 | 
							model: ResourcePath = ResourcePath.PATH_BLOCK_MODEL,
 | 
				
			||||||
 | 
							x: Int = 0,
 | 
				
			||||||
 | 
							y: Int = 0,
 | 
				
			||||||
 | 
							uvlock: Boolean = false): BlockStateSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							variants[state] = Variant(model, x, y, uvlock)
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun horizontalFacingVariants(extra: String, model: ResourcePath = ResourcePath.PATH_BLOCK_MODEL, yNorth: Int = 0): BlockStateSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							variant("${extra},facing=north", model, y = Math.floorMod(yNorth, 360))
 | 
				
			||||||
 | 
							variant("${extra},facing=east",  model, y = Math.floorMod(yNorth +  90, 360))
 | 
				
			||||||
 | 
							variant("${extra},facing=south", model, y = Math.floorMod(yNorth + 180, 360))
 | 
				
			||||||
 | 
							variant("${extra},facing=west",  model, y = Math.floorMod(yNorth + 270, 360))
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun horizontalFacingVariants(model: ResourcePath = ResourcePath.PATH_BLOCK_MODEL, yNorth: Int = 0): BlockStateSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							variant("facing=north", model, y = Math.floorMod(yNorth, 360))
 | 
				
			||||||
 | 
							variant("facing=east",  model, y = Math.floorMod(yNorth +  90, 360))
 | 
				
			||||||
 | 
							variant("facing=south", model, y = Math.floorMod(yNorth + 180, 360))
 | 
				
			||||||
 | 
							variant("facing=west",  model, y = Math.floorMod(yNorth + 270, 360))
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun axisVariants(extra: String, model: ResourcePath = ResourcePath.PATH_BLOCK_MODEL): BlockStateSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							variant("${extra},axis=y", model)
 | 
				
			||||||
 | 
							variant("${extra},axis=z", model, x = 270)
 | 
				
			||||||
 | 
							variant("${extra},axis=x", model, x = 90, y = 90)
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun axisVariants(model: ResourcePath = ResourcePath.PATH_BLOCK_MODEL): BlockStateSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							variant("axis=y", model)
 | 
				
			||||||
 | 
							variant("axis=z", model, x = 270)
 | 
				
			||||||
 | 
							variant("axis=x", model, x = 90, y = 90)
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun horizontalAxisVariants(model: ResourcePath = ResourcePath.PATH_BLOCK_MODEL, x: Int = 90, z: Int = 0): BlockStateSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							variant("axis=x", model, y = Math.floorMod(x, 360))
 | 
				
			||||||
 | 
							variant("axis=z", model, y = Math.floorMod(z, 360))
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun horizontalAxisVariants(extra: String, model: ResourcePath = ResourcePath.PATH_BLOCK_MODEL, x: Int = 90, z: Int = 0): BlockStateSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							variant("${extra},axis=x", model, y = Math.floorMod(x, 360))
 | 
				
			||||||
 | 
							variant("${extra},axis=z", model, y = Math.floorMod(z, 360))
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Serializable
 | 
				
			||||||
 | 
						data class BlockState(val variants: Map<String, Variant>)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							@Serializable
 | 
				
			||||||
 | 
							data class Variant(val model: String, val x: Int? = null, val y: Int? = null, val uvlock: Boolean? = null)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun serialisable(namespace: String, blockId: String): BlockState
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return BlockState(this.variants.entries.associate {
 | 
				
			||||||
 | 
								it.key to BlockState.Variant(
 | 
				
			||||||
 | 
									it.value.model.resolve(namespace, blockId),
 | 
				
			||||||
 | 
									if (it.value.x != 0) it.value.x else null,
 | 
				
			||||||
 | 
									if (it.value.y != 0) it.value.y else null,
 | 
				
			||||||
 | 
									if (it.value.uvlock) true else null)
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,147 @@
 | 
				
			|||||||
 | 
					package gay.pizza.foundation.drywall.settings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import gay.pizza.foundation.drywall.enums.EntryPoint
 | 
				
			||||||
 | 
					import gay.pizza.foundation.drywall.enums.EnvironmentType
 | 
				
			||||||
 | 
					import kotlinx.serialization.Serializable
 | 
				
			||||||
 | 
					import org.gradle.api.internal.provider.MissingValueException
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class FabricModSettings
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						private var _modId: String? = null
 | 
				
			||||||
 | 
						private var _version: String? = null
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private var _name: String? = null
 | 
				
			||||||
 | 
						private var _description: String? = null
 | 
				
			||||||
 | 
						private var _license: String? = null
 | 
				
			||||||
 | 
						private var _icon: String? = null
 | 
				
			||||||
 | 
						private var _environment: EnvironmentType = EnvironmentType.EVERYWHERE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private val _authors: MutableList<String> = mutableListOf()
 | 
				
			||||||
 | 
						private val _entrypoints: MutableMap<EntryPoint, MutableList<String>> = mutableMapOf()
 | 
				
			||||||
 | 
						private val _depends: MutableMap<String, String> = mutableMapOf()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private val _mixins: MutableMap<String?, MixinSettings> = mutableMapOf()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						val mixins: Map<String?, MixinSettings> get() = _mixins.toMap()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun id(id: String): FabricModSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							_modId = id
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun version(version: Any): FabricModSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							_version = "${version}"
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun displayName(name: String): FabricModSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							_name = name
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun description(text: String): FabricModSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							_description = text
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun author(name: String): FabricModSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							_authors.add(name)
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun license(name: String): FabricModSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							_license = name
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun icon(path: String): FabricModSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							_icon = path
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun environment(environment: EnvironmentType): FabricModSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							_environment = environment
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun entryPoint(entryPoint: EntryPoint, vararg classPath: String): FabricModSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							_entrypoints.getOrPut(entryPoint) { mutableListOf() } += classPath
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun depends(modName: String, modVersion: String = "*"): FabricModSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							_depends[modName] = modVersion
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun mixins(settings: MixinSettings.() -> Unit): FabricModSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return mixins(MixinSettings().apply(settings))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun mixins(settings: MixinSettings): FabricModSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							_mixins.put(null, settings)
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun mixins(name: String): FabricModSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return mixins(name, MixinSettings())
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun mixins(name: String, settings: MixinSettings.() -> Unit): FabricModSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return mixins(name, MixinSettings().apply(settings))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun mixins(name: String, settings: MixinSettings): FabricModSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							_mixins.put(name, settings)
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Serializable
 | 
				
			||||||
 | 
						data class FabricMod(
 | 
				
			||||||
 | 
							val schemaVersion: Int,
 | 
				
			||||||
 | 
							val id: String,
 | 
				
			||||||
 | 
							val version: String,
 | 
				
			||||||
 | 
							val name: String?,
 | 
				
			||||||
 | 
							val description: String?,
 | 
				
			||||||
 | 
							val authors: List<String>?,
 | 
				
			||||||
 | 
							val license: String?,
 | 
				
			||||||
 | 
							val icon: String?,
 | 
				
			||||||
 | 
							val environment: String?,
 | 
				
			||||||
 | 
							val entrypoints: Map<String, List<String>>?,
 | 
				
			||||||
 | 
							val mixins: List<String>?,
 | 
				
			||||||
 | 
							val depends: Map<String, String>?)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun serialisable(namespace: String): FabricMod
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if (_version.isNullOrBlank())
 | 
				
			||||||
 | 
								throw MissingValueException("missing required version string")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return FabricMod(1,
 | 
				
			||||||
 | 
								_modId ?: namespace,
 | 
				
			||||||
 | 
								_version!!,
 | 
				
			||||||
 | 
								_name,
 | 
				
			||||||
 | 
								_description,
 | 
				
			||||||
 | 
								_authors,
 | 
				
			||||||
 | 
								_license,
 | 
				
			||||||
 | 
								_icon ?: "assets/$namespace/icon.png",
 | 
				
			||||||
 | 
								"$_environment",
 | 
				
			||||||
 | 
								_entrypoints.entries.associate { it.key.name to it.value.toList() },
 | 
				
			||||||
 | 
								mixins.ifEmpty { null }?.let{it.keys.map { it ?: "$namespace.mixins.json" } },
 | 
				
			||||||
 | 
								_depends)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,69 @@
 | 
				
			|||||||
 | 
					package gay.pizza.foundation.drywall.settings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import gay.pizza.foundation.drywall.util.ResourcePath
 | 
				
			||||||
 | 
					import gay.pizza.foundation.drywall.enums.ConditionType
 | 
				
			||||||
 | 
					import gay.pizza.foundation.drywall.enums.LootContextType
 | 
				
			||||||
 | 
					import gay.pizza.foundation.drywall.enums.LootEntryType
 | 
				
			||||||
 | 
					import kotlinx.serialization.Serializable
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class LootTableSettings
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						data class Pool(val rolls: Int, val entries: List<Entry>, val conditions: List<Predicate>)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							data class Entry(val type: LootEntryType, val name: ResourcePath)
 | 
				
			||||||
 | 
							data class Predicate(val condition: ConditionType)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						companion object
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							val DEFAULT_BLOCK = LootTableSettings()
 | 
				
			||||||
 | 
								.type(LootContextType.BLOCK)
 | 
				
			||||||
 | 
								.pool(1, listOf(
 | 
				
			||||||
 | 
									Pool.Entry(LootEntryType.ITEM, ResourcePath.PATH_BLOCK)
 | 
				
			||||||
 | 
								))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private var ctxType: LootContextType? = null
 | 
				
			||||||
 | 
						private val pools: MutableList<Pool> = mutableListOf()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun type(type: LootContextType): LootTableSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this.ctxType = type
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun pool(rolls: Int, entries: List<Pool.Entry>, conditions: List<Pool.Predicate> = emptyList()): LootTableSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this.pools.add(Pool(rolls, entries, conditions))
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Serializable
 | 
				
			||||||
 | 
						data class LootTable(val type: String?, val pools: List<Pool>)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							@Serializable
 | 
				
			||||||
 | 
							data class Pool(val rolls: Int, val entries: List<Entry>, val conditions: List<Predicate>? = null)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								@Serializable
 | 
				
			||||||
 | 
								data class Predicate(val condition: String)
 | 
				
			||||||
 | 
								@Serializable
 | 
				
			||||||
 | 
								data class Entry(val type: String, val name: String)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun serialisable(namespace: String, blockId: String): LootTable
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// TODO: conditions
 | 
				
			||||||
 | 
							return LootTable(this.ctxType?.toString(), this.pools.map {
 | 
				
			||||||
 | 
								LootTable.Pool(
 | 
				
			||||||
 | 
									it.rolls,
 | 
				
			||||||
 | 
									it.entries.map {
 | 
				
			||||||
 | 
										LootTable.Pool.Entry(it.type.toString(), it.name.resolve(namespace, blockId))
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									if (it.conditions.isNotEmpty()) it.conditions.map {
 | 
				
			||||||
 | 
										LootTable.Pool.Predicate(it.condition.toString())
 | 
				
			||||||
 | 
									} else null
 | 
				
			||||||
 | 
								)
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,85 @@
 | 
				
			|||||||
 | 
					package gay.pizza.foundation.drywall.settings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import gay.pizza.foundation.drywall.enums.MixinCompatibilityLevel
 | 
				
			||||||
 | 
					import kotlinx.serialization.SerialName
 | 
				
			||||||
 | 
					import kotlinx.serialization.Serializable
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class MixinSettings()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						private var _packagePath: String? = null
 | 
				
			||||||
 | 
						private var _compatibilityLevel: MixinCompatibilityLevel? = null
 | 
				
			||||||
 | 
						private val _mixins: MutableList<String> = mutableListOf()
 | 
				
			||||||
 | 
						private val _client: MutableList<String> = mutableListOf()
 | 
				
			||||||
 | 
						private val _server: MutableList<String> = mutableListOf()
 | 
				
			||||||
 | 
						//private val _injectors: MutableMap<String, Int> = mutableMapOf()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						val packagePath: String? get() = _packagePath
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun packagePath(path: String): MixinSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							_packagePath = path
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun compatibilityLevel(javaVersion: MixinCompatibilityLevel): MixinSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							_compatibilityLevel = javaVersion
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun mixin(className: String): MixinSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							_mixins.add(className)
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun clientMixin(className: String): MixinSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							_client.add(className)
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun serverMixin(className: String): MixinSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							_server.add(className)
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//fun injector(className: String, what: Int): MixinSettings
 | 
				
			||||||
 | 
						//{
 | 
				
			||||||
 | 
						//	_injectors.put(className, what)
 | 
				
			||||||
 | 
						//	return this
 | 
				
			||||||
 | 
						//}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Serializable
 | 
				
			||||||
 | 
						data class Mixins(
 | 
				
			||||||
 | 
							val required: Boolean,
 | 
				
			||||||
 | 
							val minVersion: String,
 | 
				
			||||||
 | 
							@SerialName("package") val packagePath: String,
 | 
				
			||||||
 | 
							val compatibilityLevel: String?,
 | 
				
			||||||
 | 
							val mixins: List<String>?,
 | 
				
			||||||
 | 
							val client: List<String>?,
 | 
				
			||||||
 | 
							val server: List<String>?)
 | 
				
			||||||
 | 
							//val injectors: Map<String, Int>?)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//TODO: injector settings
 | 
				
			||||||
 | 
						//defaultRequire: int
 | 
				
			||||||
 | 
						//defaultGroup: str
 | 
				
			||||||
 | 
						//namespace: str
 | 
				
			||||||
 | 
						//injectionPoints: list<str>
 | 
				
			||||||
 | 
						//dynamicSelectors: list<str>
 | 
				
			||||||
 | 
						//maxShiftBy: int
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun serialisable(): Mixins
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return Mixins(
 | 
				
			||||||
 | 
								true,
 | 
				
			||||||
 | 
								"0.8",
 | 
				
			||||||
 | 
								_packagePath!!,
 | 
				
			||||||
 | 
								_compatibilityLevel?.let { "$it" },
 | 
				
			||||||
 | 
								_mixins.ifEmpty { null },
 | 
				
			||||||
 | 
								_client.ifEmpty { null },
 | 
				
			||||||
 | 
								_server.ifEmpty { null })
 | 
				
			||||||
 | 
								//_injectors.ifEmpty { null })
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					package gay.pizza.foundation.drywall.settings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import gay.pizza.foundation.drywall.util.ResourcePath
 | 
				
			||||||
 | 
					import kotlinx.serialization.Serializable
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class ModelSettings
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						companion object
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							val DEFAULT_ITEM_BLOCK_MODEL = ModelSettings().parent(ResourcePath.PATH_BLOCK_MODEL)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private var parent: ResourcePath? = null
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun parent(path: ResourcePath): ModelSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this.parent = path
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Serializable
 | 
				
			||||||
 | 
						data class Model(val parent: String?, val textures: Map<String, String>? = null)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun serialisable(namespace: String, blockId: String): Model
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							//TODO: textures
 | 
				
			||||||
 | 
							return Model(this.parent?.resolve(namespace, blockId))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,62 @@
 | 
				
			|||||||
 | 
					package gay.pizza.foundation.drywall.settings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import gay.pizza.foundation.drywall.enums.Blocks
 | 
				
			||||||
 | 
					import gay.pizza.foundation.drywall.enums.Items
 | 
				
			||||||
 | 
					import gay.pizza.foundation.drywall.enums.RecipeType
 | 
				
			||||||
 | 
					import gay.pizza.foundation.drywall.util.ResourcePath
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class ShapedRecipeSettings: AbstractRecipeSettings(RecipeType.SHAPED)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						private val patternLines: MutableList<String> = mutableListOf()
 | 
				
			||||||
 | 
						private val keys: MutableMap<Char, ResourcePath> = mutableMapOf()
 | 
				
			||||||
 | 
						private var result: ResourcePath? = null
 | 
				
			||||||
 | 
						private var resultCount = 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun pattern(line1: String, line2: String, line3: String): ShapedRecipeSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							patternLines.add(line1)
 | 
				
			||||||
 | 
							patternLines.add(line2)
 | 
				
			||||||
 | 
							patternLines.add(line3)
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun key(key: Char, item: Items): ShapedRecipeSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return key(key, item.toPath())
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun key(key: Char, blockItem: Blocks): ShapedRecipeSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return key(key, blockItem.toPath())
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun key(key: Char, itemPath: ResourcePath): ShapedRecipeSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// TODO: Tag???
 | 
				
			||||||
 | 
							keys[key] = itemPath
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun result(count: Int): ShapedRecipeSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							resultCount = count
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun result(itemPath: ResourcePath, count: Int = 1): ShapedRecipeSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							result = itemPath
 | 
				
			||||||
 | 
							resultCount = count
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						override fun serialisable(namespace: String, id: String): Recipe
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return Recipe("$type", null,
 | 
				
			||||||
 | 
								this.patternLines.toList(),
 | 
				
			||||||
 | 
								this.keys.entries.associate { "${it.key}" to Recipe.Item(it.value.resolve(namespace, id)) },
 | 
				
			||||||
 | 
								null,
 | 
				
			||||||
 | 
								Recipe.Result(this.resultCount, result?.resolve(namespace, id) ?: "$namespace:$id")
 | 
				
			||||||
 | 
							)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,52 @@
 | 
				
			|||||||
 | 
					package gay.pizza.foundation.drywall.settings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import gay.pizza.foundation.drywall.enums.Blocks
 | 
				
			||||||
 | 
					import gay.pizza.foundation.drywall.enums.Items
 | 
				
			||||||
 | 
					import gay.pizza.foundation.drywall.enums.RecipeType
 | 
				
			||||||
 | 
					import gay.pizza.foundation.drywall.util.ResourcePath
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class ShapelessRecipeSettings: AbstractRecipeSettings(RecipeType.SHAPELESS)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						private val ingredients: MutableList<ResourcePath> = mutableListOf()
 | 
				
			||||||
 | 
						private var result: ResourcePath? = null
 | 
				
			||||||
 | 
						private var resultCount = 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun ingredient(item: Items): ShapelessRecipeSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return ingredient(item.toPath())
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun ingredient(blockItem: Blocks): ShapelessRecipeSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return ingredient(blockItem.toPath())
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun ingredient(itemPath: ResourcePath): ShapelessRecipeSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							ingredients.add(itemPath)
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun result(count: Int): ShapelessRecipeSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							resultCount = count
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun result(itemPath: ResourcePath, count: Int = 1): ShapelessRecipeSettings
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							result = itemPath
 | 
				
			||||||
 | 
							resultCount = count
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						override fun serialisable(namespace: String, id: String): Recipe
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return Recipe("$type", null,
 | 
				
			||||||
 | 
								null,
 | 
				
			||||||
 | 
								null,
 | 
				
			||||||
 | 
								ingredients.map { Recipe.Item(it.resolve(namespace, id)) },
 | 
				
			||||||
 | 
								Recipe.Result(this.resultCount, result?.resolve(namespace, id) ?: "$namespace:$id")
 | 
				
			||||||
 | 
							)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,47 @@
 | 
				
			|||||||
 | 
					package gay.pizza.foundation.drywall.util
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class ResourcePath private constructor(private val namespace: String?, vararg path: String)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						companion object
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							val ID = "*"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							val PATH_BLOCK = ResourcePath.of(ID)
 | 
				
			||||||
 | 
							val PATH_BLOCK_MODEL = ResourcePath.of("block", ID)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							fun of(vararg path: String): ResourcePath
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								return ResourcePath(null, *path)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							fun ofNamespace(namespace: String, vararg path: String): ResourcePath
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								return ResourcePath(namespace, *path)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private val tokens: List<String>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						init
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this.tokens = path.asList()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fun resolve(namespace: String, id: String): String
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return "${this.namespace ?: namespace}:${
 | 
				
			||||||
 | 
								tokens.joinToString(separator = "/") {
 | 
				
			||||||
 | 
									when (it)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										ID -> id
 | 
				
			||||||
 | 
										else -> it
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}}"
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						override fun toString(): String
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							val path = tokens.joinToString(separator = "/")
 | 
				
			||||||
 | 
							return namespace?.let { "$it:$path" } ?: path
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user