mirror of
https://github.com/GayPizzaSpecifications/drywall.git
synced 2025-08-02 17:10:54 +00:00
welcome to the world of javasound
This commit is contained in:
commit
c84ba2549d
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
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user