diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9563893 --- /dev/null +++ b/.gitignore @@ -0,0 +1,25 @@ +# gradle + +.gradle/ +build/ +out/ +classes/ + +# idea + +.idea/ +*.iml +*.ipr +*.iws + +# vscode + +.settings/ +.vscode/ +bin/ +.classpath +.project + +# fabric + +run/ \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..ea9ed68 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 MidnightDust + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 2d37733..37fc324 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ -# ThisRocks -Adds little rocks, sticks, pinecones and seashells to your minecraft world! +# This Rocks! +This super amazing beautiful wonderful mod adds little rocks, sticks, pinecones and seashells to your world to make it feel more natural. diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..5220bc6 --- /dev/null +++ b/build.gradle @@ -0,0 +1,85 @@ +plugins { + id 'fabric-loom' version '0.4-SNAPSHOT' + id 'maven-publish' +} + +sourceCompatibility = JavaVersion.VERSION_1_8 +targetCompatibility = JavaVersion.VERSION_1_8 + +archivesBaseName = project.archives_base_name +version = project.mod_version +group = project.maven_group + +minecraft { +} + +repositories { + maven { url "https://jitpack.io" } + maven { url "https://maven.blamejared.com" } +} + +dependencies { + //to change the versions see the gradle.properties file + minecraft "com.mojang:minecraft:${project.minecraft_version}" + mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" + modCompile "net.fabricmc:fabric-loader:${project.loader_version}" + + // Fabric API. This is technically optional, but you probably want it anyway. + modCompile "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" + + modImplementation "eu.midnightdust:midnight-hats:${midnighthats_version}" + include "eu.midnightdust:midnight-hats:${midnighthats_version}" +} + +processResources { + inputs.property "version", project.version + + from(sourceSets.main.resources.srcDirs) { + include "fabric.mod.json" + expand "version": project.version + } + + from(sourceSets.main.resources.srcDirs) { + exclude "fabric.mod.json" + } +} + +// ensure that the encoding is set to UTF-8, no matter what the system default is +// this fixes some edge cases with special characters not displaying correctly +// see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html +tasks.withType(JavaCompile) { + options.encoding = "UTF-8" +} + +// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task +// if it is present. +// If you remove this task, sources will not be generated. +task sourcesJar(type: Jar, dependsOn: classes) { + classifier = "sources" + from sourceSets.main.allSource +} + +jar { + from "LICENSE" +} + +// configure the maven publication +publishing { + publications { + mavenJava(MavenPublication) { + // add all the jars that should be included when publishing to maven + artifact(remapJar) { + builtBy remapJar + } + artifact(sourcesJar) { + builtBy remapSourcesJar + } + } + } + + // select the repositories you want to publish to + repositories { + // uncomment to publish to the local maven + // mavenLocal() + } +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..c4d1a7c --- /dev/null +++ b/gradle.properties @@ -0,0 +1,18 @@ +# Done to increase the memory available to gradle. +org.gradle.jvmargs=-Xmx2G + +# Fabric Properties + # check these on https://fabricmc.net/use + minecraft_version=1.16.2 + yarn_mappings=1.16.2+build.6 + loader_version=0.9.1+build.205 + +# Mod Properties + mod_version = 1.0.0 + maven_group = eu.midnightdust.motschen + archives_base_name = rocks + +# Dependencies + # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api + fabric_version=0.17.2+build.396-1.16 + midnighthats_version=1.0.2 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..5c2d1cf Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..4b7e1f3 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-5.5.1-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..8e25e6c --- /dev/null +++ b/gradlew @@ -0,0 +1,188 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or 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 UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$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 "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# 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 + ;; + 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" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..9618d8d --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,100 @@ +@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 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 init + +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 init + +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 + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +: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 %CMD_LINE_ARGS% + +: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 diff --git a/logs/latest.log b/logs/latest.log new file mode 100644 index 0000000..e69de29 diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..5b60df3 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,10 @@ +pluginManagement { + repositories { + jcenter() + maven { + name = 'Fabric' + url = 'https://maven.fabricmc.net/' + } + gradlePluginPortal() + } +} diff --git a/src/main/java/eu/midnightdust/motschen/rocks/RocksMain.java b/src/main/java/eu/midnightdust/motschen/rocks/RocksMain.java new file mode 100644 index 0000000..c02af4b --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/rocks/RocksMain.java @@ -0,0 +1,88 @@ +package eu.midnightdust.motschen.rocks; + +import eu.midnightdust.motschen.rocks.block.*; +import eu.midnightdust.motschen.rocks.blockstates.RockVariation; +import eu.midnightdust.motschen.rocks.blockstates.SeashellVariation; +import eu.midnightdust.motschen.rocks.blockstates.StickVariation; +import eu.midnightdust.motschen.rocks.world.FeatureInjector; +import eu.midnightdust.motschen.rocks.world.MiscFeatures; +import eu.midnightdust.motschen.rocks.world.RockFeatures; +import eu.midnightdust.motschen.rocks.world.StickFeatures; +import net.fabricmc.api.ModInitializer; +import net.fabricmc.fabric.api.client.itemgroup.FabricItemGroupBuilder; +import net.minecraft.block.Block; +import net.minecraft.item.*; +import net.minecraft.state.property.EnumProperty; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; + +public class RocksMain implements ModInitializer { + + public static final String MOD_ID = "rocks"; + + public static final ItemGroup RocksGroup = FabricItemGroupBuilder.build(new Identifier(MOD_ID, "rocks"), () -> new ItemStack(RocksMain.Rock)); + + public static final EnumProperty ROCK_VARIATION = EnumProperty.of("variation", RockVariation.class); + public static final EnumProperty STICK_VARIATION = EnumProperty.of("variation", StickVariation.class); + public static final EnumProperty SEASHELL_VARIATION = EnumProperty.of("variation", SeashellVariation.class); + + public static Block Rock = new Rock(); + public static Block SandRock = new Rock(); + public static Block RedSandRock = new Rock(); + public static Block EndstoneRock = new Rock(); + + public static Block OakStick = new Stick(); + public static Block SpruceStick = new Stick(); + public static Block BirchStick = new Stick(); + public static Block AcaciaStick = new Stick(); + public static Block JungleStick = new Stick(); + public static Block DarkOakStick = new Stick(); + + public static Block Pinecone = new Pinecone(); + public static Block Seashell = new Seashell(); + + public static Item CobbleStoneSplitter = new Item(new Item.Settings().group(RocksMain.RocksGroup)); + public static Item SandStoneSplitter = new Item(new Item.Settings().group(RocksMain.RocksGroup)); + public static Item RedSandStoneSplitter = new Item(new Item.Settings().group(RocksMain.RocksGroup)); + public static Item EndStoneSplitter = new Item(new Item.Settings().group(RocksMain.RocksGroup)); + + @Override + public void onInitialize() { + Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"rock"), Rock); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"rock"), new BlockItem(Rock, new Item.Settings().group(RocksMain.RocksGroup))); + Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"sand_rock"), SandRock); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"sand_rock"), new BlockItem(SandRock, new Item.Settings().group(RocksMain.RocksGroup))); + Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"red_sand_rock"), RedSandRock); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"red_sand_rock"), new BlockItem(RedSandRock, new Item.Settings().group(RocksMain.RocksGroup))); + Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"end_stone_rock"), EndstoneRock); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"end_stone_rock"), new BlockItem(EndstoneRock, new Item.Settings().group(RocksMain.RocksGroup))); + + Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"oak_stick"), OakStick); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"oak_stick"), new BlockItem(OakStick, new Item.Settings().group(RocksMain.RocksGroup))); + Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"spruce_stick"), SpruceStick); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"spruce_stick"), new BlockItem(SpruceStick, new Item.Settings().group(RocksMain.RocksGroup))); + Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"birch_stick"), BirchStick); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"birch_stick"), new BlockItem(BirchStick, new Item.Settings().group(RocksMain.RocksGroup))); + Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"acacia_stick"), AcaciaStick); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"acacia_stick"), new BlockItem(AcaciaStick, new Item.Settings().group(RocksMain.RocksGroup))); + Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"jungle_stick"), JungleStick); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"jungle_stick"), new BlockItem(JungleStick, new Item.Settings().group(RocksMain.RocksGroup))); + Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"dark_oak_stick"), DarkOakStick); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"dark_oak_stick"), new BlockItem(DarkOakStick, new Item.Settings().group(RocksMain.RocksGroup))); + + Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"pinecone"), Pinecone); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"pinecone"), new BlockItem(Pinecone, new Item.Settings().group(RocksMain.RocksGroup))); + Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"seashell"), Seashell); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"seashell"), new BlockItem(Seashell, new Item.Settings().group(RocksMain.RocksGroup))); + + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"cobblestone_splitter"), CobbleStoneSplitter); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"sandstone_splitter"), SandStoneSplitter); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"red_sandstone_splitter"), RedSandStoneSplitter); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"end_stone_splitter"), EndStoneSplitter); + + RockFeatures.init(); + StickFeatures.init(); + MiscFeatures.init(); + FeatureInjector.init(); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/rocks/block/Pinecone.java b/src/main/java/eu/midnightdust/motschen/rocks/block/Pinecone.java new file mode 100644 index 0000000..dcd5229 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/rocks/block/Pinecone.java @@ -0,0 +1,34 @@ +package eu.midnightdust.motschen.rocks.block; + +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.*; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.world.BlockView; +import net.minecraft.world.WorldView; + +public class Pinecone extends Block { + + private static final VoxelShape SHAPE; + + public Pinecone() { + super(FabricBlockSettings.copy(Blocks.POPPY).nonOpaque().sounds(BlockSoundGroup.STONE)); + this.setDefaultState(this.stateManager.getDefaultState()); + } + + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView view, BlockPos pos, ShapeContext context) { + return SHAPE; + } + static { + VoxelShape shape = createCuboidShape(0, 0, 0, 16, 3, 16); + + SHAPE = shape; + } + + public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { + return world.getBlockState(pos.down()).isSideSolidFullSquare(world,pos,Direction.UP); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/rocks/block/Rock.java b/src/main/java/eu/midnightdust/motschen/rocks/block/Rock.java new file mode 100644 index 0000000..6e6b8b6 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/rocks/block/Rock.java @@ -0,0 +1,74 @@ +package eu.midnightdust.motschen.rocks.block; + +import eu.midnightdust.motschen.rocks.RocksMain; +import eu.midnightdust.motschen.rocks.blockstates.RockVariation; +import eu.midnightdust.motschen.rocks.blockstates.SeashellVariation; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.*; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.EnumProperty; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.world.BlockView; +import net.minecraft.world.World; +import net.minecraft.world.WorldView; + +public class Rock extends Block { + + private static final VoxelShape SHAPE; + private static final EnumProperty ROCK_VARIATION = RocksMain.ROCK_VARIATION; + + public Rock() { + super(FabricBlockSettings.copy(Blocks.POPPY).nonOpaque().sounds(BlockSoundGroup.STONE)); + this.setDefaultState(this.stateManager.getDefaultState().with(ROCK_VARIATION, RockVariation.TINY)); + } + + @Override + public BlockState getPlacementState(ItemPlacementContext itemPlacementContext) { + return super.getPlacementState(itemPlacementContext) + .with(ROCK_VARIATION, RockVariation.TINY); + } + public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { + if (player.isCreative()) { + if (state.get(ROCK_VARIATION) == RockVariation.TINY) { + world.setBlockState(pos, state.with(ROCK_VARIATION, RockVariation.SMALL)); + } + if (state.get(ROCK_VARIATION) == RockVariation.SMALL) { + world.setBlockState(pos, state.with(ROCK_VARIATION, RockVariation.MEDIUM)); + } + if (state.get(ROCK_VARIATION) == RockVariation.MEDIUM) { + world.setBlockState(pos, state.with(ROCK_VARIATION, RockVariation.LARGE)); + } + if (state.get(ROCK_VARIATION) == RockVariation.LARGE) { + world.setBlockState(pos, state.with(ROCK_VARIATION, RockVariation.TINY)); + } + return ActionResult.SUCCESS; + } + else return ActionResult.FAIL; + } + + @Override + protected void appendProperties(StateManager.Builder builder) { + builder.add(ROCK_VARIATION); + } + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView view, BlockPos pos, ShapeContext context) { + return SHAPE; + } + static { + VoxelShape shape = createCuboidShape(0, 0, 0, 16, 3, 16); + + SHAPE = shape; + } + + public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { + return world.getBlockState(pos.down()).isSideSolidFullSquare(world,pos,Direction.UP); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/rocks/block/Seashell.java b/src/main/java/eu/midnightdust/motschen/rocks/block/Seashell.java new file mode 100644 index 0000000..118539f --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/rocks/block/Seashell.java @@ -0,0 +1,77 @@ +package eu.midnightdust.motschen.rocks.block; + +import eu.midnightdust.motschen.rocks.RocksMain; +import eu.midnightdust.motschen.rocks.blockstates.SeashellVariation; +import eu.midnightdust.motschen.rocks.blockstates.StickVariation; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.ShapeContext; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.sound.SoundCategory; +import net.minecraft.sound.SoundEvents; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.EnumProperty; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.world.BlockView; +import net.minecraft.world.World; +import net.minecraft.world.WorldView; + +public class Seashell extends Block { + + private static final VoxelShape SHAPE; + private static final EnumProperty SEASHELL_VARIATION = RocksMain.SEASHELL_VARIATION; + + public Seashell() { + super(FabricBlockSettings.copy(Blocks.POPPY).nonOpaque().sounds(BlockSoundGroup.STONE)); + this.setDefaultState(this.stateManager.getDefaultState().with(SEASHELL_VARIATION, SeashellVariation.PINK)); + } + + @Override + public BlockState getPlacementState(ItemPlacementContext itemPlacementContext) { + return super.getPlacementState(itemPlacementContext) + .with(SEASHELL_VARIATION, SeashellVariation.PINK); + } + + public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { + if (player.isCreative()) { + if (state.get(SEASHELL_VARIATION) == SeashellVariation.YELLOW) { + world.setBlockState(pos, state.with(SEASHELL_VARIATION, SeashellVariation.WHITE)); + } + if (state.get(SEASHELL_VARIATION) == SeashellVariation.WHITE) { + world.setBlockState(pos, state.with(SEASHELL_VARIATION, SeashellVariation.PINK)); + } + if (state.get(SEASHELL_VARIATION) == SeashellVariation.PINK) { + world.setBlockState(pos, state.with(SEASHELL_VARIATION, SeashellVariation.YELLOW)); + } + return ActionResult.SUCCESS; + } + else return ActionResult.FAIL; + } + + @Override + protected void appendProperties(StateManager.Builder builder) { + builder.add(SEASHELL_VARIATION); + } + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView view, BlockPos pos, ShapeContext context) { + return SHAPE; + } + static { + VoxelShape shape = createCuboidShape(0, 0, 0, 16, 3, 16); + + SHAPE = shape; + } + + public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { + return world.getBlockState(pos.down()).isSideSolidFullSquare(world,pos,Direction.UP); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/rocks/block/Stick.java b/src/main/java/eu/midnightdust/motschen/rocks/block/Stick.java new file mode 100644 index 0000000..68d5f62 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/rocks/block/Stick.java @@ -0,0 +1,71 @@ +package eu.midnightdust.motschen.rocks.block; + +import eu.midnightdust.motschen.rocks.RocksMain; +import eu.midnightdust.motschen.rocks.blockstates.RockVariation; +import eu.midnightdust.motschen.rocks.blockstates.StickVariation; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.*; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.EnumProperty; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.world.BlockView; +import net.minecraft.world.World; +import net.minecraft.world.WorldView; + +public class Stick extends Block { + + private static final VoxelShape SHAPE; + private static final EnumProperty STICK_VARIATION = RocksMain.STICK_VARIATION; + + public Stick() { + super(FabricBlockSettings.copy(Blocks.POPPY).nonOpaque().sounds(BlockSoundGroup.STONE)); + this.setDefaultState(this.stateManager.getDefaultState().with(STICK_VARIATION, StickVariation.SMALL)); + } + + @Override + public BlockState getPlacementState(ItemPlacementContext itemPlacementContext) { + return super.getPlacementState(itemPlacementContext) + .with(STICK_VARIATION, StickVariation.SMALL); + } + public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { + if (player.isCreative()) { + if (state.get(STICK_VARIATION) == StickVariation.SMALL) { + world.setBlockState(pos, state.with(STICK_VARIATION, StickVariation.MEDIUM)); + } + if (state.get(STICK_VARIATION) == StickVariation.MEDIUM) { + world.setBlockState(pos, state.with(STICK_VARIATION, StickVariation.LARGE)); + } + if (state.get(STICK_VARIATION) == StickVariation.LARGE) { + world.setBlockState(pos, state.with(STICK_VARIATION, StickVariation.SMALL)); + } + return ActionResult.SUCCESS; + } + else return ActionResult.FAIL; + } + + @Override + protected void appendProperties(StateManager.Builder builder) { + builder.add(STICK_VARIATION); + } + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView view, BlockPos pos, ShapeContext context) { + return SHAPE; + } + static { + VoxelShape shape = createCuboidShape(0, 0, 0, 16, 3, 16); + + SHAPE = shape; + } + + public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { + return world.getBlockState(pos.down()).isSideSolidFullSquare(world,pos,Direction.UP); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/rocks/blockstates/RockVariation.java b/src/main/java/eu/midnightdust/motschen/rocks/blockstates/RockVariation.java new file mode 100644 index 0000000..95eaeb7 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/rocks/blockstates/RockVariation.java @@ -0,0 +1,24 @@ +package eu.midnightdust.motschen.rocks.blockstates; + +import net.minecraft.util.StringIdentifiable; + +public enum RockVariation implements StringIdentifiable { + TINY("tiny"), + SMALL("small"), + MEDIUM("medium"), + LARGE("large"); + + private final String name; + + RockVariation(String name) { + this.name = name; + } + + public String toString() { + return this.name; + } + + public String asString() { + return this.name; + } +} diff --git a/src/main/java/eu/midnightdust/motschen/rocks/blockstates/SeashellVariation.java b/src/main/java/eu/midnightdust/motschen/rocks/blockstates/SeashellVariation.java new file mode 100644 index 0000000..a48269b --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/rocks/blockstates/SeashellVariation.java @@ -0,0 +1,23 @@ +package eu.midnightdust.motschen.rocks.blockstates; + +import net.minecraft.util.StringIdentifiable; + +public enum SeashellVariation implements StringIdentifiable { + YELLOW("yellow"), + PINK("pink"), + WHITE("white"); + + private final String name; + + SeashellVariation(String name) { + this.name = name; + } + + public String toString() { + return this.name; + } + + public String asString() { + return this.name; + } +} diff --git a/src/main/java/eu/midnightdust/motschen/rocks/blockstates/StickVariation.java b/src/main/java/eu/midnightdust/motschen/rocks/blockstates/StickVariation.java new file mode 100644 index 0000000..5a9c986 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/rocks/blockstates/StickVariation.java @@ -0,0 +1,23 @@ +package eu.midnightdust.motschen.rocks.blockstates; + +import net.minecraft.util.StringIdentifiable; + +public enum StickVariation implements StringIdentifiable { + SMALL("small"), + MEDIUM("medium"), + LARGE("large"); + + private final String name; + + StickVariation(String name) { + this.name = name; + } + + public String toString() { + return this.name; + } + + public String asString() { + return this.name; + } +} diff --git a/src/main/java/eu/midnightdust/motschen/rocks/mixin/GenerationSettingsAccessorMixin.java b/src/main/java/eu/midnightdust/motschen/rocks/mixin/GenerationSettingsAccessorMixin.java new file mode 100644 index 0000000..f20c713 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/rocks/mixin/GenerationSettingsAccessorMixin.java @@ -0,0 +1,19 @@ +package eu.midnightdust.motschen.rocks.mixin; + +import net.minecraft.world.biome.GenerationSettings; +import net.minecraft.world.gen.feature.ConfiguredFeature; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.List; +import java.util.function.Supplier; + +@Mixin(GenerationSettings.class) +public interface GenerationSettingsAccessorMixin { + + @Accessor + List>>> getFeatures(); + + @Accessor + void setFeatures(List>>> features); +} diff --git a/src/main/java/eu/midnightdust/motschen/rocks/world/FeatureInjector.java b/src/main/java/eu/midnightdust/motschen/rocks/world/FeatureInjector.java new file mode 100644 index 0000000..abc9a76 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/rocks/world/FeatureInjector.java @@ -0,0 +1,85 @@ +package eu.midnightdust.motschen.rocks.world; + +import com.google.common.collect.Lists; +import eu.midnightdust.motschen.rocks.mixin.GenerationSettingsAccessorMixin; +import net.fabricmc.fabric.api.event.registry.RegistryEntryAddedCallback; +import net.minecraft.util.registry.BuiltinRegistries; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.gen.GenerationStep; +import net.minecraft.world.gen.feature.ConfiguredFeature; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Supplier; + +public class FeatureInjector { + + public static void init() { + BuiltinRegistries.BIOME.forEach(FeatureInjector::addRockToBiome); + RegistryEntryAddedCallback.event(BuiltinRegistries.BIOME).register((i, identifier, biome) -> addRockToBiome(biome)); + } + + private static void addRockToBiome(Biome biome) { + // Rocks + if (biome.getCategory() != Biome.Category.NETHER && biome.getCategory() != Biome.Category.THEEND && biome.getCategory() != Biome.Category.BEACH && biome.getCategory() != Biome.Category.DESERT && biome.getCategory() != Biome.Category.MESA && biome.getCategory() != Biome.Category.ICY && biome.getCategory() != Biome.Category.OCEAN) { + addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, RockFeatures.ROCK_FEATURE); + } + if ((biome.getCategory() == Biome.Category.BEACH) || (biome.getCategory() == Biome.Category.DESERT)) { + addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, RockFeatures.SAND_ROCK_FEATURE); + } + if (biome.getCategory() == Biome.Category.MESA) { + addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, RockFeatures.RED_SAND_ROCK_FEATURE); + } + if (biome.getCategory() == Biome.Category.THEEND) { + addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, RockFeatures.END_STONE_ROCK_FEATURE); + } + // Sticks + if (biome.toString().contains("minecraft:forest") || biome.toString().contains("minecraft:wooded_hills") || + biome.toString().contains("minecraft:wooded_mountains") || biome.toString().contains("minecraft:plains") || + biome.toString().contains("minecraft:flower_forest") || biome.toString().contains("minecraft:swamp") || + biome.toString().contains("minecraft:swamp_hills") || biome.toString().contains("minecraft:wooded_badlands_plateau") || + biome.toString().contains("minecraft:modified_wooded_badlands_plateau")) { + addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, StickFeatures.OAK_STICK_FEATURE); + } + if (biome.toString().contains("minecraft:forest") || biome.toString().contains("minecraft:birch_forest") || + biome.toString().contains("minecraft:birch_forest_hills") || biome.toString().contains("minecraft:flower_forest")) { + addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, StickFeatures.BIRCH_STICK_FEATURE); + } + if (biome.toString().contains("minecraft:taiga") || biome.toString().contains("minecraft:taiga_mountains") || + biome.toString().contains("minecraft:giant_spruce_taiga") || biome.toString().contains("minecraft:taiga_hills")|| + biome.toString().contains("minecraft:giant_spruce_taiga_hills") || biome.toString().contains("minecraft:snowy_taiga_mountain") || + biome.toString().contains("minecraft:snowy_taiga") || biome.toString().contains("minecraft:snowy_taiga_hills") || + biome.toString().contains("minecraft:giant_tree_taiga") || biome.toString().contains("minecraft:giant_tree_taiga_hills") || + biome.toString().contains("minecraft:wooded_mountains")) { + addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, StickFeatures.SPRUCE_STICK_FEATURE); + } + if (biome.toString().contains("minecraft:savanna") || biome.toString().contains("minecraft:savanna_plateau") || + biome.toString().contains("minecraft:shattered_savanna") || biome.toString().contains("minecraft:shattered_savanna_plateau")) { + addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, StickFeatures.ACACIA_STICK_FEATURE); + } + if (biome.getCategory() == Biome.Category.JUNGLE) { + addFeature(biome, GenerationStep.Feature.UNDERGROUND_DECORATION, StickFeatures.JUNGLE_STICK_FEATURE); + } + if (biome.toString().contains("minecraft:dark_forest") || biome.toString().contains("minecraft:dark_forest_hills") || + biome.toString().contains("minecraft:birch_forest_hills") || biome.toString().contains("minecraft:flower_forest")) { + addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, StickFeatures.DARK_OAK_STICK_FEATURE); + } + // Misc + if (biome.getCategory() == Biome.Category.BEACH) { + addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, MiscFeatures.SEASHELL_FEATURE); + } + } + + public static void addFeature(Biome biome, GenerationStep.Feature step, ConfiguredFeature feature) { + GenerationSettingsAccessorMixin generationSettingsAccessor = (GenerationSettingsAccessorMixin) biome.getGenerationSettings(); + int stepIndex = step.ordinal(); + List>>> featuresByStep = new ArrayList<>( generationSettingsAccessor.getFeatures()); + while (featuresByStep.size() <= stepIndex) { + featuresByStep.add(Lists.newArrayList()); + } + List>> features = new ArrayList<>(featuresByStep.get(stepIndex)); + features.add(() -> feature); + featuresByStep.set(stepIndex, features); + generationSettingsAccessor.setFeatures(featuresByStep); + } +} \ No newline at end of file diff --git a/src/main/java/eu/midnightdust/motschen/rocks/world/MiscFeatures.java b/src/main/java/eu/midnightdust/motschen/rocks/world/MiscFeatures.java new file mode 100644 index 0000000..2644794 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/rocks/world/MiscFeatures.java @@ -0,0 +1,32 @@ +package eu.midnightdust.motschen.rocks.world; + +import eu.midnightdust.motschen.rocks.RocksMain; +import eu.midnightdust.motschen.rocks.blockstates.SeashellVariation; +import eu.midnightdust.motschen.rocks.blockstates.StickVariation; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.BuiltinRegistries; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.gen.feature.ConfiguredFeature; +import net.minecraft.world.gen.feature.ConfiguredFeatures; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.RandomPatchFeatureConfig; +import net.minecraft.world.gen.placer.SimpleBlockPlacer; +import net.minecraft.world.gen.stateprovider.SimpleBlockStateProvider; +import net.minecraft.world.gen.stateprovider.WeightedBlockStateProvider; + +public class MiscFeatures { + public static ConfiguredFeature SEASHELL_FEATURE = Feature.RANDOM_PATCH.configure( + (new RandomPatchFeatureConfig.Builder( + new WeightedBlockStateProvider() + .addState(RocksMain.Seashell.getDefaultState().with(RocksMain.SEASHELL_VARIATION,SeashellVariation.YELLOW), 7) + .addState(RocksMain.Seashell.getDefaultState().with(RocksMain.SEASHELL_VARIATION,SeashellVariation.PINK), 2) + .addState(RocksMain.Seashell.getDefaultState().with(RocksMain.SEASHELL_VARIATION,SeashellVariation.WHITE), 6), + SimpleBlockPlacer.INSTANCE)) + .tries(1).spreadX(0).spreadY(0).spreadZ(0) + .build()).decorate(ConfiguredFeatures.Decorators.FIRE).applyChance(1); + public static void init() { + Registry> registry = BuiltinRegistries.CONFIGURED_FEATURE; + Registry.register(registry, new Identifier(RocksMain.MOD_ID, "seashell"), SEASHELL_FEATURE); + } + +} diff --git a/src/main/java/eu/midnightdust/motschen/rocks/world/RockFeatures.java b/src/main/java/eu/midnightdust/motschen/rocks/world/RockFeatures.java new file mode 100644 index 0000000..d19d429 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/rocks/world/RockFeatures.java @@ -0,0 +1,62 @@ +package eu.midnightdust.motschen.rocks.world; + +import eu.midnightdust.motschen.rocks.RocksMain; +import eu.midnightdust.motschen.rocks.blockstates.RockVariation; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.BuiltinRegistries; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.placer.SimpleBlockPlacer; +import net.minecraft.world.gen.stateprovider.WeightedBlockStateProvider; + +public class RockFeatures { + public static ConfiguredFeature ROCK_FEATURE = Feature.RANDOM_PATCH.configure( + (new RandomPatchFeatureConfig.Builder( + new WeightedBlockStateProvider() + .addState(RocksMain.Rock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.TINY), 10) + .addState(RocksMain.Rock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) + .addState(RocksMain.Rock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) + .addState(RocksMain.Rock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1), + SimpleBlockPlacer.INSTANCE)) + .tries(1).spreadX(0).spreadY(0).spreadZ(0) + .build()).decorate(ConfiguredFeatures.Decorators.FIRE).applyChance(1); + public static ConfiguredFeature SAND_ROCK_FEATURE = Feature.RANDOM_PATCH.configure( + (new RandomPatchFeatureConfig.Builder( + new WeightedBlockStateProvider() + .addState(RocksMain.SandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.TINY), 10) + .addState(RocksMain.SandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) + .addState(RocksMain.SandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) + .addState(RocksMain.SandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1), + SimpleBlockPlacer.INSTANCE)) + .tries(1).spreadX(0).spreadY(0).spreadZ(0) + .build()).decorate(ConfiguredFeatures.Decorators.FIRE).applyChance(1); + public static ConfiguredFeature RED_SAND_ROCK_FEATURE = Feature.RANDOM_PATCH.configure( + (new RandomPatchFeatureConfig.Builder( + new WeightedBlockStateProvider() + .addState(RocksMain.RedSandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.TINY), 10) + .addState(RocksMain.RedSandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) + .addState(RocksMain.RedSandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) + .addState(RocksMain.RedSandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1), + SimpleBlockPlacer.INSTANCE)) + .tries(1).spreadX(0).spreadY(0).spreadZ(0) + .build()).decorate(ConfiguredFeatures.Decorators.FIRE).applyChance(1); + public static ConfiguredFeature END_STONE_ROCK_FEATURE = Feature.RANDOM_PATCH.configure( + (new RandomPatchFeatureConfig.Builder( + new WeightedBlockStateProvider() + .addState(RocksMain.EndstoneRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.TINY), 10) + .addState(RocksMain.EndstoneRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) + .addState(RocksMain.EndstoneRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) + .addState(RocksMain.EndstoneRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1), + SimpleBlockPlacer.INSTANCE)) + .tries(1).spreadX(0).spreadY(0).spreadZ(0) + .build()).decorate(ConfiguredFeatures.Decorators.FIRE).applyChance(1); + + public static void init() { + Registry> registry = BuiltinRegistries.CONFIGURED_FEATURE; + Registry.register(registry, new Identifier(RocksMain.MOD_ID, "rock"), ROCK_FEATURE); + Registry.register(registry, new Identifier(RocksMain.MOD_ID, "sand_rock"), SAND_ROCK_FEATURE); + Registry.register(registry, new Identifier(RocksMain.MOD_ID, "red_sand_rock"), RED_SAND_ROCK_FEATURE); + Registry.register(registry, new Identifier(RocksMain.MOD_ID, "endstone_rock"), END_STONE_ROCK_FEATURE); + } + +} diff --git a/src/main/java/eu/midnightdust/motschen/rocks/world/StickFeatures.java b/src/main/java/eu/midnightdust/motschen/rocks/world/StickFeatures.java new file mode 100644 index 0000000..4405c15 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/rocks/world/StickFeatures.java @@ -0,0 +1,83 @@ +package eu.midnightdust.motschen.rocks.world; + +import eu.midnightdust.motschen.rocks.RocksMain; +import eu.midnightdust.motschen.rocks.blockstates.RockVariation; +import eu.midnightdust.motschen.rocks.blockstates.StickVariation; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.BuiltinRegistries; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.gen.feature.ConfiguredFeature; +import net.minecraft.world.gen.feature.ConfiguredFeatures; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.RandomPatchFeatureConfig; +import net.minecraft.world.gen.placer.SimpleBlockPlacer; +import net.minecraft.world.gen.stateprovider.WeightedBlockStateProvider; + +public class StickFeatures { + public static ConfiguredFeature OAK_STICK_FEATURE = Feature.RANDOM_PATCH.configure( + (new RandomPatchFeatureConfig.Builder( + new WeightedBlockStateProvider() + .addState(RocksMain.OakStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.SMALL), 7) + .addState(RocksMain.OakStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.MEDIUM), 5) + .addState(RocksMain.OakStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.LARGE), 1), + SimpleBlockPlacer.INSTANCE)) + .tries(1).spreadX(0).spreadY(0).spreadZ(0) + .build()).decorate(ConfiguredFeatures.Decorators.FIRE).applyChance(1); + public static ConfiguredFeature SPRUCE_STICK_FEATURE = Feature.RANDOM_PATCH.configure( + (new RandomPatchFeatureConfig.Builder( + new WeightedBlockStateProvider() + .addState(RocksMain.SpruceStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.SMALL), 7) + .addState(RocksMain.SpruceStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.MEDIUM), 5) + .addState(RocksMain.SpruceStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.LARGE), 1) + .addState(RocksMain.Pinecone.getDefaultState(), 1), + SimpleBlockPlacer.INSTANCE)) + .tries(1).spreadX(0).spreadY(0).spreadZ(0) + .build()).decorate(ConfiguredFeatures.Decorators.FIRE).applyChance(1); + public static ConfiguredFeature BIRCH_STICK_FEATURE = Feature.RANDOM_PATCH.configure( + (new RandomPatchFeatureConfig.Builder( + new WeightedBlockStateProvider() + .addState(RocksMain.BirchStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.SMALL), 7) + .addState(RocksMain.BirchStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.MEDIUM), 5) + .addState(RocksMain.BirchStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.LARGE), 1), + SimpleBlockPlacer.INSTANCE)) + .tries(1).spreadX(0).spreadY(0).spreadZ(0) + .build()).decorate(ConfiguredFeatures.Decorators.FIRE).applyChance(1); + public static ConfiguredFeature ACACIA_STICK_FEATURE = Feature.RANDOM_PATCH.configure( + (new RandomPatchFeatureConfig.Builder( + new WeightedBlockStateProvider() + .addState(RocksMain.AcaciaStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.SMALL), 7) + .addState(RocksMain.AcaciaStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.MEDIUM), 5) + .addState(RocksMain.AcaciaStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.LARGE), 1), + SimpleBlockPlacer.INSTANCE)) + .tries(1).spreadX(0).spreadY(0).spreadZ(0) + .build()).decorate(ConfiguredFeatures.Decorators.FIRE).applyChance(1); + public static ConfiguredFeature JUNGLE_STICK_FEATURE = Feature.RANDOM_PATCH.configure( + (new RandomPatchFeatureConfig.Builder( + new WeightedBlockStateProvider() + .addState(RocksMain.JungleStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.SMALL), 7) + .addState(RocksMain.JungleStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.MEDIUM), 5) + .addState(RocksMain.JungleStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.LARGE), 1), + SimpleBlockPlacer.INSTANCE)) + .tries(1).spreadX(0).spreadY(0).spreadZ(0) + .build()).decorate(ConfiguredFeatures.Decorators.FIRE).applyChance(1); + public static ConfiguredFeature DARK_OAK_STICK_FEATURE = Feature.RANDOM_PATCH.configure( + (new RandomPatchFeatureConfig.Builder( + new WeightedBlockStateProvider() + .addState(RocksMain.DarkOakStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.SMALL), 7) + .addState(RocksMain.DarkOakStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.MEDIUM), 5) + .addState(RocksMain.DarkOakStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.LARGE), 1), + SimpleBlockPlacer.INSTANCE)) + .tries(1).spreadX(0).spreadY(0).spreadZ(0) + .build()).decorate(ConfiguredFeatures.Decorators.FIRE).applyChance(1); + + public static void init() { + Registry> registry = BuiltinRegistries.CONFIGURED_FEATURE; + Registry.register(registry, new Identifier(RocksMain.MOD_ID, "oak_stick"), OAK_STICK_FEATURE); + Registry.register(registry, new Identifier(RocksMain.MOD_ID, "spruce_stick"), SPRUCE_STICK_FEATURE); + Registry.register(registry, new Identifier(RocksMain.MOD_ID, "birch_stick"), BIRCH_STICK_FEATURE); + Registry.register(registry, new Identifier(RocksMain.MOD_ID, "acacia_stick"), ACACIA_STICK_FEATURE); + Registry.register(registry, new Identifier(RocksMain.MOD_ID, "jungle_stick"), JUNGLE_STICK_FEATURE); + Registry.register(registry, new Identifier(RocksMain.MOD_ID, "dark_oak_stick"), DARK_OAK_STICK_FEATURE); + } + +} diff --git a/src/main/resources/assets/rocks/blockstates/acacia_stick.json b/src/main/resources/assets/rocks/blockstates/acacia_stick.json new file mode 100644 index 0000000..2513715 --- /dev/null +++ b/src/main/resources/assets/rocks/blockstates/acacia_stick.json @@ -0,0 +1,7 @@ +{ + "variants": { + "variation=small": { "model": "rocks:block/small_acacia_stick" }, + "variation=medium": { "model": "rocks:block/medium_acacia_stick" }, + "variation=large": { "model": "rocks:block/large_acacia_stick" } + } +} diff --git a/src/main/resources/assets/rocks/blockstates/birch_stick.json b/src/main/resources/assets/rocks/blockstates/birch_stick.json new file mode 100644 index 0000000..59c3d81 --- /dev/null +++ b/src/main/resources/assets/rocks/blockstates/birch_stick.json @@ -0,0 +1,7 @@ +{ + "variants": { + "variation=small": { "model": "rocks:block/small_birch_stick" }, + "variation=medium": { "model": "rocks:block/medium_birch_stick" }, + "variation=large": { "model": "rocks:block/large_birch_stick" } + } +} diff --git a/src/main/resources/assets/rocks/blockstates/dark_oak_stick.json b/src/main/resources/assets/rocks/blockstates/dark_oak_stick.json new file mode 100644 index 0000000..41bf65a --- /dev/null +++ b/src/main/resources/assets/rocks/blockstates/dark_oak_stick.json @@ -0,0 +1,7 @@ +{ + "variants": { + "variation=small": { "model": "rocks:block/small_dark_oak_stick" }, + "variation=medium": { "model": "rocks:block/medium_dark_oak_stick" }, + "variation=large": { "model": "rocks:block/large_dark_oak_stick" } + } +} diff --git a/src/main/resources/assets/rocks/blockstates/end_stone_rock.json b/src/main/resources/assets/rocks/blockstates/end_stone_rock.json new file mode 100644 index 0000000..33a3caf --- /dev/null +++ b/src/main/resources/assets/rocks/blockstates/end_stone_rock.json @@ -0,0 +1,8 @@ +{ + "variants": { + "variation=tiny": { "model": "rocks:block/tiny_end_stone_rock" }, + "variation=small": { "model": "rocks:block/small_end_stone_rock" }, + "variation=medium": { "model": "rocks:block/medium_end_stone_rock" }, + "variation=large": { "model": "rocks:block/large_end_stone_rock" } + } +} diff --git a/src/main/resources/assets/rocks/blockstates/jungle_stick.json b/src/main/resources/assets/rocks/blockstates/jungle_stick.json new file mode 100644 index 0000000..ecda40f --- /dev/null +++ b/src/main/resources/assets/rocks/blockstates/jungle_stick.json @@ -0,0 +1,7 @@ +{ + "variants": { + "variation=small": { "model": "rocks:block/small_jungle_stick" }, + "variation=medium": { "model": "rocks:block/medium_jungle_stick" }, + "variation=large": { "model": "rocks:block/large_jungle_stick" } + } +} diff --git a/src/main/resources/assets/rocks/blockstates/oak_stick.json b/src/main/resources/assets/rocks/blockstates/oak_stick.json new file mode 100644 index 0000000..bc0a6c2 --- /dev/null +++ b/src/main/resources/assets/rocks/blockstates/oak_stick.json @@ -0,0 +1,7 @@ +{ + "variants": { + "variation=small": { "model": "rocks:block/small_oak_stick" }, + "variation=medium": { "model": "rocks:block/medium_oak_stick" }, + "variation=large": { "model": "rocks:block/large_oak_stick" } + } +} diff --git a/src/main/resources/assets/rocks/blockstates/pinecone.json b/src/main/resources/assets/rocks/blockstates/pinecone.json new file mode 100644 index 0000000..c4b8f56 --- /dev/null +++ b/src/main/resources/assets/rocks/blockstates/pinecone.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "rocks:block/pinecone" } + } +} diff --git a/src/main/resources/assets/rocks/blockstates/red_sand_rock.json b/src/main/resources/assets/rocks/blockstates/red_sand_rock.json new file mode 100644 index 0000000..07e7def --- /dev/null +++ b/src/main/resources/assets/rocks/blockstates/red_sand_rock.json @@ -0,0 +1,8 @@ +{ + "variants": { + "variation=tiny": { "model": "rocks:block/tiny_red_sand_rock" }, + "variation=small": { "model": "rocks:block/small_red_sand_rock" }, + "variation=medium": { "model": "rocks:block/medium_red_sand_rock" }, + "variation=large": { "model": "rocks:block/large_red_sand_rock" } + } +} diff --git a/src/main/resources/assets/rocks/blockstates/rock.json b/src/main/resources/assets/rocks/blockstates/rock.json new file mode 100644 index 0000000..cde56ba --- /dev/null +++ b/src/main/resources/assets/rocks/blockstates/rock.json @@ -0,0 +1,8 @@ +{ + "variants": { + "variation=tiny": { "model": "rocks:block/tiny_rock" }, + "variation=small": { "model": "rocks:block/small_rock" }, + "variation=medium": { "model": "rocks:block/medium_rock" }, + "variation=large": { "model": "rocks:block/large_rock" } + } +} diff --git a/src/main/resources/assets/rocks/blockstates/sand_rock.json b/src/main/resources/assets/rocks/blockstates/sand_rock.json new file mode 100644 index 0000000..5db18c8 --- /dev/null +++ b/src/main/resources/assets/rocks/blockstates/sand_rock.json @@ -0,0 +1,8 @@ +{ + "variants": { + "variation=tiny": { "model": "rocks:block/tiny_sand_rock" }, + "variation=small": { "model": "rocks:block/small_sand_rock" }, + "variation=medium": { "model": "rocks:block/medium_sand_rock" }, + "variation=large": { "model": "rocks:block/large_sand_rock" } + } +} diff --git a/src/main/resources/assets/rocks/blockstates/seashell.json b/src/main/resources/assets/rocks/blockstates/seashell.json new file mode 100644 index 0000000..afa5cfc --- /dev/null +++ b/src/main/resources/assets/rocks/blockstates/seashell.json @@ -0,0 +1,7 @@ +{ + "variants": { + "variation=yellow": { "model": "rocks:block/seashell_yellow" }, + "variation=pink": { "model": "rocks:block/seashell_pink" }, + "variation=white": { "model": "rocks:block/seashell_white" } + } +} diff --git a/src/main/resources/assets/rocks/blockstates/spruce_stick.json b/src/main/resources/assets/rocks/blockstates/spruce_stick.json new file mode 100644 index 0000000..cd3d1ac --- /dev/null +++ b/src/main/resources/assets/rocks/blockstates/spruce_stick.json @@ -0,0 +1,7 @@ +{ + "variants": { + "variation=small": { "model": "rocks:block/small_spruce_stick" }, + "variation=medium": { "model": "rocks:block/medium_spruce_stick" }, + "variation=large": { "model": "rocks:block/large_spruce_stick" } + } +} diff --git a/src/main/resources/assets/rocks/icon.png b/src/main/resources/assets/rocks/icon.png new file mode 100644 index 0000000..a7e7206 Binary files /dev/null and b/src/main/resources/assets/rocks/icon.png differ diff --git a/src/main/resources/assets/rocks/lang/en_us.json b/src/main/resources/assets/rocks/lang/en_us.json new file mode 100644 index 0000000..3d3d248 --- /dev/null +++ b/src/main/resources/assets/rocks/lang/en_us.json @@ -0,0 +1,23 @@ +{ + "itemGroup.rocks.rocks":"This Rocks!", + + "block.rocks.rock":"Rock", + "block.rocks.sand_rock":"Sand Rock", + "block.rocks.red_sand_rock":"Red Sand Rock", + "block.rocks.end_stone_rock":"End Stone Rock", + + "block.rocks.oak_stick":"Oak Stick", + "block.rocks.birch_stick":"Birch Stick", + "block.rocks.spruce_stick":"Spruce Stick", + "block.rocks.jungle_stick":"Jungle Stick", + "block.rocks.acacia_stick":"Acacia Stick", + "block.rocks.dark_oak_stick":"Dark Oak Stick", + + "block.rocks.pinecone":"Pinecone", + "block.rocks.seashell":"Seashell", + + "item.rocks.cobblestone_splitter":"Cobblestone Splitter", + "item.rocks.sandstone_splitter":"Sandstone Splitter", + "item.rocks.red_sandstone_splitter":"Red Sandstone Splitter", + "item.rocks.end_stone_splitter":"End Stone Splitter" +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/large_acacia_stick.json b/src/main/resources/assets/rocks/models/block/large_acacia_stick.json new file mode 100644 index 0000000..ed70830 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/large_acacia_stick.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/large_oak_stick", + "textures": { + "0": "block/acacia_log", + "particle": "block/acacia_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/large_birch_stick.json b/src/main/resources/assets/rocks/models/block/large_birch_stick.json new file mode 100644 index 0000000..af3fda1 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/large_birch_stick.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/large_oak_stick", + "textures": { + "0": "block/birch_log", + "particle": "block/birch_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/large_dark_oak_stick.json b/src/main/resources/assets/rocks/models/block/large_dark_oak_stick.json new file mode 100644 index 0000000..3bc4f85 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/large_dark_oak_stick.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/large_oak_stick", + "textures": { + "0": "block/dark_oak_log", + "particle": "block/dark_oak_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/large_end_stone_rock.json b/src/main/resources/assets/rocks/models/block/large_end_stone_rock.json new file mode 100644 index 0000000..262ab7f --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/large_end_stone_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/large_rock", + "textures": { + "0": "block/end_stone", + "particle": "block/end_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/large_jungle_stick.json b/src/main/resources/assets/rocks/models/block/large_jungle_stick.json new file mode 100644 index 0000000..2c41cdc --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/large_jungle_stick.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/large_oak_stick", + "textures": { + "0": "block/jungle_log", + "particle": "block/jungle_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/large_oak_stick.json b/src/main/resources/assets/rocks/models/block/large_oak_stick.json new file mode 100644 index 0000000..dc78891 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/large_oak_stick.json @@ -0,0 +1,86 @@ +{ + "credit": "made by Motschen", + "ambientocclusion": false, + "gui_light": "front", + "textures": { + "0": "block/oak_log", + "particle": "block/oak_log" + }, + "elements": [ + { + "from": [8, 0.01, 7], + "to": [20, 1.01, 9], + "rotation": {"angle": -45, "axis": "y", "origin": [12, 8, 0]}, + "faces": { + "north": {"uv": [0, 0, 12, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 2, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 12, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 2, 1], "texture": "#0"}, + "up": {"uv": [0, 4, 12, 6], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 0, 12, 2], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [10, 0, 3], + "to": [11, 1, 6], + "rotation": {"angle": -22.5, "axis": "y", "origin": [3, 8, 8]}, + "faces": { + "north": {"uv": [0, 4, 1, 5], "texture": "#0"}, + "east": {"uv": [0, 4, 3, 5], "texture": "#0"}, + "south": {"uv": [0, 4, 1, 5], "texture": "#0"}, + "west": {"uv": [0, 4, 3, 5], "texture": "#0"}, + "up": {"uv": [0, 1, 3, 2], "rotation": 90, "texture": "#0"}, + "down": {"uv": [0, 3, 3, 4], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [4, 0, 2], + "to": [5, 1, 5], + "rotation": {"angle": -22.5, "axis": "y", "origin": [-3, 8, 7]}, + "faces": { + "north": {"uv": [0, 4, 1, 5], "texture": "#0"}, + "east": {"uv": [0, 4, 3, 5], "texture": "#0"}, + "south": {"uv": [0, 4, 1, 5], "texture": "#0"}, + "west": {"uv": [0, 4, 3, 5], "texture": "#0"}, + "up": {"uv": [0, 1, 3, 2], "rotation": 90, "texture": "#0"}, + "down": {"uv": [0, 3, 3, 4], "rotation": 270, "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [90, 0, 0], + "translation": [0, -1, 3.5], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [90, 0, 0], + "translation": [0.5, -1, 3.5], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [67, 0, 18], + "translation": [3.5, 2, 0.75] + }, + "firstperson_lefthand": { + "rotation": [67, 0, 18], + "translation": [6, 2, 0.75] + }, + "ground": { + "translation": [0, 4, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [77, -90, -35], + "translation": [-1, -3.5, 0], + "scale": [1.25, 1.25, 1.25] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "rotation": [-90, 0, 0], + "translation": [0, 1.25, -7.75] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/large_red_sand_rock.json b/src/main/resources/assets/rocks/models/block/large_red_sand_rock.json new file mode 100644 index 0000000..118bcce --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/large_red_sand_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/large_rock", + "textures": { + "0": "block/red_sandstone", + "particle": "block/red_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/large_rock.json b/src/main/resources/assets/rocks/models/block/large_rock.json new file mode 100644 index 0000000..fca8cf5 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/large_rock.json @@ -0,0 +1,50 @@ +{ + "credit": "made by Motschen", + "parent": "block/block", + "ambientocclusion": false, + "textures": { + "0": "block/stone", + "particle": "block/stone" + }, + "elements": [ + { + "from": [1, 0, 5], + "to": [13, 3, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 10]}, + "faces": { + "north": {"uv": [0, 0, 12, 3], "texture": "#0"}, + "east": {"uv": [0, 0, 7, 3], "texture": "#0"}, + "south": {"uv": [0, 0, 12, 3], "texture": "#0"}, + "west": {"uv": [0, 0, 7, 3], "texture": "#0"}, + "up": {"uv": [0, 0, 12, 7], "texture": "#0"}, + "down": {"uv": [0, 0, 12, 7], "texture": "#0"} + } + }, + { + "from": [2, 3, 7], + "to": [9, 4, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 11, 14]}, + "faces": { + "north": {"uv": [0, 0, 7, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 4, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 7, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 4, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 7, 4], "texture": "#0"}, + "down": {"uv": [0, 0, 7, 4], "texture": "#0"} + } + }, + { + "from": [4, 0, 3], + "to": [12, 1, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [11, 8, 10]}, + "faces": { + "north": {"uv": [0, 0, 8, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 10, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 8, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 10, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 8, 10], "texture": "#0"}, + "down": {"uv": [0, 0, 8, 10], "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/large_sand_rock.json b/src/main/resources/assets/rocks/models/block/large_sand_rock.json new file mode 100644 index 0000000..07084c2 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/large_sand_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/large_rock", + "textures": { + "0": "block/sandstone", + "particle": "block/sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/large_spruce_stick.json b/src/main/resources/assets/rocks/models/block/large_spruce_stick.json new file mode 100644 index 0000000..d002cc8 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/large_spruce_stick.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/large_oak_stick", + "textures": { + "0": "block/spruce_log", + "particle": "block/spruce_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/medium_acacia_stick.json b/src/main/resources/assets/rocks/models/block/medium_acacia_stick.json new file mode 100644 index 0000000..6a588cc --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/medium_acacia_stick.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/medium_oak_stick", + "textures": { + "0": "block/acacia_log", + "particle": "block/acacia_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/medium_birch_stick.json b/src/main/resources/assets/rocks/models/block/medium_birch_stick.json new file mode 100644 index 0000000..f1ffda5 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/medium_birch_stick.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/medium_oak_stick", + "textures": { + "0": "block/birch_log", + "particle": "block/birch_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/medium_dark_oak_stick.json b/src/main/resources/assets/rocks/models/block/medium_dark_oak_stick.json new file mode 100644 index 0000000..70cbf4b --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/medium_dark_oak_stick.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/medium_oak_stick", + "textures": { + "0": "block/dark_oak_log", + "particle": "block/dark_oak_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/medium_end_stone_rock.json b/src/main/resources/assets/rocks/models/block/medium_end_stone_rock.json new file mode 100644 index 0000000..387e18d --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/medium_end_stone_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/medium_rock", + "textures": { + "0": "block/end_stone", + "particle": "block/end_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/medium_jungle_stick.json b/src/main/resources/assets/rocks/models/block/medium_jungle_stick.json new file mode 100644 index 0000000..7d5ebb3 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/medium_jungle_stick.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/medium_oak_stick", + "textures": { + "0": "block/jungle_log", + "particle": "block/jungle_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/medium_oak_stick.json b/src/main/resources/assets/rocks/models/block/medium_oak_stick.json new file mode 100644 index 0000000..b22e365 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/medium_oak_stick.json @@ -0,0 +1,36 @@ +{ + "credit": "made by Motschen", + "ambientocclusion": false, + "textures": { + "0": "block/oak_log", + "particle": "block/oak_log" + }, + "elements": [ + { + "from": [8, 0.01, 0], + "to": [9, 1.01, 9], + "rotation": {"angle": -22.5, "axis": "y", "origin": [1, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 9, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 9, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 9, 1], "rotation": 90, "texture": "#0"}, + "down": {"uv": [0, 0, 9, 1], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [10, 0, 7], + "to": [11, 1, 10], + "rotation": {"angle": 22.5, "axis": "y", "origin": [3, 8, 12]}, + "faces": { + "north": {"uv": [0, 4, 1, 5], "texture": "#0"}, + "east": {"uv": [0, 4, 3, 5], "texture": "#0"}, + "south": {"uv": [0, 4, 1, 5], "texture": "#0"}, + "west": {"uv": [0, 4, 3, 5], "texture": "#0"}, + "up": {"uv": [0, 1, 3, 2], "rotation": 90, "texture": "#0"}, + "down": {"uv": [0, 3, 3, 4], "rotation": 270, "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/medium_red_sand_rock.json b/src/main/resources/assets/rocks/models/block/medium_red_sand_rock.json new file mode 100644 index 0000000..47a5bd7 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/medium_red_sand_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/medium_rock", + "textures": { + "0": "block/red_sandstone", + "particle": "block/red_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/medium_rock.json b/src/main/resources/assets/rocks/models/block/medium_rock.json new file mode 100644 index 0000000..9430a8a --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/medium_rock.json @@ -0,0 +1,37 @@ +{ + "credit": "made by Motschen", + "parent": "block/block", + "ambientocclusion": false, + "textures": { + "0": "block/stone", + "particle": "block/stone" + }, + "elements": [ + { + "from": [1, 0, 5], + "to": [8, 2, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 10]}, + "faces": { + "north": {"uv": [0, 0, 7, 2], "texture": "#0"}, + "east": {"uv": [0, 0, 4, 2], "texture": "#0"}, + "south": {"uv": [0, 0, 7, 2], "texture": "#0"}, + "west": {"uv": [0, 0, 4, 2], "texture": "#0"}, + "up": {"uv": [0, 0, 7, 4], "texture": "#0"}, + "down": {"uv": [0, 0, 7, 4], "texture": "#0"} + } + }, + { + "from": [4, 0, 8.5], + "to": [7, 1, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 13]}, + "faces": { + "north": {"uv": [0, 0, 3, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 2, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 3, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 2, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 3, 2], "texture": "#0"}, + "down": {"uv": [0, 0, 3, 2], "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/medium_sand_rock.json b/src/main/resources/assets/rocks/models/block/medium_sand_rock.json new file mode 100644 index 0000000..9d081fb --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/medium_sand_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/medium_rock", + "textures": { + "0": "block/sandstone", + "particle": "block/sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/medium_spruce_stick.json b/src/main/resources/assets/rocks/models/block/medium_spruce_stick.json new file mode 100644 index 0000000..84eeca6 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/medium_spruce_stick.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/medium_oak_stick", + "textures": { + "0": "block/spruce_log", + "particle": "block/spruce_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/pinecone.json b/src/main/resources/assets/rocks/models/block/pinecone.json new file mode 100644 index 0000000..5239dc6 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/pinecone.json @@ -0,0 +1,854 @@ +{ + "credit": "made by Motschen", + "ambientocclusion": false, + "gui_light": "front", + "textures": { + "0": "block/spruce_log", + "1": "block/spruce_planks", + "particle": "block/spruce_log" + }, + "elements": [ + { + "from": [5, 0, 6], + "to": [8, 1, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [13, 8, 14]}, + "faces": { + "north": {"uv": [0, 0, 3, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 3, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 3, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 3, 1], "texture": "#0"}, + "down": {"uv": [0, 0, 3, 3], "texture": "#0"} + } + }, + { + "from": [5, 5, 6], + "to": [8, 6, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [13, 13, 14]}, + "faces": { + "north": {"uv": [0, 0, 3, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 3, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 3, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 3, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 3, 3], "texture": "#0"} + } + }, + { + "from": [5.5, 6, 6.5], + "to": [7.5, 7, 8.5], + "rotation": {"angle": 0, "axis": "y", "origin": [13, 14, 14]}, + "faces": { + "north": {"uv": [0, 0, 2, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 2, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 2, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 2, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 2, 2], "texture": "#0"} + } + }, + { + "from": [6, 7, 7], + "to": [7, 7.5, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [13, 15, 14]}, + "faces": { + "north": {"uv": [0, 0, 1, 0.5], "texture": "#0"}, + "east": {"uv": [0, 0, 1, 0.5], "texture": "#0"}, + "south": {"uv": [0, 0, 1, 0.5], "texture": "#0"}, + "west": {"uv": [0, 0, 1, 0.5], "texture": "#0"}, + "up": {"uv": [0, 0, 1, 1], "texture": "#0"} + } + }, + { + "from": [4.5, 1, 5.5], + "to": [8.5, 5, 9.5], + "rotation": {"angle": 0, "axis": "y", "origin": [13, 9, 14]}, + "faces": { + "north": {"uv": [0, 0, 4, 4], "texture": "#0"}, + "east": {"uv": [0, 0, 4, 4], "texture": "#0"}, + "south": {"uv": [0, 0, 4, 4], "texture": "#0"}, + "west": {"uv": [0, 0, 4, 4], "texture": "#0"}, + "up": {"uv": [0, 0, 4, 4], "texture": "#0"}, + "down": {"uv": [0, 0, 4, 4], "texture": "#0"} + } + }, + { + "from": [5, 4, 1.75], + "to": [5.5, 5, 1.95], + "rotation": {"angle": -22.5, "axis": "x", "origin": [14, 12, 9]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"} + } + }, + { + "from": [5, 6, 1.75], + "to": [5.5, 7, 1.95], + "rotation": {"angle": -22.5, "axis": "x", "origin": [14, 14, 9]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"} + } + }, + { + "from": [5, 5, 1.75], + "to": [5.5, 6, 1.95], + "rotation": {"angle": -22.5, "axis": "x", "origin": [14, 13, 9]}, + "faces": { + "north": {"uv": [7, 7, 8, 8], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"} + } + }, + { + "from": [5.25, 7, 2.5], + "to": [5.75, 8, 2.7], + "rotation": {"angle": -22.5, "axis": "x", "origin": [14, 15, 10]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"} + } + }, + { + "from": [6.25, 6, 1.75], + "to": [6.75, 7, 1.95], + "rotation": {"angle": -22.5, "axis": "x", "origin": [15, 14, 9]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"} + } + }, + { + "from": [6.25, 5, 1.75], + "to": [6.75, 6, 1.95], + "rotation": {"angle": -22.5, "axis": "x", "origin": [15, 13, 9]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"} + } + }, + { + "from": [6.25, 7, 2.5], + "to": [6.75, 8, 2.7], + "rotation": {"angle": -22.5, "axis": "x", "origin": [15, 15, 10]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"} + } + }, + { + "from": [7.5, 6, 1.75], + "to": [8, 7, 1.95], + "rotation": {"angle": -22.5, "axis": "x", "origin": [16, 14, 9]}, + "faces": { + "north": {"uv": [0, 3, 1, 4], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"} + } + }, + { + "from": [7.5, 5, 1.75], + "to": [8, 6, 1.95], + "rotation": {"angle": -22.5, "axis": "x", "origin": [16, 13, 9]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"} + } + }, + { + "from": [7.25, 7, 2.5], + "to": [7.75, 8, 2.7], + "rotation": {"angle": -22.5, "axis": "x", "origin": [16, 15, 10]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"} + } + }, + { + "from": [5.75, 8, 3], + "to": [6.25, 9, 3.2], + "rotation": {"angle": -22.5, "axis": "x", "origin": [15, 16, 10]}, + "faces": { + "north": {"uv": [2, 11, 3, 12], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"} + } + }, + { + "from": [6.75, 8, 3], + "to": [7.25, 9, 3.2], + "rotation": {"angle": -22.5, "axis": "x", "origin": [16, 16, 10]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"} + } + }, + { + "from": [6.25, 4, 1.75], + "to": [6.75, 5, 1.95], + "rotation": {"angle": -22.5, "axis": "x", "origin": [15, 12, 9]}, + "faces": { + "north": {"uv": [5, 10, 6, 11], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"} + } + }, + { + "from": [7.5, 4, 1.75], + "to": [8, 5, 1.95], + "rotation": {"angle": -22.5, "axis": "x", "origin": [16, 12, 9]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "texture": "#1"} + } + }, + { + "from": [5, 4, 13.05], + "to": [5.5, 5, 13.25], + "rotation": {"angle": 22.5, "axis": "x", "origin": [-3, 12, 6]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5, 5, 13.05], + "to": [5.5, 6, 13.25], + "rotation": {"angle": 22.5, "axis": "x", "origin": [-3, 13, 6]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [0, 11, 1, 12], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5, 6, 13.05], + "to": [5.5, 7, 13.25], + "rotation": {"angle": 22.5, "axis": "x", "origin": [-3, 14, 6]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5.25, 7, 12.35], + "to": [5.75, 8, 12.55], + "rotation": {"angle": 22.5, "axis": "x", "origin": [-3, 15, 5]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5.75, 8, 11.8], + "to": [6.25, 9, 12], + "rotation": {"angle": 22.5, "axis": "x", "origin": [-2, 16, 5]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [6.75, 8, 11.8], + "to": [7.25, 9, 12], + "rotation": {"angle": 22.5, "axis": "x", "origin": [-1, 16, 5]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [4, 11, 5, 12], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [6.25, 5, 13.05], + "to": [6.75, 6, 13.25], + "rotation": {"angle": 22.5, "axis": "x", "origin": [-2, 13, 6]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [6.25, 6, 13.05], + "to": [6.75, 7, 13.25], + "rotation": {"angle": 22.5, "axis": "x", "origin": [-2, 14, 6]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [6.25, 7, 12.35], + "to": [6.75, 8, 12.55], + "rotation": {"angle": 22.5, "axis": "x", "origin": [-2, 15, 5]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [7.5, 5, 13.05], + "to": [8, 6, 13.25], + "rotation": {"angle": 22.5, "axis": "x", "origin": [-1, 13, 6]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [7.5, 6, 13.05], + "to": [8, 7, 13.25], + "rotation": {"angle": 22.5, "axis": "x", "origin": [-1, 14, 6]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [8, 11, 9, 12], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [7.25, 7, 12.35], + "to": [7.75, 8, 12.55], + "rotation": {"angle": 22.5, "axis": "x", "origin": [-1, 15, 5]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [6.25, 4, 13.05], + "to": [6.75, 5, 13.25], + "rotation": {"angle": 22.5, "axis": "x", "origin": [-2, 12, 6]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [2, 7, 3, 8], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [7.5, 4, 13.05], + "to": [8, 5, 13.25], + "rotation": {"angle": 22.5, "axis": "x", "origin": [-1, 12, 6]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [0.75, 4, 6], + "to": [0.95, 5, 6.5], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 12, -2]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"} + } + }, + { + "from": [0.75, 5, 6], + "to": [0.95, 6, 6.5], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 13, -2]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [6, 7, 7, 8], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"} + } + }, + { + "from": [0.75, 6, 6], + "to": [0.95, 7, 6.5], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 14, -2]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"} + } + }, + { + "from": [1.5, 7, 6.25], + "to": [1.7, 8, 6.75], + "rotation": {"angle": 22.5, "axis": "z", "origin": [9, 15, -2]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"} + } + }, + { + "from": [2, 8, 6.75], + "to": [2.2, 9, 7.25], + "rotation": {"angle": 22.5, "axis": "z", "origin": [9, 16, -1]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [6, 15, 7, 16], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"} + } + }, + { + "from": [2, 8, 7.75], + "to": [2.2, 9, 8.25], + "rotation": {"angle": 22.5, "axis": "z", "origin": [9, 16, 0]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"} + } + }, + { + "from": [0.75, 4, 7.25], + "to": [0.95, 5, 7.75], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 12, -1]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"} + } + }, + { + "from": [0.75, 5, 7.25], + "to": [0.95, 6, 7.75], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 13, -1]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"} + } + }, + { + "from": [0.75, 6, 7.25], + "to": [0.95, 7, 7.75], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 14, -1]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [10, 5, 11, 6], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"} + } + }, + { + "from": [1.5, 7, 7.25], + "to": [1.7, 8, 7.75], + "rotation": {"angle": 22.5, "axis": "z", "origin": [9, 15, -1]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"} + } + }, + { + "from": [0.75, 4, 8.5], + "to": [0.95, 5, 9], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 12, 0]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [11, 7, 12, 8], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"} + } + }, + { + "from": [0.75, 5, 8.5], + "to": [0.95, 6, 9], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 13, 0]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"} + } + }, + { + "from": [0.75, 6, 8.5], + "to": [0.95, 7, 9], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 14, 0]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [14, 7, 15, 8], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"} + } + }, + { + "from": [1.5, 7, 8.25], + "to": [1.7, 8, 8.75], + "rotation": {"angle": 22.5, "axis": "z", "origin": [9, 15, 0]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"} + } + }, + { + "from": [12.05, 4, 6], + "to": [12.25, 5, 6.5], + "rotation": {"angle": -22.5, "axis": "z", "origin": [5, 12, 15]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"} + } + }, + { + "from": [12.05, 5, 6], + "to": [12.25, 6, 6.5], + "rotation": {"angle": -22.5, "axis": "z", "origin": [5, 13, 15]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"} + } + }, + { + "from": [12.05, 6, 6], + "to": [12.25, 7, 6.5], + "rotation": {"angle": -22.5, "axis": "z", "origin": [5, 14, 15]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [8, 11, 9, 12], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"} + } + }, + { + "from": [11.3, 7, 6.25], + "to": [11.5, 8, 6.75], + "rotation": {"angle": -22.5, "axis": "z", "origin": [4, 15, 15]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"} + } + }, + { + "from": [12.05, 4, 7.25], + "to": [12.25, 5, 7.75], + "rotation": {"angle": -22.5, "axis": "z", "origin": [5, 12, 16]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [4, 1, 5, 2], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"} + } + }, + { + "from": [12.05, 5, 7.25], + "to": [12.25, 6, 7.75], + "rotation": {"angle": -22.5, "axis": "z", "origin": [5, 13, 16]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"} + } + }, + { + "from": [12.05, 6, 7.25], + "to": [12.25, 7, 7.75], + "rotation": {"angle": -22.5, "axis": "z", "origin": [5, 14, 16]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"} + } + }, + { + "from": [10.8, 8, 6.75], + "to": [11, 9, 7.25], + "rotation": {"angle": -22.5, "axis": "z", "origin": [4, 16, 16]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"} + } + }, + { + "from": [10.8, 8, 7.75], + "to": [11, 9, 8.25], + "rotation": {"angle": -22.5, "axis": "z", "origin": [4, 16, 17]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [8, 7, 9, 8], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"} + } + }, + { + "from": [11.3, 7, 7.25], + "to": [11.5, 8, 7.75], + "rotation": {"angle": -22.5, "axis": "z", "origin": [4, 15, 16]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [9, 3, 10, 4], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"} + } + }, + { + "from": [12.05, 4, 8.5], + "to": [12.25, 5, 9], + "rotation": {"angle": -22.5, "axis": "z", "origin": [5, 12, 17]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"} + } + }, + { + "from": [12.05, 5, 8.5], + "to": [12.25, 6, 9], + "rotation": {"angle": -22.5, "axis": "z", "origin": [5, 13, 17]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [5, 11, 6, 12], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"} + } + }, + { + "from": [12.05, 6, 8.5], + "to": [12.25, 7, 9], + "rotation": {"angle": -22.5, "axis": "z", "origin": [5, 14, 17]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"} + } + }, + { + "from": [11.3, 7, 8.25], + "to": [11.5, 8, 8.75], + "rotation": {"angle": -22.5, "axis": "z", "origin": [4, 15, 17]}, + "faces": { + "north": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 0.2, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 0.5, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 0.5, 0.2], "rotation": 90, "texture": "#1"}, + "down": {"uv": [0, 0, 0.5, 0.2], "rotation": 270, "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "translation": [1, 0.5, -1], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "translation": [-0.5, 0.5, -1], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "translation": [3.25, 6.5, 0] + }, + "firstperson_lefthand": { + "translation": [0.5, 6.75, 0] + }, + "ground": { + "translation": [1.5, 4.5, 0.25] + }, + "gui": { + "rotation": [10, 44.5, 0], + "translation": [2, 6.25, 0], + "scale": [1.5, 1.5, 1.5] + }, + "head": { + "translation": [4.75, 14, 1.75], + "scale": [2.97, 2.97, 2.97] + }, + "fixed": { + "translation": [1.75, 3.5, 0] + } + }, + "groups": [0, 1, 2, 3, 4, + { + "name": "group", + "origin": [15, 13, 9], + "children": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18] + }, + { + "name": "group", + "origin": [15, 13, 9], + "children": [19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32] + }, + { + "name": "group", + "origin": [15, 13, 9], + "children": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46] + }, + { + "name": "group", + "origin": [15, 13, 9], + "children": [47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/seashell_pink.json b/src/main/resources/assets/rocks/models/block/seashell_pink.json new file mode 100644 index 0000000..62d4cc2 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/seashell_pink.json @@ -0,0 +1,84 @@ +{ + "credit": "made by Motschen", + "gui_light": "front", + "textures": { + "0": "rocks:block/seashell", + "particle": "rocks:block/seashell" + }, + "elements": [ + { + "from": [7, 0.01, 7], + "to": [12, 0.99, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 15]}, + "faces": { + "north": {"uv": [1, 11, 4, 12], "texture": "#0"}, + "east": {"uv": [1, 6, 2, 12], "rotation": 90, "texture": "#0"}, + "south": {"uv": [2, 6, 7, 7], "texture": "#0"}, + "west": {"uv": [5, 6, 6, 12], "rotation": 90, "texture": "#0"}, + "up": {"uv": [2, 6, 7, 12], "rotation": 180, "texture": "#0"}, + "down": {"uv": [2, 6, 7, 12], "texture": "#0"} + } + }, + { + "from": [14, 0, 11], + "to": [16, 1, 15], + "rotation": {"angle": 22.5, "axis": "y", "origin": [7, 8, 19]}, + "faces": { + "north": {"uv": [1, 6, 3, 7], "texture": "#0"}, + "east": {"uv": [1, 6, 2, 10], "rotation": 90, "texture": "#0"}, + "south": {"uv": [0, 6, 2, 7], "texture": "#0"}, + "up": {"uv": [1, 6, 3, 10], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 6, 2, 10], "texture": "#0"} + } + }, + { + "from": [4, 0, 6], + "to": [6, 1, 10], + "rotation": {"angle": -22.5, "axis": "y", "origin": [0, 8, 14]}, + "faces": { + "north": {"uv": [0, 6, 2, 7], "texture": "#0"}, + "south": {"uv": [1, 6, 3, 7], "texture": "#0"}, + "west": {"uv": [7, 6, 8, 10], "rotation": 90, "texture": "#0"}, + "up": {"uv": [6, 6, 8, 10], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 6, 2, 10], "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [-103.5, 0, 0], + "translation": [-1.25, -4.25, -3.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [-103.5, 0, 0], + "translation": [0.25, -4.25, -3.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-89, 0, 0], + "translation": [0, 1.25, -6.75] + }, + "firstperson_lefthand": { + "rotation": [-89, 0, 0], + "translation": [3, 1.25, -6.75] + }, + "ground": { + "rotation": [-92, 0, 0], + "translation": [-1.25, 0, -7.5] + }, + "gui": { + "rotation": [-72, 0, 160], + "translation": [-1.5, -6.25, 0], + "scale": [1.5, 1.5, 1.5] + }, + "head": { + "translation": [-1.5, 14, -2.75] + }, + "fixed": { + "rotation": [-90, 0, 0], + "translation": [-2.75, -3.75, -14], + "scale": [1.75, 1.75, 1.75] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/seashell_white.json b/src/main/resources/assets/rocks/models/block/seashell_white.json new file mode 100644 index 0000000..2dd59b6 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/seashell_white.json @@ -0,0 +1,47 @@ +{ + "credit": "made by Motschen", + "parent": "block/block", + "textures": { + "0": "rocks:block/seashell", + "particle": "rocks:block/seashell" + }, + "elements": [ + { + "from": [7, 0.01, 5], + "to": [13, 0.99, 10], + "rotation": {"angle": 22.5, "axis": "y", "origin": [15, 8, 13]}, + "faces": { + "north": {"uv": [9, 0, 10, 6], "rotation": 90, "texture": "#0"}, + "east": {"uv": [10, 0, 15, 1], "texture": "#0"}, + "south": {"uv": [13, 0, 14, 6], "rotation": 90, "texture": "#0"}, + "west": {"uv": [10, 5, 15, 5.98], "texture": "#0"}, + "up": {"uv": [10, 0, 15, 6], "rotation": 90, "texture": "#0"}, + "down": {"uv": [10, 0, 15, 6], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [9, 0, 0], + "to": [13, 1, 2], + "rotation": {"angle": 45, "axis": "y", "origin": [17, 8, 7.7]}, + "faces": { + "north": {"uv": [9, 0, 10, 4], "rotation": 90, "texture": "#0"}, + "east": {"uv": [8, 0, 10, 1], "texture": "#0"}, + "west": {"uv": [9, 0, 11, 1], "texture": "#0"}, + "up": {"uv": [9, 0, 11, 4], "rotation": 90, "texture": "#0"}, + "down": {"uv": [14, 0, 16, 4], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [8, 0, 11], + "to": [12, 1, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 8, 17]}, + "faces": { + "east": {"uv": [8, 0, 10, 1], "texture": "#0"}, + "south": {"uv": [15, 0, 16, 4], "rotation": 90, "texture": "#0"}, + "west": {"uv": [8, 0, 10, 1], "texture": "#0"}, + "up": {"uv": [14, 0, 16, 4], "rotation": 90, "texture": "#0"}, + "down": {"uv": [8, 0, 10, 4], "rotation": 90, "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/seashell_yellow.json b/src/main/resources/assets/rocks/models/block/seashell_yellow.json new file mode 100644 index 0000000..9417639 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/seashell_yellow.json @@ -0,0 +1,45 @@ +{ + "credit": "made by Motschen", + "parent": "block/block", + "textures": { + "0": "rocks:block/seashell", + "particle": "rocks:block/seashell" + }, + "elements": [ + { + "from": [4, 0.01, 7], + "to": [8, 0.99, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [11, 8, 15]}, + "faces": { + "north": {"uv": [1, 0, 2, 4], "rotation": 90, "texture": "#0"}, + "east": {"uv": [1, 0, 4, 1], "texture": "#0"}, + "south": {"uv": [1, 0, 2, 4], "rotation": 90, "texture": "#0"}, + "west": {"uv": [1, 4, 4, 5], "texture": "#0"}, + "up": {"uv": [3, 1, 6, 5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [5, 0, 8, 4], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [7, 0, 4], + "to": [10, 1, 5], + "rotation": {"angle": 22.5, "axis": "y", "origin": [14, 8, 12]}, + "faces": { + "north": {"uv": [0, 0, 1, 3], "rotation": 90, "texture": "#0"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 1, 3], "rotation": 90, "texture": "#0"}, + "down": {"uv": [0, 1, 1, 4], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [2, 0, 11], + "to": [5, 1, 12], + "rotation": {"angle": -22.5, "axis": "y", "origin": [9, 8, 17]}, + "faces": { + "east": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 1, 3], "rotation": 90, "texture": "#0"}, + "up": {"uv": [0, 0, 1, 3], "rotation": 90, "texture": "#0"}, + "down": {"uv": [6, 1, 7, 4], "rotation": 90, "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/small_acacia_stick.json b/src/main/resources/assets/rocks/models/block/small_acacia_stick.json new file mode 100644 index 0000000..756bb7a --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/small_acacia_stick.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/small_oak_stick", + "textures": { + "0": "block/acacia_log", + "particle": "block/acacia_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/small_birch_stick.json b/src/main/resources/assets/rocks/models/block/small_birch_stick.json new file mode 100644 index 0000000..f9b01bf --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/small_birch_stick.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/small_oak_stick", + "textures": { + "0": "block/birch_log", + "particle": "block/birch_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/small_dark_oak_stick.json b/src/main/resources/assets/rocks/models/block/small_dark_oak_stick.json new file mode 100644 index 0000000..9ba2ebc --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/small_dark_oak_stick.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/small_oak_stick", + "textures": { + "0": "block/dark_oak_log", + "particle": "block/dark_oak_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/small_end_stone_rock.json b/src/main/resources/assets/rocks/models/block/small_end_stone_rock.json new file mode 100644 index 0000000..e380fcb --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/small_end_stone_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/small_rock", + "textures": { + "0": "block/end_stone", + "particle": "block/end_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/small_jungle_stick.json b/src/main/resources/assets/rocks/models/block/small_jungle_stick.json new file mode 100644 index 0000000..3594b65 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/small_jungle_stick.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/small_oak_stick", + "textures": { + "0": "block/jungle_log", + "particle": "block/jungle_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/small_oak_stick.json b/src/main/resources/assets/rocks/models/block/small_oak_stick.json new file mode 100644 index 0000000..bb217ba --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/small_oak_stick.json @@ -0,0 +1,23 @@ +{ + "credit": "made by Motschen", + "ambientocclusion": false, + "textures": { + "0": "block/oak_log", + "particle": "block/oak_log" + }, + "elements": [ + { + "from": [0, 0, 8], + "to": [6, 1, 9], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 16]}, + "faces": { + "north": {"uv": [0, 0, 6, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 6, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 6, 1], "texture": "#0"}, + "down": {"uv": [0, 0, 6, 1], "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/small_red_sand_rock.json b/src/main/resources/assets/rocks/models/block/small_red_sand_rock.json new file mode 100644 index 0000000..975662d --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/small_red_sand_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/small_rock", + "textures": { + "0": "block/red_sandstone", + "particle": "block/red_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/small_rock.json b/src/main/resources/assets/rocks/models/block/small_rock.json new file mode 100644 index 0000000..1a94c5a --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/small_rock.json @@ -0,0 +1,37 @@ +{ + "credit": "made by Motschen", + "parent": "block/block", + "ambientocclusion": false, + "textures": { + "0": "block/stone", + "particle": "block/stone" + }, + "elements": [ + { + "from": [6, 0, 8], + "to": [13, 1, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [13, 8, 13]}, + "faces": { + "north": {"uv": [0, 0, 7, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 4, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 7, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 4, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 7, 4], "texture": "#0"}, + "down": {"uv": [0, 0, 7, 4], "texture": "#0"} + } + }, + { + "from": [7, 1, 8.5], + "to": [10, 2, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [13, 9, 13]}, + "faces": { + "north": {"uv": [0, 0, 3, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 2, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 3, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 2, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 3, 2], "texture": "#0"}, + "down": {"uv": [0, 0, 3, 2], "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/small_sand_rock.json b/src/main/resources/assets/rocks/models/block/small_sand_rock.json new file mode 100644 index 0000000..f4b9dfb --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/small_sand_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/small_rock", + "textures": { + "0": "block/sandstone", + "particle": "block/sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/small_spruce_stick.json b/src/main/resources/assets/rocks/models/block/small_spruce_stick.json new file mode 100644 index 0000000..ca2e00b --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/small_spruce_stick.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/small_oak_stick", + "textures": { + "0": "block/spruce_log", + "particle": "block/spruce_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/tiny_end_stone_rock.json b/src/main/resources/assets/rocks/models/block/tiny_end_stone_rock.json new file mode 100644 index 0000000..9e846e0 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/tiny_end_stone_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/tiny_rock", + "textures": { + "0": "block/end_stone", + "particle": "block/end_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/tiny_red_sand_rock.json b/src/main/resources/assets/rocks/models/block/tiny_red_sand_rock.json new file mode 100644 index 0000000..fbef2bc --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/tiny_red_sand_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/tiny_rock", + "textures": { + "0": "block/red_sandstone", + "particle": "block/red_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/tiny_rock.json b/src/main/resources/assets/rocks/models/block/tiny_rock.json new file mode 100644 index 0000000..c7fd2ca --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/tiny_rock.json @@ -0,0 +1,24 @@ +{ + "credit": "made by Motschen", + "parent": "block/block", + "ambientocclusion": false, + "textures": { + "0": "block/stone", + "particle": "block/stone" + }, + "elements": [ + { + "from": [4, 0, 6], + "to": [9, 1, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 8, 14]}, + "faces": { + "north": {"uv": [0, 0, 5, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 3, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 5, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 3, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 5, 3], "texture": "#0"}, + "down": {"uv": [0, 0, 5, 3], "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/tiny_sand_rock.json b/src/main/resources/assets/rocks/models/block/tiny_sand_rock.json new file mode 100644 index 0000000..28f0dea --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/tiny_sand_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/tiny_rock", + "textures": { + "0": "block/sandstone", + "particle": "block/sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/acacia_stick.json b/src/main/resources/assets/rocks/models/item/acacia_stick.json new file mode 100644 index 0000000..05b57a2 --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/acacia_stick.json @@ -0,0 +1,3 @@ +{ + "parent": "rocks:block/large_acacia_stick" +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/birch_stick.json b/src/main/resources/assets/rocks/models/item/birch_stick.json new file mode 100644 index 0000000..ac0a5b2 --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/birch_stick.json @@ -0,0 +1,3 @@ +{ + "parent": "rocks:block/large_birch_stick" +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/cobblestone_splitter.json b/src/main/resources/assets/rocks/models/item/cobblestone_splitter.json new file mode 100644 index 0000000..967c467 --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/cobblestone_splitter.json @@ -0,0 +1,89 @@ +{ + "credit": "made by Motschen", + "textures": { + "0": "block/cobblestone", + "particle": "block/cobblestone" + }, + "gui_light": "front", + "elements": [ + { + "from": [5, 3, 7], + "to": [10, 4, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 11, 15]}, + "faces": { + "north": {"uv": [5, 9, 10, 10], "texture": "#0"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "south": {"uv": [5, 9, 10, 10], "texture": "#0"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 5, 1], "texture": "#0"}, + "down": {"uv": [0, 0, 5, 1], "texture": "#0"} + } + }, + { + "from": [5, 4, 7], + "to": [11, 6, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 12, 15]}, + "faces": { + "north": {"uv": [4, 7, 10, 9], "texture": "#0"}, + "east": {"uv": [3, 7, 4, 9], "texture": "#0"}, + "south": {"uv": [4, 7, 10, 9], "rotation": 180, "texture": "#0"}, + "west": {"uv": [0, 0, 1, 2], "texture": "#0"}, + "up": {"uv": [0, 0, 6, 1], "texture": "#0"}, + "down": {"uv": [0, 0, 6, 1], "texture": "#0"} + } + }, + { + "from": [5, 6, 7], + "to": [10, 8, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 14, 15]}, + "faces": { + "north": {"uv": [7, 5, 12, 7], "texture": "#0"}, + "east": {"uv": [0, 0, 1, 2], "texture": "#0"}, + "south": {"uv": [7, 5, 12, 7], "texture": "#0"}, + "west": {"uv": [0, 0, 1, 2], "texture": "#0"}, + "up": {"uv": [0, 0, 5, 1], "texture": "#0"}, + "down": {"uv": [0, 0, 5, 1], "texture": "#0"} + } + }, + { + "from": [6, 8, 7], + "to": [10, 9, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 16, 15]}, + "faces": { + "north": {"uv": [7, 4, 11, 5], "texture": "#0"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "south": {"uv": [7, 4, 11, 5], "texture": "#0"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 4, 1], "texture": "#0"}, + "down": {"uv": [0, 0, 4, 1], "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-3, -30, 0], + "translation": [2.25, 3.75, 0] + }, + "firstperson_lefthand": { + "rotation": [-3, -30, 0], + "translation": [2.25, 3.75, 0] + }, + "ground": { + "translation": [0, 2.5, 0] + }, + "gui": { + "translation": [0, 3, 0], + "scale": [1.5, 1.5, 1.5] + }, + "head": { + "rotation": [90, 0, 0], + "translation": [0, 6.25, 1.75] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/dark_oak_stick.json b/src/main/resources/assets/rocks/models/item/dark_oak_stick.json new file mode 100644 index 0000000..0c012e4 --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/dark_oak_stick.json @@ -0,0 +1,3 @@ +{ + "parent": "rocks:block/large_dark_oak_stick" +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/end_stone_rock.json b/src/main/resources/assets/rocks/models/item/end_stone_rock.json new file mode 100644 index 0000000..5026350 --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/end_stone_rock.json @@ -0,0 +1,3 @@ +{ + "parent": "rocks:block/large_end_stone_rock" +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/end_stone_splitter.json b/src/main/resources/assets/rocks/models/item/end_stone_splitter.json new file mode 100644 index 0000000..ea23602 --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/end_stone_splitter.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:item/cobblestone_splitter", + "textures": { + "0": "block/end_stone", + "particle": "block/end_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/jungle_stick.json b/src/main/resources/assets/rocks/models/item/jungle_stick.json new file mode 100644 index 0000000..3e6bd7a --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/jungle_stick.json @@ -0,0 +1,3 @@ +{ + "parent": "rocks:block/large_jungle_stick" +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/oak_stick.json b/src/main/resources/assets/rocks/models/item/oak_stick.json new file mode 100644 index 0000000..db093b4 --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/oak_stick.json @@ -0,0 +1,3 @@ +{ + "parent": "rocks:block/large_oak_stick" +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/pinecone.json b/src/main/resources/assets/rocks/models/item/pinecone.json new file mode 100644 index 0000000..7fd670e --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/pinecone.json @@ -0,0 +1,3 @@ +{ + "parent": "rocks:block/pinecone" +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/red_sand_rock.json b/src/main/resources/assets/rocks/models/item/red_sand_rock.json new file mode 100644 index 0000000..4b20384 --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/red_sand_rock.json @@ -0,0 +1,3 @@ +{ + "parent": "rocks:block/large_red_sand_rock" +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/red_sandstone_splitter.json b/src/main/resources/assets/rocks/models/item/red_sandstone_splitter.json new file mode 100644 index 0000000..c6a36af --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/red_sandstone_splitter.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:item/cobblestone_splitter", + "textures": { + "0": "block/red_sandstone", + "particle": "block/red_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/rock.json b/src/main/resources/assets/rocks/models/item/rock.json new file mode 100644 index 0000000..be3bd58 --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/rock.json @@ -0,0 +1,3 @@ +{ + "parent": "rocks:block/large_rock" +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/sand_rock.json b/src/main/resources/assets/rocks/models/item/sand_rock.json new file mode 100644 index 0000000..58daf35 --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/sand_rock.json @@ -0,0 +1,3 @@ +{ + "parent": "rocks:block/large_sand_rock" +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/sandstone_splitter.json b/src/main/resources/assets/rocks/models/item/sandstone_splitter.json new file mode 100644 index 0000000..140f930 --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/sandstone_splitter.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:item/cobblestone_splitter", + "textures": { + "0": "block/sandstone", + "particle": "block/sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/seashell.json b/src/main/resources/assets/rocks/models/item/seashell.json new file mode 100644 index 0000000..09dec50 --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/seashell.json @@ -0,0 +1,3 @@ +{ + "parent": "rocks:block/seashell_pink" +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/spruce_stick.json b/src/main/resources/assets/rocks/models/item/spruce_stick.json new file mode 100644 index 0000000..f378367 --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/spruce_stick.json @@ -0,0 +1,3 @@ +{ + "parent": "rocks:block/large_spruce_stick" +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/textures/block/seashell.png b/src/main/resources/assets/rocks/textures/block/seashell.png new file mode 100644 index 0000000..dc0f4c5 Binary files /dev/null and b/src/main/resources/assets/rocks/textures/block/seashell.png differ diff --git a/src/main/resources/data/rocks/loot_tables/blocks/acacia_stick.json b/src/main/resources/data/rocks/loot_tables/blocks/acacia_stick.json new file mode 100644 index 0000000..bbd852e --- /dev/null +++ b/src/main/resources/data/rocks/loot_tables/blocks/acacia_stick.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/rocks/loot_tables/blocks/birch_stick.json b/src/main/resources/data/rocks/loot_tables/blocks/birch_stick.json new file mode 100644 index 0000000..bbd852e --- /dev/null +++ b/src/main/resources/data/rocks/loot_tables/blocks/birch_stick.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/rocks/loot_tables/blocks/dark_oak_stick.json b/src/main/resources/data/rocks/loot_tables/blocks/dark_oak_stick.json new file mode 100644 index 0000000..bbd852e --- /dev/null +++ b/src/main/resources/data/rocks/loot_tables/blocks/dark_oak_stick.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/rocks/loot_tables/blocks/end_stone_rock.json b/src/main/resources/data/rocks/loot_tables/blocks/end_stone_rock.json new file mode 100644 index 0000000..d243b8a --- /dev/null +++ b/src/main/resources/data/rocks/loot_tables/blocks/end_stone_rock.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "rocks:end_stone_splitter" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/rocks/loot_tables/blocks/jungle_stick.json b/src/main/resources/data/rocks/loot_tables/blocks/jungle_stick.json new file mode 100644 index 0000000..bbd852e --- /dev/null +++ b/src/main/resources/data/rocks/loot_tables/blocks/jungle_stick.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/rocks/loot_tables/blocks/oak_stick.json b/src/main/resources/data/rocks/loot_tables/blocks/oak_stick.json new file mode 100644 index 0000000..bbd852e --- /dev/null +++ b/src/main/resources/data/rocks/loot_tables/blocks/oak_stick.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/rocks/loot_tables/blocks/pinecone.json b/src/main/resources/data/rocks/loot_tables/blocks/pinecone.json new file mode 100644 index 0000000..08aab54 --- /dev/null +++ b/src/main/resources/data/rocks/loot_tables/blocks/pinecone.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:spruce_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/rocks/loot_tables/blocks/red_sand_rock.json b/src/main/resources/data/rocks/loot_tables/blocks/red_sand_rock.json new file mode 100644 index 0000000..dbc9459 --- /dev/null +++ b/src/main/resources/data/rocks/loot_tables/blocks/red_sand_rock.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "rocks:red_sandstone_splitter" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/rocks/loot_tables/blocks/rock.json b/src/main/resources/data/rocks/loot_tables/blocks/rock.json new file mode 100644 index 0000000..aab7714 --- /dev/null +++ b/src/main/resources/data/rocks/loot_tables/blocks/rock.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "rocks:cobblestone_splitter" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/rocks/loot_tables/blocks/sand_rock.json b/src/main/resources/data/rocks/loot_tables/blocks/sand_rock.json new file mode 100644 index 0000000..0d0a4fd --- /dev/null +++ b/src/main/resources/data/rocks/loot_tables/blocks/sand_rock.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "rocks:sandstone_splitter" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/rocks/loot_tables/blocks/seashell.json b/src/main/resources/data/rocks/loot_tables/blocks/seashell.json new file mode 100644 index 0000000..fdbc14e --- /dev/null +++ b/src/main/resources/data/rocks/loot_tables/blocks/seashell.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "rocks:seashell" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/rocks/loot_tables/blocks/spruce_stick.json b/src/main/resources/data/rocks/loot_tables/blocks/spruce_stick.json new file mode 100644 index 0000000..bbd852e --- /dev/null +++ b/src/main/resources/data/rocks/loot_tables/blocks/spruce_stick.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/rocks/recipes/cobblestone_from_splitter.json b/src/main/resources/data/rocks/recipes/cobblestone_from_splitter.json new file mode 100644 index 0000000..33489fd --- /dev/null +++ b/src/main/resources/data/rocks/recipes/cobblestone_from_splitter.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "rocks:cobblestone_splitter" + }, + { + "item": "rocks:cobblestone_splitter" + }, + { + "item": "rocks:cobblestone_splitter" + }, + { + "item": "rocks:cobblestone_splitter" + } + ], + "result": { + "item": "minecraft:cobblestone", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/rocks/recipes/end_stone_from_splitter.json b/src/main/resources/data/rocks/recipes/end_stone_from_splitter.json new file mode 100644 index 0000000..07bb6fc --- /dev/null +++ b/src/main/resources/data/rocks/recipes/end_stone_from_splitter.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "rocks:end_stone_splitter" + }, + { + "item": "rocks:end_stone_splitter" + }, + { + "item": "rocks:end_stone_splitter" + }, + { + "item": "rocks:end_stone_splitter" + } + ], + "result": { + "item": "minecraft:end_stone", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/rocks/recipes/red_sandstone_from_splitter.json b/src/main/resources/data/rocks/recipes/red_sandstone_from_splitter.json new file mode 100644 index 0000000..c7a475c --- /dev/null +++ b/src/main/resources/data/rocks/recipes/red_sandstone_from_splitter.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "rocks:red_sandstone_splitter" + }, + { + "item": "rocks:red_sandstone_splitter" + }, + { + "item": "rocks:red_sandstone_splitter" + }, + { + "item": "rocks:red_sandstone_splitter" + } + ], + "result": { + "item": "minecraft:red_sandstone", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/rocks/recipes/sandstone_from_splitter.json b/src/main/resources/data/rocks/recipes/sandstone_from_splitter.json new file mode 100644 index 0000000..177d655 --- /dev/null +++ b/src/main/resources/data/rocks/recipes/sandstone_from_splitter.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "rocks:sandstone_splitter" + }, + { + "item": "rocks:sandstone_splitter" + }, + { + "item": "rocks:sandstone_splitter" + }, + { + "item": "rocks:sandstone_splitter" + } + ], + "result": { + "item": "minecraft:sandstone", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json new file mode 100644 index 0000000..2945a1c --- /dev/null +++ b/src/main/resources/fabric.mod.json @@ -0,0 +1,40 @@ +{ + "schemaVersion": 1, + "id": "rocks", + "version": "${version}", + + "name": "This Rocks!", + "description": "Adds little rocks, sticks, pinecones and seashells to your world to make it feel more natural.", + "authors": [ + "Motschen", + "TeamMidnightDust" + ], + "contact": { + "homepage": "https://www.midnightdust.eu/", + "issues": "https://github.com/TeamMidnightDust/ThisRocks/issues" + }, + + "license": "MIT", + "icon": "assets/rocks/icon.png", + + "environment": "*", + "entrypoints": { + "main": [ + "eu.midnightdust.motschen.rocks.RocksMain" + ] + }, + + "mixins": [ + "rocks.mixins.json" + ], + + "depends": { + "fabricloader": ">=0.7.2", + "fabric": "*" + }, + "suggests": { + "dishes": "*", + "decorative": "*", + "wildworld": "*" + } +} diff --git a/src/main/resources/rocks.mixins.json b/src/main/resources/rocks.mixins.json new file mode 100644 index 0000000..7e4b68b --- /dev/null +++ b/src/main/resources/rocks.mixins.json @@ -0,0 +1,11 @@ +{ + "required": true, + "package": "eu.midnightdust.motschen.rocks.mixin", + "compatibilityLevel": "JAVA_8", + "mixins": [ + "GenerationSettingsAccessorMixin" + ], + "injectors": { + "defaultRequire": 1 + } +} \ No newline at end of file