mirror of
https://github.com/GayPizzaSpecifications/drywall.git
synced 2025-08-03 09:30:54 +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